大多数的博客或教程或图书有任何类别/模块底部的私有方法。 这是最好的做法呢?
我觉得有私有方法有需要时更方便。 例如:
public
def my_method
# do something
minion_method
end
private
def minion_method
# do something
end
public
def next_method
end
这样,我找到了更多的代码,而不是向上和向下滚动一直是很讨厌的可读性。
有什么可怕的错误在这种方法? 是一种在底部不只是一个最佳实践和别的私有方法?
在我的观点来看,最好的做法是按顺序去而不观点保持私有声明你的方法。
最后,你可以做只需添加任何私有方法: private :xmethod
例:
class Example
def xmethod
end
def ymethod
end
def zmethod
end
private :xmethod, :zmethod
end
这是否证明了你的问题?
正如其他人已经指出的惯例是把私有方法的底部,下一个私有类。 但是,你应该也知道很多编程人员使用(而不是2 4位),此方法的双标示。 其原因是,很多时候,你不会看到在文本编辑器“私人”,并假定它们可以是公共的。 见下文的说明:
class FooBar
def some_public_method
end
def another_public_method
end
private
def some_private_method
end
def another_private method
end
end
此方法应防止您不必上下滚动,将让其他程序员在代码中更舒适。
还有预先设置选项private
以来的Ruby 2.1的方法定义。
class Example
def xmethod
end
private def ymethod
end
private def zmethod
end
end
纵观定义,你即刻知道,如果一个方法是私有的,无论在文件中它的定义。 这是多一点打字(如果你不自动完成),而不是所有的def
旨意被很好地对齐。
我认为,公众的方法是某种对象的接口,以及它的逻辑将它们放置在IE浏览器中的文件的顶部最显眼的地方。
你并不需要把public
或private
的每个方法上面。 我通常把我所有的私有方法在我班上的最后一名。 此外,没有明确地说, public
的方法默认都是公有的。 例如:
class FooBar
def some_public_method
end
def another_public_method
end
private
def some_private_method
end
def another_private method
end
end
我从Java背景快到了,我讨厌要滚动查看方法类型。 我认为这是疯狂的一个人不能没有丑陋指定每个方法的方法知名度。 所以我最后决定将评论#private
之前,每个吸的方法,然后宣布private :...
。
I don't like having to specify public or private for each method. Putting all private methods at the bottom lets me have a single instance of "private" per file. I guess it's a matter of taste.
一种风格是一群方法一起使用,让你只使用private
和protected
最多每班一次。 另一种风格的方法定义之后到指定的可见性:
class Example
def my_private_method
end
private :my_private_method
def my_public_method
end
end
随着Ruby 2.1.0的def
返回方法的名称为标志,所以一个更精简的风格是可能的:
class Example
private def my_private_method
end
def my_public_method
end
protected def my_protected_method
end
private_class_method def self.my_private_class_method
end
end
(注意,我们使用private_class_method
类方法-否则我们会得到NameError: undefined method
,因为private
期待一个实例方法,使用它作为一个宏观即使像原来的例子,只会影响的实例方法的可见性。)
我喜欢这样的嵌入式可见样式最好的,因为它可以让你如你所愿组织的方法。 它降低了加放错了地方的新方法,并无意中使其私人的风险。
而对于类方法的语法,可以这样处理,而不是:
class Example
private def my_private_method
end
class << self
private def my_private_class_method
end
end
end
这是口味的问题,我想,但我宁愿明确命名每一个像这样的方法就行私人后表示方法:
class Example
def cthulhu
end
def rlyeh
end
def foo
end
private :foo
def bar
end
private :bar
def baz
end
private :baz
end
丹尼斯完美的答案,那就是使用Ruby> = 2.1时,就与私人(或保护公众)前缀DEF
但我相信,它现在也可以使用专用的块,如下所示:
private begin
def foo
end
def bar
end
end
def zip
end
我一般为了我的方法如下:
- 构造函数
- 其他公共方法,按字母顺序
-
private
,只写一次 - 私有方法,按字母顺序
我用“转到定义”功能,在我的编辑器,这样并不涉及太多滚动,并且在任何情况下,如果类是足够大的屏幕滚动变得有问题的,它可能要被分为几类。