在哪里放置在Ruby中的私有方法?(Where to place private methods i

2019-07-29 12:11发布

大多数的博客或教程或图书有任何类别/模块底部的私有方法。 这是最好的做法呢?

我觉得有私有方法有需要时更方便。 例如:

public
def my_method
  # do something
  minion_method
end

private
def minion_method
  # do something
end

public
def next_method
end

这样,我找到了更多的代码,而不是向上和向下滚动一直是很讨厌的可读性。

有什么可怕的错误在这种方法? 是一种在底部不只是一个最佳实践和别的私有方法?

Answer 1:

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

最后,你可以做只需添加任何私有方法: private :xmethod

例:

class Example
 def xmethod
 end

 def ymethod
 end

 def zmethod 
 end

 private :xmethod, :zmethod

end

这是否证明了你的问题?



Answer 2:

正如其他人已经指出的惯例是把私有方法的底部,下一个私有类。 但是,你应该也知道很多编程人员使用(而不是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

此方法应防止您不必上下滚动,将让其他程序员在代码中更舒适。



Answer 3:

还有预先设置选项private以来的Ruby 2.1的方法定义。

class Example

 def xmethod
 end

 private def ymethod
 end

 private def zmethod 
 end

end

纵观定义,你即刻知道,如果一个方法是私有的,无论在文件中它的定义。 这是多一点打字(如果你不自动完成),而不是所有的def旨意被很好地对齐。



Answer 4:

我认为,公众的方法是某种对象的接口,以及它的逻辑将它们放置在IE浏览器中的文件的顶部最显眼的地方。



Answer 5:

你并不需要把publicprivate的每个方法上面。 我通常把我所有的私有方法在我班上的最后一名。 此外,没有明确地说, 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


Answer 6:

我从Java背景快到了,我讨厌要滚动查看方法类型。 我认为这是疯狂的一个人不能没有丑陋指定每个方法的方法知名度。 所以我最后决定将评论#private之前,每个吸的方法,然后宣布private :...



Answer 7:

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.



Answer 8:

一种风格是一群方法一起使用,让你只使用privateprotected最多每班一次。 另一种风格的方法定义之后到指定的可见性:

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


Answer 9:

这是口味的问题,我想,但我宁愿明确命名每一个像这样的方法就行私人后表示方法:

 class Example
   def cthulhu
   end

   def rlyeh
   end

   def foo
   end
   private :foo

   def bar
   end
   private :bar

   def baz
   end
   private :baz     
 end


Answer 10:

丹尼斯完美的答案,那就是使用Ruby> = 2.1时,就与私人(或保护公众)前缀DEF

但我相信,它现在也可以使用专用的块,如下所示:

private begin
   def foo
   end
   def bar
   end
end

def zip
end


Answer 11:

我一般为了我的方法如下:

  1. 构造函数
  2. 其他公共方法,按字母顺序
  3. private ,只写一次
  4. 私有方法,按字母顺序

我用“转到定义”功能,在我的编辑器,这样并不涉及太多滚动,并且在任何情况下,如果类是足够大的屏幕滚动变得有问题的,它可能要被分为几类。



文章来源: Where to place private methods in Ruby?