Я видел специфический запах кода с параметрами по умолчанию. То есть, когда метод имеет значение по умолчанию, заданное для одного из его параметров, но вызывающий абонент пропускает nil
вместо того, чтобы не передавать значение. В большинстве случаев это происходит потому, что вызывающий имеет хэш и пытается передать определенное значение из хэша. В частности:Передача отсутствующих параметров
def foo(params)
...
bar(params[:first], params[:second]) # :second doesn't exist
end
def bar(first, second = 2)
end
Вторые пары в foo
не не стали значением по умолчанию, но становится nil
. Наиболее распространенным способом я видел это обрабатывается в том, что первая строка в функции бара:
second ||= 2
Есть ли лучший способ обработки этого? То есть, всякий раз, когда nil
или никакие параметры не передаются, присвойте значение по умолчанию.