私はJavaScriptで次のIFステートメントを持っています:
if ( !(cmd === 'JustifyLeft' || cmd === 'JustifyRight' || cmd === 'JustifyCenter' || cmd === 'JustifyFull') )
よりクリーンな方法で書く方法について何か提案はありますか?
ありがとう
私はJavaScriptで次のIFステートメントを持っています:
if ( !(cmd === 'JustifyLeft' || cmd === 'JustifyRight' || cmd === 'JustifyCenter' || cmd === 'JustifyFull') )
よりクリーンな方法で書く方法について何か提案はありますか?
ありがとう
if(!cmd.match(/^Justify(Left|Right|Center|Full)$/))
いくつかのコメントに応じて、小さな編集で厳密な比較を模倣することもできます。
if( typeof cmd != 'String' || !cmd.match(/^Justify(Left|Right|Center|Full)$/))
これは、現在のコードとまったく同じように反応し、文字列ではないものはすべて無視します。
個人的には、あなたがそれを必要とする可能性は非常に低いと思います.
これは、スイッチを使用するのに適した状況のように思えます。スイッチは等価性チェック(==
)のみを実行し、IDチェック()は実行しないことに注意して===
ください。ただし、これは問題ありません。
switch (cmd) {
case "JustifyLeft" :
case "JustifyRight" :
case "JustifyCenter" :
case "JustifyFull" :
// do something
break;
case "somethingElse" :
default:
// do something else
break;
}
IsJustifyCommand(s)メソッドを作成するか、IsJustifyCommand()メソッドを持つコマンド抽象クラスを作成します。次に、コードは、実行しようとしていることの説明のように読み取られます。
正規表現を使用するのは良いことかもしれませんが、ハードコアのJavaScriptプログラマーでない人がコードで作業しなければならない場合、メンテナンスの問題が発生します。ただし、正規表現が優れたソリューションである場合が多い場合は、それを使用してください。コードを見ている人はすぐにそれを理解するでしょう。
(ただし、私はJavaScriptプログラマーではなくC#プログラマーですが、ほとんどのプログラマーと同様に、JavaScriptコードを確認/編集する必要があります。ほとんどのJavaScriptは、JavaScriptプログラマーによって維持されていないと思います。)
みたいなことを書かれたら嫌です。最初にコードを見て、「cmd が JustifyLeft または JustifyRight と等しい場合...それを反転し、...それが true の場合は実行する..つまり、JustifyLeft の場合...」と考えます。私にとってはかなりの時間がかかり、正しいことを確認するために行を読み直さなければなりません。
書いたほうがいいと思います。
if ((cmd !== 'JustifyLeft') && (cmd !== 'JustifyRight') && (cmd !== 'JustifyCenter') && (cmd !== 'JustifyFull'))
もう少し冗長かもしれませんが、従うのは簡単だと思います。「cmdはJustify-stringのいずれにもならない」と読みました。長いブール式をチェックしてから、答え全体を逆にするのはイライラします。
私はスクラガーの解決策が好きです。長いブール式を反転することについて私の考えを述べたかっただけです。