首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ruby中的私有方法放在哪里?

Ruby中的私有方法放在哪里?
EN

Stack Overflow用户
提问于 2012-05-24 00:34:06
回答 9查看 60.6K关注 0票数 100

大多数博客、教程或书籍在任何类/模块的底部都有私有方法。这是最佳实践吗?

我发现在必要的时候使用私有方法更方便。例如:

代码语言:javascript
复制
public
def my_method
  # do something
  minion_method
end

private
def minion_method
  # do something
end

public
def next_method
end

这样,我发现代码的可读性更好,而不是不断地上下滚动,这非常令人恼火。

这种方法有什么严重的错误吗?在底层使用私有方法不只是一种最佳实践吗?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-05-24 01:32:13

在我看来,最好的做法是按顺序声明你的方法,而不是保持私密的观点。

最后,只需添加:private :xmethod,就可以使任何方法成为私有方法

示例:

代码语言:javascript
复制
class Example
 def xmethod
 end

 def ymethod
 end

 def zmethod 
 end

 private :xmethod, :zmethod

end

这能证明你的问题是正确的吗?

票数 134
EN

Stack Overflow用户

发布于 2014-06-21 03:11:41

从Ruby2.1开始,还可以选择将private添加到方法定义中。

代码语言:javascript
复制
class Example
 def xmethod
 end

 private def ymethod
 end

 private_class_method def self.zmethod 
 end
end

您可以立即看到一个方法是否是私有的,无论它在(大)文件中的什么位置。它与许多其他语言都是一致的。但它的打字量更大,不能很好地对齐。

票数 62
EN

Stack Overflow用户

发布于 2012-05-24 00:46:37

正如其他人已经指出的那样,约定是将私有方法放在底部,放在一个私有类下。然而,您可能还应该知道,许多程序员为此使用双缩进(4个空格而不是2个)方法。原因是,通常情况下,您不会在文本编辑器中看到“私有”,并认为它们可能是公共的。如下图所示:

代码语言:javascript
复制
class FooBar

  def some_public_method
  end

  def another_public_method
  end

private

    def some_private_method
    end

    def another_private method
    end

end

此方法应避免您必须上下滚动,并将使其他程序员在您的代码中更舒适。

票数 53
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10724221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档