初めてコードを読む人には意味がないので、メソッドに引数として true を渡すことは避けたいと思います。
例えば
result = MyQuery.match "aa", user, true
一致する文字列とユーザーを渡していることがわかりますが、本当は誰の推測でもあります。
これをより明確にするにはどうすればよいですか?
初めてコードを読む人には意味がないので、メソッドに引数として true を渡すことは避けたいと思います。
例えば
result = MyQuery.match "aa", user, true
一致する文字列とユーザーを渡していることがわかりますが、本当は誰の推測でもあります。
これをより明確にするにはどうすればよいですか?
メソッドは 1 つのことだけを行う必要があります。ブール値の引数を取る場合、定義上、ほぼ2 つのことを行います。1 つは引数が true の場合、もう 1 つは引数が false の場合です。(それか、議論は無用です。)
ほとんどの場合、2 つのメソッドに適切な名前を付けたほうがよいでしょう。
Hash
より意味のあるシンボルと一緒に使用することを検討できます。
result = MyQuery.match "bala", user, {alive: true}
将来、状況が true/false よりも多くのオプションを要求する場合、それは簡単に達成されます。
result = MyQuery.match "bala", user, {alive: unlikely}
そのブール値の定数変数を定義して、わかりやすい名前を付けることができます。
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
方法によっては、これらのいずれかが機能する可能性があります。
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