2017-11-26 27 views
0

:C#では三項演算子内の代入、アンチパターン?私は(JavaScriptで)このように三項演算子を使って同僚持っ

var genderLabel = ''; 
isMale? genderLabel = 'Man' : genderLabel = 'Woman'; 

を、私はちょうどそれを行うだろう。

var genderLabel = isMale? "Man" : "Woman"; 

私の同僚は、これはJavaScriptのコード規約です...それは本当ですか?私はJavaScriptの専門家ではなく、私はその言語を嫌いです...コードをレビューするとき、私は変数の初期化や割り当てに従うために私の左手に焦点を当てます。そのようなスタイルは私に行全体を読むよう強制します。

私も元従業員のJavaコードを維持しています。彼は同じ方法で三項演算子を使います。それは反パターンですか?私はそれは、コンパイラによってそれがif文で許可されていないのと同じ方法で禁止されるべきだと思う:

if(x = 2) 
{ 
    ... 
} 

これは、C#でコンパイルされません。

+3

これまで私はそれを見たことがありません。繰り返しからより多くのスペースを取るだけでなく、それは混乱しており、意味的に奇妙です。 – Li357

答えて

2

私の同僚は、これはJavaScriptのコード規約です...それは本当ですか?

アンチパターンということですか?

通常単独行は、しかし、この

isMale ? genderLabel = 'Man' : genderLabel = 'Woman'; 

genderLabelの値を設定する副作用と、発現され、ステートメントです。それはいい練習ですか?私は、あなたにもこれを許可する必要があります、あなたはそれは良い習慣だと思うがあれば、知らない:

var a = 1, b = 2; 
b = [a][a = b, 0]; # swap a and b 

あなたの同僚は、同様に行う可能性があります:

if(isMale) genderLabel = 'Man'; 
else  genderLabel = 'Woman'; 

より明確です。