基準があり、その基準が真の場合はデルタを追加し、偽の場合は逆(減算)を実行するとします。
bool bBoolean;
int iDelta;
int iQuantity;
そのコードを書くためのより簡潔でエレガントな方法はありますか?つまり、キーワードiQuantityとiDeltaを繰り返さないということです。
if(bBoolean)
iQuantity -= iDelta;
else
iQuantity += iDelta;
私が考えることができる最短のことは次のとおりです。
iQuantity += (bBoolean) ? -iDelta : iDelta;
編集:これは一般に3項ステートメントと呼ばれますが、適切な名前(標準では「条件付き式」または「条件付き演算子」と呼ばれます)です。
(正式な名前を教えてくれたRuneに感謝します。)
これは三項演算子です。それは、その可能性が。よりも明確でないために、一部の人に憤慨していますif...else
。私はそれが好きですが、注意してください。
int sign = criteria ? -1 : 1;
quantity += (delta * sign);
iQuantity += (1-2*bBoolean)*iDelta;
一部のプロセッサでは、追加の演算は分岐よりも高速です。
なぜだめですか:
int tmpDelta = iDelta;
if (iBoolean)
{
tmpDelta = -tmpDelta;
}
iQuantity += tmpDelta;
私にとって、コードを書いたり読んだりするときは、できるだけわかりやすいものを選びます。これは、コードが常に更新さiQuantity
れ、trueの場合は更新が逆になることを示していiBoolean
ます。
編集:変更しないように更新しましたiDelta
。