は、以下の典型的なシナリオを考えてみましょう:??でヌルオブジェクトをインスタンス化するオペレータ
if(anObject == null)
{
anObject = new AClass();
}
私が使用して、次の交換を考えているものを思ったんだけど?演算子:
anObject = anObject ?? new AClass();
2番目のフォームを使用する必要があるかどうかはわかりません。これはすばらしい省略形のようですが、最初はanObject = anObjectというコンストラクトがコード臭のように思えます。
これは妥当な行為ですか、それとも私が行方不明になっているより良い省略形ですか?あるいは、「それは3本の線です。
どちらも共通しています。 –
もしそれがコードの匂いであれば、最初に導入されることはありません。第2の形態はより簡潔であり、好ましいものでなければならない。 –
@ JeroenVannevel: '?? '演算子がcode-smellであるかどうかは問題ではありませんが、オペランドの1つとして渡された式に戻って代入された式での使用がcode-smellです。 –