ブール型メソッドは、否定的な形式でのみ使用される場合でも、常に肯定的な形式を取る必要がありますか?
エンティティを作成する前にエンティティが存在するかどうかを確認したかったとしましょう。私の主張は、メソッドが肯定的なフォームで使用されているかどうかに関係なく、下の最初のフォームは2番目のフォームより優れているということです。
要約すると、私はif(!affirmative)
よりも読みやすいと思いますif(negative)
。意見が合わない同僚がいますか?
最初のフォーム:
int entity_id = 42;
if(!entity_exists(entity_id)) create_entity(entity_id);
2番目のフォーム:
int entity_id = 42;
if(entity_not_exist(entity_id)) create_entity(entity_id);
!
何度も文字を見逃してしまったので、コードを再読するまでコードを誤解してしまいました。だから私はおそらくあなたの同僚にもっと同意するでしょう。私はあなたがそれを調べるときに真と評価されるフォームが好きです。
if (!exists) create()
それはスレッドセーフではない傾向があるため、多くの言語/フレームワークで悪い習慣とみなされる可能性があると言うためにチャイムしたいだけです。通常、推奨されるアプローチはcreate()
、エンティティが既に存在することを示す特定の例外またはリターンコードを呼び出して処理することです。もちろん、これは実際の質問に対する答えではありません(これがコメントのみの理由です)。
if (not entity_exists(entity_id))