演習 - if ステートメントからコード ブロックを削除する

完了

ソフトウェア開発者は、読みやすさを犠牲にすることなく、キーストロークと視覚領域を節約するコードを記述できる場合に、それを愛しています。 コードを読みやすく理解しやすくする場合にのみ、開発プロセスで "less is more" という語句を適用します。

コード ブロックに、1 行のコードしか必要ない場合は、中かっこで正式なコード ブロックを定義する必要がない可能性があります。 技術的にはコードを複数の行に分割する必要もありませんが、1 行にステートメントを組み合わせると、コードが読みにくくなる可能性があります。

上記のように中かっこを削除することは、スタイル上の変更であり、コードの機能には影響しないはずです。 ただし、変更がコードの読みやすさに悪影響を及ぼさないことを確認する手順を実行する必要があります。 中かっこと空白を削除した場合の影響を評価し、変更によってコードの読みやすさが低下した場合は、元のコードに戻すことができます。

コード ブロックを使用する if ステートメントの例を作成する

  1. Visual Studio Code で空の Program.cs ファイルが開かれていることを確認します。

    必要であれば、Visual Studio Code を開き、次の手順のようにしてエディターで Program.cs ファイルを準備します。

    1. [ ファイル ] メニューの [ フォルダーを開く] を選択します。

    2. [フォルダーを開く] ダイアログを使用して、 CsharpProjects フォルダーに移動して開きます。

    3. Visual Studio Code のエクスプローラー パネルで、Program.cs を選びます。

    4. Visual Studio Code の [選択] メニューで、[すべて選択] を選択してから Delete キーを押します。

  2. Visual Studio Code エディターに次のコードを入力します。

    bool flag = true;
    if (flag)
    {
        Console.WriteLine(flag);
    }
    
  3. コード ファイルを保存してから、Visual Studio Code を使ってコードを実行してください。

    [ターミナル] のコマンド プロンプトから「dotnet run」と入力して、コードを実行します。

  4. 次の出力が表示されることを確認します。

    True
    

    コードは適切な開始点を表していますが、1 行のコードを含むコード ブロックがあります。 この場合、コード ブロックを定義する必要がありますか?

中括弧を削除する

上記のコードは、 flagtrueされたときにコード ブロックを実行します。 このコード ブロックには 1 行のコードが含まれているので、中かっこを削除することもできます。

  1. Visual Studio Code エディターで次のようにコードを更新してください。

    bool flag = true;
    if (flag)
        Console.WriteLine(flag);
    

    中かっこを削除しても、 Console.WriteLine(flag);if ステートメントのコード ブロックであるという事実は変わりません。

  2. コード ファイルを保存してから、Visual Studio Code を使ってコードを実行してください。

  3. 出力が以前と同じであることに注意してください。

    次の出力が引き続き表示されます。

    True
    

    ただし、コード行は 2 行少なくなります。 最も重要なのは、 if の下のコード行がインデントされた状態で、コードを簡単に読み取り可能にすることです。

単一行形式の if ステートメントの読みやすさを調べる

この手順では、コードの読みやすさが悪影響を受ける可能性があるケースを見てみましょう。

ifステートメントとConsole.WriteLine()メソッド呼び出しの両方が短いため、1 行で組み合わせたくなる可能性があります。 結局のところ、 if ステートメントの C# 構文を使用すると、この方法でステートメントを結合できます。

  1. Visual Studio Code エディターで次のようにコードを更新してください。

    bool flag = true;
    if (flag) Console.WriteLine(flag);
    
  2. コード ファイルを保存してから、Visual Studio Code を使ってコードを実行してください。

  3. 出力がまだ同じであることに注意してください。

  4. コードの読みやすさを考慮するには、少し時間がかかります。

    前述の 2 つのコード サンプルが、より大きなコード セクション内に入れ子になっているとします。 (手順 4 で行ったように) コード ステートメントを組み合わせると、読みにくくなる可能性があります。

    単一ステートメント のコード ブロックを含む if ステートメントを実装する場合は、次の規則を考慮することをお勧めします。

    • 単一行フォームを使用しないでください (例: if (フラグ) Console.WriteLine(flag);
    • 中かっこの使用は常に許可されていますが、if/else if/.../else の複合ステートメントのいずれかのブロックで中かっこが使用されている場合や、1つのステートメント本体が複数行にわたる場合には必須です。
    • 中かっこは、if/else if/.../else 複合ステートメントに関連付けられているすべてのブロックの本文が 1 行に配置されている場合にのみ省略できます。
  5. より大きな if-elseif-else コンストラクトの読みやすさへの影響を調べるには、次のようにコードを更新します。

    string name = "steve";
    if (name == "bob") Console.WriteLine("Found Bob");
    else if (name == "steve") Console.WriteLine("Found Steve");
    else Console.WriteLine("Found Chuck");
    
  6. コード ファイルを保存してから、Visual Studio Code を使ってコードを実行してください。

    コードを実行すると、次の出力が生成されます。

    Found Steve
    

    コードは実行されますが、これらのコード行は高密度で読みにくいです。 ifelse if、およびelseステートメントの後に改行を含むようにコードを再フォーマットできます。

  7. 実行したコードを次のコードと比較します。

    string name = "steve";
    
    if (name == "bob")
        Console.WriteLine("Found Bob");
    else if (name == "steve") 
        Console.WriteLine("Found Steve");
    else
        Console.WriteLine("Found Chuck");
    

    2 番目のコード サンプルを読み取る方がどれだけ簡単であるかに注目してください。

まとめ

ステートメント コード ブロックと読みやすさ if 覚えておくべき重要な点をいくつか次に示します。

  • if-elseif-else ステートメントのコード ブロック内に 1 行のコードしか表示されていない場合は、コード ブロックと空白の中かっこを削除できます。 Microsoft では、if-elseif-else ステートメントのすべてのコード ブロックに対して中かっこを一貫して使用することをお勧めします (一貫して使用するか、削除します)。
  • コードブロックの中かっこを削除するのは、コードが読みやすくなる場合のみです。 中かっこは常に含めることができます。
  • コードを読みやすくする場合にのみ、改行を削除します。 Microsoft は、各ステートメントを独自のコード行に配置すると、コードの読みやすさが高まることを提案しています。