2番目の例は、私が聞いた「ヨーダ記法」です。「誤り、このメソッドの戻り値はでなければなりません」。それはあなたが英語でそれを言う方法ではないので、英語を話すプログラマーの間では一般的に見下されています。
パフォーマンスに関しては、実際には違いはありません。最初の例は一般的に文法的に(したがって読みやすさのために)優れていますが、メソッドの名前を指定すると、関連する「文法」(およびboolとboolを比較しているという事実)により、とにかく等価性チェックが冗長になります。したがって、本当のステートメントの場合、私は単に次のように書きます。
if(Class.HasSomething())
{
// do somthing
}
else
{
// do something else
}
if()ブロックには基本的に等価比較が組み込まれているため、これは段階的に高速になります。したがって、コーディングif(Class.HasSomething() == true)
すると、CLRはを評価しif((Class.HasSomething() == true) == true)
ます。しかし、ここではおそらく数クロックのゲインについて話しています(ミリ秒ではなく、ティックではなく、クロック。最近のプロセッサでは1秒間に20億回発生するものです)。
if(!Class.HasSomething())
false条件の場合、not演算子:を使用することとfalse:との比較を使用することの間のトスアップですif(Class.HasSomething() == false)
。1つ目はより簡潔ですが、複雑な式の小さな感嘆符を見逃しがちです(特に、式全体の前に発生するため)。したがって、コードが読みやすいことを確認するためにfalseと同等にすることを検討します。