本篇文章介紹 Region 的使用方式,與不使用 Region 分隔程式的理由。(本文於 2022/11/23 從自己的鐵人賽文章更新)
Region 是什麼,使用的理由
可以使用 #region
和 #endregion
來包圍程式碼區域。
#region
// 加入你的程式碼
#endregion
#region
後方也可以加入一段文字作為標籤。
包圍以後,左方就有 + 或 - 按鈕可以摺疊程式碼,可以增加整體程式碼的可讀性,也能瞭解這段程式碼的大致用途。
StackExchange 上的回答,不使用的理由
- 以下大略翻譯連結內的答案: c# - Why are people so strongly opposed to #region tags in methods? - Software Engineering Stack Exchange
- 你可以單獨測試一個方法,但是不能單獨測試一個 Region。
- Region 和原本的語法可能會互相衝突 (例如
region
插入在if
前面,endregion
插入在if
內。)。 - 遇到沒有程式碼折疊的編輯器時,只能看到一大串又臭又長的程式碼。因此在寫程式碼時,應時常改寫,將程式碼分隔開來。
- 重構方法以後,方法至少會和使用 Region 分隔的結果一樣好。
- SOLID 原則中的單一職責原則,建議一個模組 (方法、類別 …) 只應該負責一件事。(這應該是要求撰寫邏輯時就實行此原則,而非用 Region 處理)
其它
- 實務上,仍能看到不少程式碼用 region 來分隔程式,還會順便當註解用。是否要使用,應該也要一併考慮團隊的程式編寫風格。 (個人觀察)
- 可考慮使用類別等模組來代替 Region,來自 C# Region and endregion - Dot Net Perls。