2009-06-09 15 views
2

私は次がある場合は、JavaScriptでのステートメント:このmutipleまたは条件付きを書くには良い方法がありますか?

if (!(cmd === 'JustifyLeft' || cmd === 'JustifyRight' || cmd === 'JustifyCenter' || cmd === 'JustifyFull')) 

それはきれいな方法で書くことができる方法上の任意の提案?いくつかのコメントに応えて

おかげ

+3

どのようにすればよいですか?それを作る。 。 。もっと早く?はっきり?少ないコード?より一般的な?より具体的に?何が間違っていると思いますか? –

+0

if文は私にはうまく見えます。おそらく、改行の書式設定によって、読みやすさが向上するでしょう。 – roosteronacid

+0

私はこの質問がcodereview.stackexchange.comの方が適切だと思います。 – CarneyCode

答えて

17
if(!cmd.match(/^Justify(Left|Right|Center|Full)$/)) 

あなたも小さな編集であなたの厳密な比較模倣することができます。

if(typeof cmd != 'String' || !cmd.match(/^Justify(Left|Right|Center|Full)$/)) 

これはあなたの現在のコードとまったく同じように反応しますが、文字列ではないものは無視してください。

個人的に私はあなたがそれを必要とする可能性は非常に低いと思います。

+1

私たちがここで必要としている回答の種類はまったく同じです。 –

+0

私は正規表現も考えていましたが、厳密な等価演算子)が使用されていると私は正規表現がそのような厳格な比較をしないと思います。この場合、私はそれがいかに重要かを見ることができません。 +1 –

+0

+1同意する!atleast15charsblabla – ralphtheninja

4

これは、スイッチを使用するのがよい状況のようです。スイッチはアイデンティティチェック(===)ではなく、等価チェック(==)のみを実行することに注意してください。

switch (cmd) { 
    case "JustifyLeft" : 
    case "JustifyRight" : 
    case "JustifyCenter" : 
    case "JustifyFull" : 
     // do something 
    break; 
    case "somethingElse" : 
    default: 
     // do something else 
    break; 
} 
+0

正規表現よりも効率的です。しかし、「somethingElse」はそこで何をしているのですか?何があっても、スイッチの動作を決して変更しません。 – Blixt

+0

読者に明らかでない場合は、ここでは「somethingElse」というケースは実際には必要ありません。 – Miles

+1

ええええええええええええええええええええええええええええええええええええええええええええと、 – nickf

1

私はIsJustifyCommand(S)メソッドを作成したり、その上にIsJustifyCommand()メソッドを持つコマンドの抽象クラスを作成します。次に、コードはそれが何をしようとしているかの説明のように読み込まれます。

正規表現を使用するときちんとしているかもしれませんが、ハードコアJavaScriptプログラマではない人がコードを操作しなければならない場合、メンテナンスの問題が発生します。しかし、ロットのの正規表現が良い解決法である場合は、コードを見ている誰もがすぐにそれを拾うので、それを使用してください。

は(ただし、私がいないのC#プログラマのJavaScriptプログラマですが、ほとんどのプログラマのように、私は時々/編集JavaScriptのコードを見ている。私はほとんどはJavaScriptをnone JavaScriptのプログラマによって維持されていると思います。)

0

私はとき嫌い何かがそのように書かれています。最初に私はコードを見て、 "cmdがJustifyLeftまたはJustifyRightと等しいならば...それを逆にして...もしそれが正しいとすれば、それはJustifyLeftだと意味する..."。私にとっては時間がかかりますし、私はそれが正しいことを確かめるためにラインを再読しなければなりません。

私はそれを書く方が良いと思います。

if ((cmd !== 'JustifyLeft') && (cmd !== 'JustifyRight') && (cmd !== 'JustifyCenter') && (cmd !== 'JustifyFull')) 

少し冗長かもしれませんが、私はそれに従う方が簡単です。私はそれを "cmdはJustify文字列のいずれにもすることはできません"と読んでいます。長いブール式をチェックしてから、答え全体を反転すると、刺激的です。

私はscragarからの解決が好きです。ちょうど長いブール表現を反転することについての私の考えを伝えたいと思っていました。

関連する問題