Каков предпочтительный способ (лучший стиль) для определения метода в одной строке в Ruby? - PullRequest
4 голосов
/ 25 ноября 2011

Какой стиль лучше:

def method; some code end

или

def method() some code end

и почему?

Ответы [ 3 ]

9 голосов
/ 25 ноября 2011

Предпочтительным способом является , а не определение метода в одной строке, как сказал @Romain.

def method
  some code
end
2 голосов
/ 25 ноября 2011

Некоторые люди используют {} вместо begin; end при записи блоков только в одну строку.

Может быть, это соответствует вашим потребностям:

class A
    define_method(:method_name) { |arg1, arg2| do_something }
end
0 голосов
/ 26 ноября 2011

Определение метода в одной строке следует выполнять только в документации, в противном случае разделите его на три строки:

def method
    some code
end

Если вы обнаружите, что у вас много однострочных методов (например, getters & setters), может быть много методов метапрограммирования (например, использование define_method) для уменьшения дублирования. Например, вы можете использовать :attr_accessor для определения множества методов получения и установки:

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

Здесь - рубиновый форум, который говорит об этом. Я также настоятельно рекомендую прочитать Metaprogramming Ruby . В нем есть много полезных вещей, таких как 3 или 4 способа решения вашей проблемы, а также множество других техник для уменьшения дублирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...