Когда использовать ключевые аргументы и параметры хэшей? - PullRequest
0 голосов
/ 26 января 2019

Я вижу много людей, использующих ключевые аргументы в своем коде Ruby. Я также вижу много людей, использующих хэши параметров. Когда я должен использовать ключевые аргументы и когда я должен использовать хеши опций? Это действительно смущает меня. Из того, что я видел, аргументы ключевых слов во многих случаях намного лучше, чем хэши параметров. Например:

class Foo
  def initialize(kwarg1: nil, kwarg2: nil)
    @var1 = kwarg1 if kwarg1
    @var2 = kwarg2 if kwarg2
  end
end

выглядит намного лучше и понятнее, чем

class Foo
  def initialize(options = {})
    @var1 = options[:var1] if options[:var1]
    @var2 = options[:var2] if options[:var2]
  end
end

1 Ответ

0 голосов
/ 26 января 2019

Существует правило в Ruby Guide для него:

Use keyword arguments instead of option hashes.

# bad
def some_method(options = {})
  bar = options.fetch(:bar, false)
  puts bar
end

# good
def some_method(bar: false)
  puts bar
end

Это стандарт кодирования де-факто , и если вы будете следовать ему, вы будетеникогда не испытывайте проблем с проверкой вашего кода вашими клиентами.

Из этого правила есть только одно исключение: если вашему методу требуется действительно большое количество различных редко используемых опций, которые действительнотрудно перечислить в списке аргументов, только тогда стоит использовать опцию hash.Но таких ситуаций следует избегать , если это возможно.

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