我想避免将true作为参数传递给方法,因为对于第一次阅读代码的人来说没有意义:
e.g。
result = MyQuery.match "aa", user, true
你可以看到它正在传递一个字符串以匹配on和一个用户但是true是任何人的猜测。
如何更明确地说明这一点?
答案 0 :(得分:2)
方法应该只做一件事。如果它需要一个布尔参数,它几乎按照定义两个的东西:如果参数为真,则为1;如果参数为假,则为另一个。 (要不然,或论证无用。)
提供两个具有合理名称的方法几乎总是更好。
答案 1 :(得分:1)
您可以考虑将Hash
与更有意义的符号结合使用。
result = MyQuery.match "bala", user, {alive: true}
将来,当情况需要更多选项而非真/假时,很容易实现
result = MyQuery.match "bala", user, {alive: unlikely}
答案 2 :(得分:0)
您可以为该布尔值定义一个常量变量,为其提供一个有用的名称:
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有详细记录,那么值得尊敬的程序员在阅读该行时就没有问题。
答案 3 :(得分:0)
如果您想解释true
意味着您可以使用符号:
result = MyQuery.match "aa", user, :meaning_of_true
答案 4 :(得分:0)
嗯,其中任何一个都可能有效,具体取决于方法:
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