这是一个简单的风格问题。在Ruby代码中声明访问控制的首选方法是什么?
示例A:
#!/usr/bin/env ruby
class MyClass
def method1 # this is public by default
#...
end
protected # subsequent methods will be protected
def method2
#...
end
private # subsequent methods will be private
def method3
#...
end
public # subsequent methods will be public
def method4
#...
end
end
或示例B:
#!/usr/bin/env ruby
class MyClass
def method1
#...
end
def method2
#...
end
def method3
#...
end
def method4
#...
end
public :method1, :method4
protected :method2
private :method3
end
从语法上讲,我喜欢示例B.A引入了public
/ protected
方法之后声明的private
方法之间的歧义,尽管我没有理由不应该只调用{{1将其指定为method1
之后。
然而,这不是我喜欢的。行业定义的标准是什么?
答案 0 :(得分:2)
我见过第二种方法的唯一地方是Ruby书籍,只是作为“你也可以这样做”的例子。
你很少看到在第一种方法中使用“公共”,因为它是默认的,人们只是在任何受保护/私有声明之前定义所有公共方法。
答案 1 :(得分:1)
我认为这取决于你的编码风格。如果你读过Bob叔叔的“Clean Code”(我个人喜欢),我们鼓励你们将彼此紧密联系的方法或函数编写在一起。在这种情况下,使用示例B中的方法的可见性是有意义的:
class Foo
def method1
method2
end
def method2
..
end
private :method2
end
鲍勃叔叔实际上是将方法放在一起的好例子,因为这样可以防止在代码中滚动。