2016-09-19 8 views
0

多くの条件に依存する機能がいくつかあります。条件文のすべての変数はブール変数であり、コードは以下の通りであると私はそれを好きではない:else文を簡略化

if (userHasMoreThanOneMarket && isOnlyMarketSelected || !userHasMoreThanOneMarket && userHasMoreThanOneAgency) { 
     if (isOnlyAgencySelected) { 
      //do case 1 

     } else if (noAgencySelected && isOnlyMarketSelected) { 
      //do case 2 
     } 
    } 

それがより理解し、素敵にする方法はありますか?

+0

...完全なコードを追加できたら... – Tushar

+2

私にはかなり良く見えますが、明らかな冗長性はありません。 – Blazemonger

+0

これらの変数がどのように定義されているかを知らなくても、よりクリーンなコードがここにあるかどうかわかりません –

答えて

1

あなたのコードは罰金だが、あなたがそれを好きではない場合は、このような何か(あなたはより良いそれを好めば、唯一の改善はこちらのスタイルであることに注意してください)行うことができます:

function check(){ 
    return { 
     valid: userHasMoreThanOneMarket && isOnlyMarketSelected || !userHasMoreThanOneMarket && userHasMoreThanOneAgency, 
     case: [ 
      isOnlyAgencySelected, 
      noAgencySelected && isOnlyMarketSelected 
     ] 
    }; 
} 

var conditions = check(); 
if (conditions.valid) { 
    if (conditions.case[0]) { 
     //do case 1 
    } else if (conditions.case[1]) { 
     //do case 2 
    } 
} 
2

程度のですあなたがJavaScriptを手に入れようとしているので簡潔です。あなたはそれから多くの可読性を得る場合、私は本当に知らないけど

var multiMarketOneSelected = userHasMoreThanOneMarket && isOnlyMarketSelected; 
var singleMarketMultiAgency = !userHasMoreThanOneMarket && userHasMoreThanOneAgency; 

if (multiMarketOneSelected || singleMarketMultiAgency) { 
    if (isOnlyAgencySelected) { 
     //do case 1 

    } else if (noAgencySelected && isOnlyMarketSelected) { 
     //do case 2 
    } 
} 

:私はあなたが本当に、あなたがあなたのバイナリオプションを格納する変数を作成することができますしたい場合とします。

1

私は、コードを読みやすくするためにしようといくつかのもの:

  1. あなたは再びそれらを否定する必要はありませんように、変数を初期化。だから!userHasMoreThanOneMarketuserHasOneMarket
  2. isOnlyMarketSelected私に冗長なサウンドになる。そして外側のif節と内側の節でそれをチェックしています。
  3. このコードスニペットの上には、このブール値をすべて初期化して設定するコードが多分あるでしょう。各変数の後ろにreturn;ステートメントを試してif条件を取り除いてください。

私はこれが役立つことを願っています。