如何在同一个对象上执行几个方法?

时间:2012-09-18 02:14:35

标签: ruby design-patterns

当您需要对某个对象执行多种方法时,您更喜欢哪种解决方案?

代码应该说明一切:

class Foo
  def self.build
    foo = new
    foo.first
    foo.second
    foo
  end

  def first
  end

  def second
  end
end

class Bar
  def self.build
    new.first.second
  end

  def first
    self
  end

  def second
    self
  end
end

2 个答案:

答案 0 :(得分:1)

我认为这取决于您希望调用这些方法的次数。他们会经常在一起或只在这里召集一次吗?如果它只是一次我采用2线方法,因为它不会在回报中不必要地传递self。如果它经常发生,那么再制作一个连续调用它们的方法。

答案 1 :(得分:0)

这是一种权衡。答案取决于(1)重要性和(2)周围代码的复杂性。作为程序员,您必须做出决定。管道形式更短,节省垂直空间。稀疏形式更容易调试。根据您选择方法关键字的方式,内联表单可能看起来像人类句子,但在其他情况下,稀疏表单可能更易于阅读。如果您的方法处于繁重的开发阶段,请使用稀疏的写作方式。对于稳定的代码,管道形式是O.K.对于不太重要的代码,例如测试,我喜欢使用管道形式。实际上,我非常喜欢它,甚至省略了点,所以我的FizzBuzz程序看起来像这样,使用我的自定义库,允许密集的无点单字符方法双层管道:

(1..100).τᴍ⁒i⁇χ( 3, 0, "fizz", nil ).πᴍ⁒i⁇χ( 5, 0, "buzz", nil ).πγZᴍjτ

所以请记住,一线管道什么都没有,像上面那样的程序就是他们在Ruby中说“非常糟糕的风格”的意思:)))