1

初めてコードを読む人には意味がないので、メソッドに引数として true を渡すことは避けたいと思います。

例えば

result = MyQuery.match "aa", user, true

一致する文字列とユーザーを渡していることがわかりますが、本当は誰の推測でもあります。

これをより明確にするにはどうすればよいですか?

4

5 に答える 5

2

メソッドは 1 つのことだけを行う必要があります。ブール値の引数を取る場合、定義上、ほぼ2 つのことを行います。1 つは引数が true の場合、もう 1 つは引数が false の場合です。(それか、議論は無用です。)

ほとんどの場合、2 つのメソッドに適切な名前を付けたほうがよいでしょう。

于 2013-09-17T11:32:38.777 に答える
1

Hashより意味のあるシンボルと一緒に使用することを検討できます。

result = MyQuery.match "bala", user, {alive: true}

将来、状況が true/false よりも多くのオプションを要求する場合、それは簡単に達成されます。

result = MyQuery.match "bala", user, {alive: unlikely}
于 2013-09-17T11:33:04.517 に答える
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 が十分に文書化されていれば、立派なプログラマーはその行を読むのに問題はありません。

于 2013-09-17T11:29:17.387 に答える
0

意味を説明したい場合trueは、シンボルを使用できます。

result = MyQuery.match "aa", user, :meaning_of_true
于 2013-09-17T11:33:03.193 に答える
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
于 2013-09-17T11:34:58.507 に答える