-3

だから私は過去 5 年間 JavaScript で書いていて、すべて独学です。ますます多くのプログラマーに会うにつれて、私が遭遇した1つの問題。いつも最善の方法でコーディングしているとは限りません。

私は、JS で 1 行の if ステートメントをプログラムする最良の方法を見つけようとしています。私は可読性を気にしませんし、プロジェクトはオープンソースではないので、他の人が追加することを心配していません.

ステートメントの通常の書き方

condition = true;
if (condition)
  runFunction();
else
  runSecondFunction();

しかし、私は誰もがブラケットを使用するように私に言い続けていることを発見しました. 彼らは常に次の行もスローするため、私はこれを書き留めています。「読みやすくなります」

condition = true;
if (condition) {
  runFunction();
}else{
  runSecondFunction();
}

そして最後に、次のように C# で記述した方法とより厳密に一致するように if ステートメントを記述する必要があると最終的に誰かが私に言いました。

condition = true;
if (condition) 
{
  runFunction();
}
else
{
  runSecondFunction();
}

もちろん省略形もありますが、私は通常、このような変数の切り替えにのみ使用します

condition = true;
(condition) ? condition = false : condition = true;

ただし、通常の if ステートメントにも短縮形を使用した方がよいでしょうか。例えば:

condition = true;
(condition) ? runFunction() : runSecondFunction();

だから質問は

JavaScript の 1 行を記述する多くの方法の中で、最速で実行するようにプログラムする最良の方法です。読みやすさは気にしませんので、読みやすいからこう書いたほうがいいとか、ああいう書き方がいいとか言わないでください。ある方法が別の方法よりも速い、または遅い理由の例も挙げてください。

明確にする

読みやすさを気にしないということではありませんが、if ステートメントはどれも私にとって読みにくいものではなく、すべてのバージョンで意味をなすものです。ですから、読みにくいと思う人がいるかもしれませんが、私はそうではないかもしれません。これが私の次のポイントにつながります。これらはどれも私にとって読みにくいものではないため、JS がそれを処理するための最良の方法で書く必要があるかもしれません。

たとえば、JSの実行に時間がかかることがわかりました

counter++;

それならそうする

counter = counter + 1;

したがって、最後に明確にするために、これらのいずれを読んでも問題はありません。JSが処理するのに最適なものを知りたいだけです。

4

4 に答える 4

3

いくつかの jsperf テストを見てください。

それらはすべて比較的等しいように見えます (私が実行したばかりのテストでブール値のバージョンが遅いことを除けば)、私はあなたが一番好きなものを選びます.

于 2013-02-12T14:54:52.977 に答える
1

あなたの速記は短くすることができます:

それ以外の:

(condition) ? condition = false : condition = true;

試す:

condition = condition ? false : true;
var a = condition ? 'conditionTrueValue' : 'conditionFalseValue';
// Or in this case, since you're just toggling the boolean:
condition = !condition;

それ以外の:

(condition) ? runFunction() : runSecondFunction();

次のようにいくつかの文字を保存できます。

(condition ? runFunction : runSecondFunction)();

現在、これに関するパフォーマンスの違いは、たとえあったとしても、取るに足らないものになるでしょう。

コードを読みやすくします。1 年以内に自分のコードに戻らなければならない場合は、そうしてよかったと思うでしょう。

于 2013-02-12T14:46:03.250 に答える
0

私は通常、すべての中かっこを別の行に入れるという慣習に悩まされます。さらに、それらがまったく使用されていないときは好きではありません。

ちなみにこれは私です。

condition = true;
if (condition) {
  runFunction();
}
else {
  runSecondFunction();
}

質問が 3 項に関するものである場合、条件または結果に関数が関与しない場合にのみ使用すると言わざるを得ません。

result = (number == 521 : "equal to 521" : "some other number");

私は自分のコードの読みやすさに気を配っています。重要なのは、何千行ものコードを含むファイルが非常によく似ている場合です。コードが読めない場合、コードをデバッグまたはアップグレードするのは困難です。

于 2013-02-12T14:45:22.427 に答える
0

読みやすさ/保守性を「本当に」気にしない場合は、最も快適に感じる方法で記述してください。

私のプログラミング経験から、中括弧の使用を人々が推奨する理由は、実際には保守性のためです。誰かが if ステートメントのコード ブロックを追加する必要がある場合、1 つの引数は、一度入力すれば覚える必要がないということです。単一のステートメントではなくコードのブロックが必要な場合に挿入します。

以下のフォームを使用することをお勧めします。Javascript には (メモリから) 中かっこを使用した癖があり、クロージャー/関数の概念に関係していると思われます) 特定のコードは実行されません。壊れたコードをデバッグしているときに驚いて読んだのですが、それはずっと前のことです。

if (expression) {
}

ifパフォーマンス要因に関しては、ステートメントの書き方ではなく、実行されるロジックとコードに関係していると思います。

于 2013-02-12T14:48:21.357 に答える