在Ruby中的一行中定义方法的首选方式(更好的样式)是什么?

时间:2011-11-25 14:31:31

标签: ruby coding-style

什么是更好的风格:

def method; some code end

def method() some code end

为什么?

3 个答案:

答案 0 :(得分:9)

首选方法是在一行中定义方法,如@Romain所说。

def method
  some code
end

答案 1 :(得分:2)

有人在仅在一行上编写块时使用{}而不是begin; end

也许这符合您的需求:

class A
    define_method(:method_name) { |arg1, arg2| do_something }
end

答案 2 :(得分:0)

在一行上定义方法只能在文档中完成,否则将其拆分为三行:

def method
    some code
end

如果您发现自己有很多单行方法(即getter& setter),可能会有许多元编程技术(例如使用define_method)来减少重复。例如,您可以使用:attr_accessor来定义许多getter&设置器:

class Person
    # defines name, name=, age, age=, ...
    attr_accessor :name, :age, :blood_type
end

Here是一个讨论这个问题的红宝石论坛。我还强烈建议您阅读Metaprogramming Ruby。它有很多好东西,比如3种或4种方法来解决你的问题以及许多其他减少重复的技术。