在 ERP 系統開發中,將通用邏輯提取至共享類庫可減少重複、提高復用。但「過度封裝」反而會增加理解成本、降低維護效率。本文通過具體案例探討如何把握封裝度。
public class ConfigHelper
{
// 判斷路徑合法性,邏輯非簡單,封裝合理
static public bool IsValidPath(string path)
{
Regex r = new Regex(@"^(([a-zA-Z]:)|(\\))(\{1}|((\{1})[^\]([^/:*?<>""|]*))+)$");
return r.IsMatch(path);
}
// 僅一行調用框架方法,封裝屬過度
public static string GetString(string key)
{
return System.Configuration.ConfigurationManager.AppSettings[key];
}
}
GetString 僅轉調框架 API,無額外邏輯(如異常處理、默認值、緩存)。調用方直接用 ConfigurationManager.AppSettings[key] 更直觀,封裝反而引入間接層,增加認知負擔。
public static decimal GetDecimal(string key)
{
decimal value = default(decimal);
if (decimal.TryParse(GetString(key), out value))
return value;
else
return 0m;
}
此方法將「讀取配置 → 嘗試轉換 → 失敗返回默認值」封裝為單一操作。若系統大量需要「帶默認值的數值配置讀取」,該封裝消除重複邏輯,屬合理;若僅偶爾使用,則屬過度設計。
GetDecimalWithDefault vs TryParse)。