質問

これは周りで見たことがありますが、その理由について明確な説明を聞いたことがありません...

2つのアイテムを比較するとき、「チェック」値は右側ではなく左側に配置されます。論理的には、まず変数をリストし、次に比較する値をリストします。しかし、「定数」が逆であることがわかりました。最初にリストされています。

この方法にはどのような利点がありますか?

ではなく:

if (myValue > 0)

見たことがあります:

if (0 < myValue)

または

if (Object.GimmeAnotherObject() != null)

は次のものに置き換えられます:

if (null != Object.GimmeAnotherObject())

これに関するアイデアはありますか?

TIA! ケビン

役に立ちましたか?

解決

一部の開発者は定数を左側に配置します

if(0 = myValue)

これは、0に値を割り当てることができないため、コンパイラからエラーが発生するためです。代わりに、次のように変更する必要があります

if(0 == myValue)

これにより、入力後の多くの苦痛なデバッグを防ぐことができます

if(myValue = 0)

完全に合法ですが、おそらくあなたが意図したもの

if(myValue == 0)

最初の選択はあなたが望むものではありません。プログラムを微妙に変更し、あらゆる種類の頭痛を引き起こします。それが明確になることを願っています!

他のヒント

定数が最初であるか、定数が最後であるかのような単純なルールは、あまり賢い選択ではないと思います。チェックではセマンティクスを表現する必要があると思います。たとえば、範囲チェックで両方のバージョンを使用することを好みます。

if ((low <= value) && (value <= high))
{
    DoStuff(value);
}

しかし、私はあなたが言及した例に同意します-私は最後になりますが、他の方法でそれを行う明白な理由はわかりません。

if (object != null)
{
    DoStuff(object);
}

C ++では、これらは両方とも有効でコンパイルされます

if(x == 1)

and

if(x=1)

ただし、このように記述した場合

if(1==x)

and

if(1=x)

その後、1への割り当てがキャッチされ、コードはコンパイルされません。

「安全」と見なされますconst変数を左側に配置します。

const変数を代入するために左側に置く習慣になると、デフォルトの動作モードになる傾向があるため、同等性チェックにも表示されるのはそのためです

.Netの場合、コンパイラは次のような条件で割り当てを許可しないため、無関係です。

if(x=1)

(他の人が言ったように)それは悪い習慣です(見逃しやすいからです)。

そのことを心配する必要がなくなると、変数を最初に、値を2番目に置く方が少し読みやすくなりますが、それが唯一の違いです。両側を評価する必要があります。

たとえば、「!=」とタイプされた「!=」のようなタイプミスをキャッチするコーディング慣行です。

左側にCONSTANTがある場合、定数に割り当てることができないため、すべての割り当て演算子がコンパイラによってキャッチされます。

多くの言語(具体的には C )により、コードを書く際の柔軟性が大幅に向上します。左側の定数は普通ではないように見えますが、割り当てと条件を一緒にプログラムすることもできます。

if (var1 = (var2 & var3)) { /* do something */ }

このコードはブール値の結果を var1 に取得し、結果がtrueの場合は/ *何かを実行します* /

関連するコーディング慣行では、条件式に割り当てが含まれるコードを記述しないようにします。ただし、プログラミング言語ではそのようなことが可能です。条件内の割り当ては珍しいため、このようなコードにあまり出くわすことはありません。したがって、典型的なコードにはそのようなものはありません。

C 言語コーディングの実践的な記事があります。 「nofollow noreferrer」> IBM DeveloperWorks サイトは、おそらくその言語で書いている人々にまだ関連しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top