練習 - 從 if 陳述式中移除程式碼區塊

已完成

軟體開發人員撰寫程式碼時,偏好節省按鍵輸入和視覺空間,且不能犧牲可讀性。 只有在開發流程中套用「較少」一詞,才能讓您的流程碼更容易閱讀且更容易理解。

如果程式碼區塊只需要一行程式碼,您就不需要使用大括弧來定義正式程式碼區塊。 雖然從技術上說,您甚至不需要將程式碼分成多行,但將單一行上的語句結合,可能會讓您的程式碼難以閱讀。

移除上述大括弧是一項文體變更,不應影響程式碼的功能。 不過,您應該採取步驟,以確保您的變更不會對程式碼的可讀性造成負面影響。 您可以評估移除大括弧和空白字元的影響,如果您發現變更讓程式碼不那麼易讀,請還原回原始程式碼。

建立使用程式碼區塊的 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 [選取項目] 功能表上,選取 [全部選取],然後按 [刪除] 鍵。

  2. 在 Visual Studio Code 編輯器中輸入下列程式碼:

    bool flag = true;
    if (flag)
    {
        Console.WriteLine(flag);
    }
    
  3. 儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。

    從終端命令提示字元輸入 dotnet run,以執行您的程式碼。

  4. 確認您看到下列輸出:

    True
    

    您的程式碼代表良好的起點,但您有一個包含單行程式碼的程式碼區塊。 在此案例中,定義程式碼區塊是否必要?

移除大括弧

flagtrue 時,上述程式碼會執行程式碼區塊。 由於此程式碼區塊包含單一程式程式碼,因此您可以選擇移除大括弧。

  1. 在 Visual Studio Code 編輯器更新您的程式碼,如下所示:

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

    注意

    移除大括弧並不會變更 if 陳述式的程式碼區塊為 Console.WriteLine(flag); 的事實。

  2. 儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。

  3. 請注意,輸出與先前相同。

    您仍然應該會看到下列輸出:

    True
    

    不過,少了兩行程式碼。 最重要的是,在 if 縮排下方的程式程式碼中,您的程式碼仍然很容易閱讀。

檢查單行型態 if 陳述式的可讀性

在此步驟中,您將探討可能會對程式碼可讀性造成負面影響的情況。

由於 if陳述式和 Console.WriteLine() 的方法呼叫都是簡短的,因此您可能會想要將它們結合在單一行上。 畢竟,if 陳述式的 C# 語法可讓您以這種方式合併陳述式。

  1. 在 Visual Studio Code 編輯器更新您的程式碼,如下所示:

    bool flag = true;
    if (flag) Console.WriteLine(flag);
    
  2. 儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。

  3. 請注意,輸出仍為相同。

  4. 花點時間考慮程式碼可讀性。

    假設前兩個程式碼範例巢狀於較大的程式碼區段內。 結合程式碼語句 (就像您在步驟 4 中所做的一樣),可能會使閱讀變得困難。

    實作包含單一陳述式程式碼區塊的 if 陳述式時,Microsoft 建議您考慮下列慣例:

    • 請勿使用單行表單 (例如:如果 (flag) Console.WriteLine (flag);
    • 一律會接受使用大括弧,如果 if/else 複合陳述式的任何區塊使用大括弧,或單一陳述式主體跨越多行,則為必要項。
    • 只有當每個區塊的主體與 if/else if/.../else 複合陳述式放在單一行時,才能省略大括弧。
  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 ifelse 陳述式後納入分行符號。

  7. 比較您剛才執行的程式碼與下列程式碼:

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

    請注意,讀取第二個程式碼範例要容易得多。

概括回顧

以下是關於 if 陳述式程式碼區塊和可讀性的一些重要事項:

  • 如果您意識到 if-elseif-else 陳述式的程式碼區塊中只列出一行程式碼,您可以移除程式碼區塊的大括弧和空白字元。 Microsoft 建議將大括弧一致地用於 if-elseif-else 陳述式的所有程式碼區塊 (存在或一致移除)。
  • 只有在程式碼區塊讓程式碼更容易閱讀時,才移除大括弧。 一律可以接受包含大括弧。
  • 移除換行字元的唯一目的,是要讓程式碼更容易閱讀。 Microsoft 建議當每個陳述式放在自己的程式程式碼時,您的程式碼將會更容易閱讀。