- 首页
- 作品
- Ruby 代码风格指南
- 7. 类 (Classes)
7. 类 (Classes)
- 避免使用类变量(
@@
),因为在继承的时候它们会有 “淘气” 的行为。
class Parent
@@class_var = 'parent'
def self.print_class_var
puts @@class_var
end
end
class Child < Parent
@@class_var = 'child'
end
Parent.print_class_var # => 会输出"child"
- 你可以看到在这个类的继承层级了,所有的类都共享一个类变量。 尽量使用实例变量而不是类变量。
- 用
def self.method
来定义单例方法(singleton methods)。这样在需要改类名的时候更方便。
class TestClass
# 错误
def TestClass.some_method
...
end
# 正确
def self.some_other_method
...
end
- 除非必要,避免写
class << self
,必要的情况比如 single accessors 和 aliased attributes。
class TestClass
# 错误
class << self
def first_method
...
end
def second_method_etc
...
end
end
# 正确
class << self
attr_accessor :per_page
alias_method :nwo, :find_by_name_with_owner
end
def self.first_method
...
end
def self.second_method_etc
...
end
end
public
, protected
, private
它们和方法定义保持相同缩进。 并且上下各留一个空行。
class SomeClass
def public_method
# ...
end
private
def private_method
# ...
end
end