【发布时间】:2013-08-10 00:03:03
【问题描述】:
我已经看到带有默认参数的特殊代码异味。那是当一个方法为其参数之一设置了默认值但调用者传递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 或没有传递参数时,分配一个默认值。
【问题讨论】:
标签: ruby