練習 - 從 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);
    

    備註

    移除大括弧並不會改變 Console.WriteLine(flag);if 語句的程式碼區塊這一事實。

  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 建議您考慮下列慣例:

    • 請勿使用單行格式(例如:if (flag) Console.WriteLine(flag);
    • 使用大括弧是總被接受的,如果 if/else 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建議當每個語句放在自己的程式代碼行時,您的程式代碼將會更容易閱讀。