Ruby 使bool参数更具可读性
我希望避免将true作为参数传递给方法,因为对于第一次阅读代码的任何人来说,它都没有意义: e、 g 您可以看到,它正在传递一个字符串以匹配用户和用户,但真实情况是任何人都可以猜测的Ruby 使bool参数更具可读性,ruby,Ruby,我希望避免将true作为参数传递给方法,因为对于第一次阅读代码的任何人来说,它都没有意义: e、 g 您可以看到,它正在传递一个字符串以匹配用户和用户,但真实情况是任何人都可以猜测的 如何使其更明确?您可以为该布尔值定义一个常量变量,并给它一个有用的名称: MEANING_OF_TRUE = true result = MyQuery.match "aa", user, MEANING_OF_TRUE 您还可以明确注释true值的含义: result = MyQuery.match "aa",
如何使其更明确?您可以为该布尔值定义一个常量变量,并给它一个有用的名称:
MEANING_OF_TRUE = true
result = MyQuery.match "aa", user, MEANING_OF_TRUE
您还可以明确注释true
值的含义:
result = MyQuery.match "aa", user, true # because ...
最后,您还可以打开MyQuery
并在其中定义一个常量:
class MyQuery
MEANING_OF_TRUE = true
MEANING_OF_FALSE = false
end
# ...
result = MyQuery.match "aa", user, MyQuery::MEANING_OF_TRUE
但是你不应该真的担心这个。如果你的API有很好的文档,一个值得尊敬的程序员在阅读这行代码时不会有问题。一个方法应该只做一件事。如果它接受一个布尔参数,根据定义它可以做两件事:一件是参数为真,另一件是参数为假。(要么如此,要么这个论点毫无用处。)
提供两个具有合理名称的方法几乎总是更好的。如果您想解释
true
的含义,您可以使用符号:
result = MyQuery.match "aa", user, :meaning_of_true
可以考虑使用<代码>哈希< /C> >一个更有意义的符号。
result = MyQuery.match "bala", user, {alive: true}
将来,当情况需要更多的选择而不是真/假时,它很容易实现
result = MyQuery.match "bala", user, {alive: unlikely}
好吧,根据方法的不同,这些方法中的任何一种都可能有效:
OPTION = true
MyQuery.match "aa", user, OPTION
option = true
MyQuery.match "aa", user, option
MyQuery.match "aa", user, option = true
MyQuery.match "aa", user, :option
MyQuery.match "aa", user, option: true
match
是我们自己的方法,还是一块你无法控制的宝石?几周前,RubyTapas有一个关于这个特定问题的插曲。寻找第119集,意图揭示论点。()除了Bala的评论之外,这可能是一篇有趣的文章:你能修复你的“
和”
?请注意,如果散列是最后一个参数,大括号是可选的,这使得它更漂亮!result=MyQuery.match“Bala”,user,alive:true
OPTION = true
MyQuery.match "aa", user, OPTION
option = true
MyQuery.match "aa", user, option
MyQuery.match "aa", user, option = true
MyQuery.match "aa", user, :option
MyQuery.match "aa", user, option: true