0

以下を考えると:

bool isCorrect = theAnswer == 42;

falseC#(プログラミング全般)でブール論理をテストする好ましい方法はどれですか?

if (!isCorrect)
  // throw exception

また

if (isCorrect == false)
  // throw exception

私が尋ねる理由は、職場の上級開発者の 1 人が、読みやすさを向上させ、他の開発者が誤ったチェックを明確に確認できるようにするため、常に後者のアプローチを使用する必要があると示唆しているためです。感嘆符は見落としがちです。前者の方が簡潔で読みやすいので、私は前者の方がはるかに好きです。

これは主観的な問題である可能性があることを理解しているので、コーディングスタイルに具体的な好みがあるかどうか疑問に思っていました.

4

4 に答える 4

3

私はそのようなコードを含む上級開発者からのプロダクションコードを見ました:

if (isCorrect.ToString().Length == 5)

しかし、私はまだ使用しています:

if (!isCorrect)

あなたがより読みやすいと思うものを使用してください、すべての開発者の間で統計はありません))

于 2012-12-07T12:57:51.577 に答える
1

推奨される方法 (実際にベスト プラクティスかどうかはわかりません、ベスト プラクティスであることは間違いありません) は、テストしないことです。false

// First question: "Is the answer correct ?"
bool isCorrect = theAnswer == 42;

// Second question: "What if it is ?"
if (isCorrect) 
{

}
else //Third question: "What if it isn't ?"
{
}

より論理的であるだけでなく、コードの実際の流れに従う必要がある場合に、スクロールしてエラー処理をスキップする必要がなくなります。

また、完全を期すために、ブール名は常に正でなければならないことを指摘する価値がありますisCorrect。VS isNotWrong... isPositiveVS isNotNegative... を考えると、読むだけでなく理解するのもはるかに簡単です。

于 2012-12-07T13:02:23.403 に答える
0

(!condition)の方が簡潔です。
上級開発者は、(条件 == false) がより「目に見える」(または必要に応じて読める) ことは正しいです。

要するに好みの問題なので、上級開発者が提案することを実行し、好むと好まざるとにかかわらずすべてを一貫させる必要があります。あなたが上級開発者であれば、戻ってすべてを変更できます。

于 2012-12-07T13:04:06.377 に答える
0

以下を考えると:

bool isCorrect = theAnswer == 42;

逆を確認する最も明確な方法は(IMHO!)です:

bool isWrong = !isCorrect;

...

if (isWrong)
// throw exception
于 2012-12-07T13:04:15.167 に答える