問題タブ [if-statement]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
language-agnostic - 膨大な if 条件をどのように処理しますか?
これは、私が使用したすべての言語で私を悩ませているものです。if ステートメントがありますが、条件部分に非常に多くのチェックがあるため、複数の行に分割するか、ネストされた if ステートメントを使用するか、それが醜いことを受け入れて先に進む必要があります私の人生と。
私や同じ問題に遭遇した他の誰かに役立つ可能性がある、あなたが見つけた他の方法はありますか?
例、すべて 1 行で:
例、複数行:
ネストされた例:
vb.net - IIf()とIfのパフォーマンスの違い
Visual Basicで、ステートメントIIf
の代わりに関数を使用した場合、パフォーマンスに違いはありますか?If
.net - If、IIf()、If()
最近、 IIf と Ifについて質問したところ、VB にはIfと呼ばれる別の関数があり、基本的にIIfと同じことを行いますが、ショート サーキットであることがわかりました。
このIf関数はIIf関数よりも優れたパフォーマンスを発揮しますか? IfステートメントはIfおよびIIf関数よりも優先されますか?
c# - SQL 'in' キーワードに似た C# の省略形の条件
C# では、これを簡単に記述する方法があります。
お気に入り:
switch も使用できることはわかっていますが、おそらく 50 ほどの関数を記述しなければならない (従来の ASP サイトを ASP.NET に移植する) 必要があるため、できるだけ短くしたいと思います。
sql - SQL SELECT で IF...THEN を実行するにはどうすればよいですか?
ステートメントで を実行するIF...THEN
にはどうすればよいですか?SQL SELECT
例えば:
c - if ステートメントのフォーマット
これは聖戦ではなく、「どちらが優れている」という問題でもありません。
単一ステートメントの if ブロックに次の形式を使用する利点は何ですか。
とは対照的に
単一ステートメントの if 文を角かっこなしでフォーマットする場合、またはそうするプログラマーを知っている場合、最初にこのスタイルを採用した理由は何ですか? これがあなたにどのような利益をもたらしたかに特に興味があります。
更新:最も一般的な回答は実際の質問を無視しているため(たとえそれが最も正気なアドバイスを提示していたとしても)、ここに括弧のない長所のまとめがあります.
- コンパクトさ
- 一部の人にとってより読みやすい
- ブラケットはスコープを呼び出します。これには、場合によっては理論的なオーバーヘッドがあります
c++ - if-else ステートメントの切り替えの利点
ステートメントswitch
を使用する場合とステートメントを使用する場合のベスト プラクティスは何ですか? パフォーマンスとスペースを考慮する必要がありますが、重要ではありません。私はスニペットを抽象化したので、命名規則について私を嫌わないでください.if
unsigned
switch
声明:
if
声明:
if-statement - Arrow Anti-Pattern のリファクタリングのアイデアが必要
モンスターを受け継いだ。
これは、.NET 1.1 アプリケーションが Healthcare Claim Payment (ANSI 835) 標準に準拠するテキスト ファイルを処理するように見せかけていますが、怪物です。処理される情報は、医療請求、EOB、および償還に関連しています。これらのファイルは、最初の数桁に識別子を持つレコードと、そのタイプのレコードの仕様に従ってフォーマットされたデータ フィールドで構成されます。一部のレコード ID は、特定のタイプのトランザクションに関連するレコードのグループを区切る制御セグメント ID です。
ファイルを処理するために、私の小さな怪物は最初のレコードを読み取り、これから行われるトランザクションの種類を判断し、現在処理しているトランザクションの種類に基づいて他のレコードの処理を開始します。これを行うには、ネストされた if を使用します。多数のレコード タイプがあるため、いくつかの決定を下す必要があります。各決定には、いくつかの処理と、以前の決定に基づいて行う必要がある 2 ~ 3 のその他の決定が含まれます。つまり、ネストされた if には多くのネストがあります。そこに私の問題があります。
この入れ子になった if の長さは 715 行です。はい、そうです。七百五十行。私はコード分析の専門家ではないので、フリーウェアの分析ツールをいくつかダウンロードし、McCabe の Cyclomatic Complexity 評価で 49 という結果になりました。彼らは、これはかなり高い数値だと言っています。100 が高い基準であるアトランタ地域の花粉数のように高く、ニュースは「今日の花粉数は 1,523 です」と言っています。これは、私が今までに見た中で最高の矢印アンチパターンの例の 1 つです。インデントは最大で 15 タブの深さになります。
私の質問は、そのようなものをリファクタリングまたは再構築するためにどのような方法を提案しますか?
アイデアを探すのにしばらく時間を費やしましたが、良い足がかりが得られませんでした。たとえば、レベルをガード条件に置き換えることも方法の 1 つです。私はそれらのうちの1つだけを持っています。巣が 1 つ落ちて、残りは 14 です。
参考になるデザインパターンがあるかもしれません。コマンド チェーンはこれにアプローチする方法でしょうか? .NET 1.1 のままにしておく必要があることに注意してください。
ありとあらゆるアイデアをありがとう。
c++ - #ifdef と #if - コードの特定のセクションのコンパイルを有効/無効にする方法として、どちらが優れている/安全ですか?
これはスタイルの問題かもしれませんが、私たちの開発チームには少し意見が分かれており、他の誰かがこの問題についてアイデアを持っているかどうか疑問に思っていました...
基本的に、通常の開発中にオフにするデバッグ印刷ステートメントがいくつかあります。個人的には、次のことを行うことを好みます。
ただし、一部のチームは次のことを好みます。
...これらの方法のどれがあなたにとってより良いと思われますか?またその理由は? 常に何かが定義されており、他の定義を破壊する危険がないため、最初の方が安全であると私は感じています。
c++ - 長所/短所: 条件文で変数を初期化する
C++ では、次のように if ステートメントで変数を初期化できます。
なぜこのスタイルが悪い、または良いと考えるのでしょうか? 利点と欠点は何ですか?
pThing 変数のスコープを制限し、NULL のときに誤って使用されることがないため、個人的にはこのスタイルが気に入っています。ただし、これができないのは好きではありません。
上記の作業を行う方法があれば、投稿してください。しかし、それが不可能な場合でも、その理由を知りたいです。