2016-06-13 18 views
2

を高めるために使用することは、このために三項演算子を使用することをお勧めし:これはかなり頻繁に起こるように、私は常に自分自身を尋ねた質問である三項演算子は、変数

answersCounter = answer.length != 0 ? ++answersCounter : answersCounter;

を。または、通常のif文を使用する方がよいでしょう。私にとっては、これは1行でもっときれいに見えます。

+2

'answersCounter + = answer.length!= 0;'あなたが必要なのは – Pointy

+0

です。しかし、それはどのように機能するのですか?評価結果はブール値であり、変数は数値です。これはJavaの権利では動作しませんか? – FraK

+2

実際はありません。想像力をつけようとするのではなく、単純で明白な 'if'文を使うべきです。 –

答えて

3

これは単なる意見ですが、私はあなたのようにインクリメントを書いているのはやや貧弱なスタイルだと思います。

変数をプリインクリメントされたバージョンに割り当てることは少し混乱します。私にとって、最良のコードは最も明瞭です(必要に応じて最適化することを除いて)。また、簡潔さは明快さにつながり、時にはそうではありません(Perlで書かれたものを見てください...

int i = 5; 
i += i++ + i; 

か何か似て:

は、あなたがこれまでのプログラミングトリックの質問を持っていたことがありますか?そして、自分自身の前/後のバージョンにいつ変数を割り当てることができたのか、それがどのように機能するのかを知る必要があるあなた自身に考えますか?つまり、あなたは決してそれを実際のコードで見ることはないでしょうか?

まあ、例を提供しました。それは解析可能ですが、それは慣用的ではなく、まっすぐなものではありませんif

など。もちろん

if (answer.length != 0) answersCounter++; 

は、一部の人が出てブレースとif文を好きではない、とあなたは三元になってしまったか、おそらくある、改行せずに括弧が好きではありません。コーディングスタイルのあるものは、(主観的に)悪化したコードがいくつかのキャリッジリターンを回避する結果になっている場合でも、再評価する必要があります。

これもまた意見であり、確かにルールではありません。

+0

本当にいいトリッキーな質問です、ありがとう!そして、私はより具体的なif文がここに行く方法だと思います:) – FraK