编写代码
组织 Gem
编写代码 是 CoddyKit 上的免费 Ruby Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ruby Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ruby Academy 课程共包含 4 节课。
组织 Ruby 包中的代码
优秀的 Ruby 包代码易于阅读、易于加载,并使用命名空间,从而不会与其他库发生冲突。关键工具是一个包裹全部内容的顶层模块。
- 每个 Ruby 包使用一个命名空间模块。
- 每个类使用一个文件,并与命名空间保持对应。
- 保持小巧的公开接口。
命名空间模块
将所有类包裹在一个以 Ruby 包命名的模块中。这样可以防止您的 Client 与其他人的 Client 发生冲突。
module Greeter
class Hello
def message
"Hi there"
end
end
end
puts Greeter::Hello.new.message文件命名约定
Ruby 工具要求文件路径与常量名称相匹配:
Greeter位于lib/greeter.rb。Greeter::Hello位于lib/greeter/hello.rb。
这一约定可以让自动加载器自动找到文件。
加载内部文件
入口文件通过 require_relative 将所有内容连接起来。每个类文件只加载一次,因此整个库只需执行一次 require 'greeter' 就能加载。
清晰的公开接口
只公开用户实际调用的一小组方法。一种常见模式是使用模块级便捷方法,将调用委托给内部类。
module Greeter
def self.say(name)
"Hello, " + name + "!"
end
end
puts Greeter.say("Ada")隐藏内部实现
将辅助方法标记为 private,这样它们就不会成为公开契约的一部分。任何公开内容都是对用户的承诺;应有意识地保持公开接口小而明确。
class Calculator
def total(a, b)
add(a, b)
end
private
def add(x, y)
x + y
end
end
puts Calculator.new.total(2, 3)配置模式
许多 Ruby 包提供配置代码块,让用户一次性设置选项。一个简单的实现方式是将设置存储在配置对象中。
module App
class Config
attr_accessor :api_key
end
def self.config
@config ||= Config.new
end
def self.configure
yield(config)
end
end
App.configure { |c| c.api_key = "secret" }
puts App.config.api_key自定义错误
在您的命名空间下定义 Ruby 包专用的错误类,这样用户就能精确捕获您定义的错误。请继承 StandardError。
module Payment
class Error < StandardError; end
class DeclinedError < Error; end
end
begin
raise Payment::DeclinedError, "card declined"
rescue Payment::Error => e
puts "Handled: " + e.message
end避免猴子补丁
请避免全局修改 String 等核心类。这样会给其他代码带来意外行为。如果必须扩展,请使用细化机制将改动限制在特定作用域内,或者在您自己的类中添加辅助方法。
保持依赖精简
您添加的每个运行时依赖,都会成为所有用户的依赖。在合理的情况下,请优先使用标准库;只有在确实值得增加负担时,才添加 Ruby 包。
依赖越少,版本冲突就越少,安装速度也越快。
记录公开接口
添加注释,描述每个公开方法的参数和返回值。YARD 等工具可以将这些注释转换为可浏览的文档,而包含示例的优质 README 往往决定了人们是否会采用您的 Ruby 包。
快速检查
检查您对 Ruby 包代码组织方式的理解。
回顾:编写代码
您学习了如何组织 Ruby 包的内部实现:
- 将所有内容包裹在命名空间模块中。
- 让文件路径与常量名称匹配。
- 保持公开接口小巧,并将辅助方法标记为
private。 - 定义自定义错误类,避免全局猴子补丁。
- 保持依赖精简,并记录接口。
接下来,我们将添加测试并进行版本管理。
常见问题解答
「编写代码」课时是免费的吗?
是的 — 「编写代码」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ruby Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ruby Academy 课程共包含 4 节课。
「编写代码」这节课中我会学到什么?
组织 Gem 你通过在浏览器中直接运行的动手代码来练习 Ruby Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Ruby Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Ruby Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「编写代码」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Ruby Academy 课中编写并运行代码吗?
能。每节 Ruby Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。