【发布时间】:2016-10-19 05:44:15
【问题描述】:
我看到了两种写同一件事的风格:
def find_nest(animal)
return unless animal.bird?
GPS.find_nest(animal.do_crazy_stuff)
end
对
def find_nest(animal)
if animal.bird?
GPS.find_nest(animal.do_crazy_stuff)
end
end
哪一个更正确/更可取/遵循最佳实践?还是没关系?
【问题讨论】:
-
我会写
GPS.find_nest(animal.do_crazy_stuff) if animal.bird? -
@Stefan 我总是想出糟糕的问题示例:P
-
@Stefan:在值很重要的表达式的情况下,我发现修饰符条件令人困惑。仅在“语句”中使用它们,并且仅在主要表达式不太长时使用(否则它会将修饰符推到视线之外)
-
@FilipBartuzi 因为你的问题被标记为 oop - 当然最好有一个
Bird类(Animal的后代)并在没有的情况下实现Bird#find_nest参数为def find_nest; GPS.find_nest(do_crazy_stuff); end。
标签: ruby coding-style guard-clause