我正在使用reek
作为我的代码中最佳做法的分析工具。但是最近我发现如果在方法中,我有布尔参数,比如。
def method (flag = true)
reek
给了我一个警告。为什么reek
告诉我这是一个警告?
答案 0 :(得分:3)
在我写这篇文章之前的几年,我在这里写了一篇关于这段代码的博客:http://silkandspinach.net/2004/07/15/avoid-boolean-parameters/
布尔参数的问题都与复制和SRP有关:被调用的方法有两个职责,调用者知道它想要调用哪一个。
答案 1 :(得分:0)
标志变量被视为不良做法。这是因为它固有地违反了功能应该只做一件事的原则。通过传入一个布尔标志,你会说,“如果它是真的那就做,如果它是假的”,这是两件事。
答案 2 :(得分:0)
老问题,但我想我会为那些从谷歌进来的人添加我的想法:
在某些情况下,单独的方法很好,但在我看来,更好的选择是:
kredit_member_no
这还可以包括检查标志是否实际上是布尔值:
def method(option = {:flag => false})
options[:flag] ? doFoo : doBar
end
method(:flag => true)