練習 - 從 if 語句中移除程式代碼區塊
當軟體開發人員可以撰寫可節省擊鍵和視覺空間的程式代碼,而不犧牲可讀性時,就會喜歡它。 只有當「少即是多」這個概念能讓你的程式碼更容易閱讀和理解時,才在開發過程中加以應用。
如果程式代碼區塊只需要一行程式代碼,您就不需要使用大括弧來定義正式程式代碼區塊。 雖然從技術上說,您甚至不需要將程式代碼分成多行,但將單一行上的語句結合,可能會讓您的程式代碼難以閱讀。
移除上述大括弧是一項文體變更,不應影響程式碼的功能。 不過,您應該採取步驟,以確保您的變更不會對程式代碼的可讀性造成負面影響。 您可以評估移除大括號和空格符的影響,如果您發現變更讓程式代碼不那麼易讀,請還原回原始程序代碼。
建立使用程式代碼區塊的 if 語句範例
請確定您已在 Visual Studio Code 中開啟空的 Program.cs 檔案。
如有必要,請開啟 Visual Studio Code,然後完成下列步驟,以在編輯器中備妥 Program.cs 檔案:
在 [檔案] 功能表上,選取 [開啟資料夾]。
使用 [開啟資料夾] 對話框瀏覽至 CsharpProjects 資料夾,然後開啟。
在 Visual Studio Code 的 [總管] 窗格中,選取 [Program.cs]。
在 Visual Studio Code [選取項目] 功能表上,選取 [全部選取],然後按 [刪除] 鍵。
在 Visual Studio Code 編輯器中輸入下列程式碼:
bool flag = true; if (flag) { Console.WriteLine(flag); }儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。
從終端命令提示字元輸入
dotnet run,以執行您的程式碼。確認您看到下列輸出:
True您的程式代碼代表良好的起點,但您有一個包含單行程式代碼的程式代碼區塊。 在此情況下,是否定義必要的程式碼區塊?
拿掉大括弧
當 flag 是 true 時,上述程式碼會執行一個程式碼區塊。 由於此程式代碼區塊包含單一程式代碼行,因此您可以選擇移除大括弧。
在 Visual Studio Code 編輯器更新您的程式碼,如下所示:
bool flag = true; if (flag) Console.WriteLine(flag);備註
移除大括弧並不會改變
Console.WriteLine(flag);是if語句的程式碼區塊這一事實。儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。
請注意,輸出與之前相同。
您仍然應該會看到下列輸出:
True不過,這裡的程式碼少了兩行。 最重要的是,在
if標籤下進行縮排後,程式碼行仍然很容易閱讀。
檢查單行格式的 if 陳述式的可讀性
在此步驟中,您將探討可能會對程式代碼可讀性造成負面影響的情況。
if語句和方法呼叫Console.WriteLine()都很簡短,因此您可能會想將它們結合在同一行上。 畢竟,語句的 if C# 語法可讓您以這種方式合併 語句。
在 Visual Studio Code 編輯器更新您的程式碼,如下所示:
bool flag = true; if (flag) Console.WriteLine(flag);儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。
請注意,輸出仍然相同。
花一分鐘時間考慮程式代碼可讀性。
假設前兩個程式代碼範例巢狀於較大的程式代碼區段內。 結合程式代碼語句(就像您在步驟 4 中所做的一樣),可能會使閱讀變得困難。
實作包含單一語句的
if程式碼區塊時,Microsoft 建議您考慮下列慣例:- 請勿使用單行格式(例如:if (flag) Console.WriteLine(flag);
- 使用大括弧是總被接受的,如果 if/else if/.../else 複合語句中的任何區塊使用大括弧,或單一語句的主體跨越多行時,則為必要項。
- 只有當每個區塊的主體與 if/else if/.../else 複合陳述式放在單一行時,才能省略大括弧。
若要檢查較大 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");儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。
當您執行程式代碼時,它應該會產生下列輸出:
Found Steve程式代碼會執行,但這些程式代碼行密集且難以讀取。 您可能想要重新格式化程式碼,在
if、else if和else語句後面加入換行符。比較您剛才執行的程式代碼與下列程式代碼:
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建議當每個語句放在自己的程式代碼行時,您的程式代碼將會更容易閱讀。