ASP.NET 10 個開發更棒程式碼的方法


  1. 說明
    1. 不要使用 #Region
    2. 使用 Exception 來控制程式的錯誤
    3. 避免將 Boolean 當作參數來區隔 Method 的使用
    4. Method 避免過多的參數
    5. 將編譯所發生的 Warning 視為 Error
    6. 將複雜的 Expression 進行封裝
    7. Method 不要有過多的 Return / Exit Point
    8. 少寫 Comment 多用 Summary
    9. 保持 Method 的精簡
    10. 保持 Class 的精簡
  2. 參考資料

筆記 ASP.NET 10 個開發更棒程式碼的方法 🌞

logo

說明

不要使用 #Region

#Region 可以將程式碼收疊,但如果單支程式有需要用到 #Region 則需要反思是否該支程式碼超出單一責任?是否可以拆分為新 Class 以取得更加的維護方式。

使用 Exception 來控制程式的錯誤

相較於 Status Code 以及 Boolean Value,但於非預期的行為應該使用 Throw New Exception 來處理,但不要用 Exception 作為程式流程的控制。

避免將 Boolean 當作參數來區隔 Method 的使用

Boolean 參數會讓人費解對於呼叫 Method的差異所在,更佳的處理方式將原本的 Method 封裝為 Private,提供多個不同名稱表示功能的 Method,並由 Method 去呼叫 Private Method 並加上 Boolean 參數,可以提高程式的可讀性。

public void GoodMorning()
{
  Greeting(true)
}

public void GoodNight()
{
  Greeting(false)
}

private void Greeting(bool morning)
{
  ...
}

Method 避免過多的參數

四個太多,三個參數可以,兩個更棒。

更多的參數會讓可讀性下降,技巧在於利用組合的方式,將物件作為參數傳入 Method。

// ❌
public void Compute(int computeTimes, int cpuNumbers, string text)
{
  ...
}

// ✔️
public void Compute(Command command)
{
  ...
}

將編譯所發生的 Warning 視為 Error

這個是非常積極的處理程式碼方式,藉由設定專案的屬性 / 建置,將警告層級提高,同時也將警告視為錯誤,如此一來就必須要處理完所有的警告才能完成編譯。

但 EntityFramework 部分問題會變得棘手,或許可以考慮改用特定警告的方式來做過濾。

將複雜的 Expression 進行封裝

提高程式可讀性與維護性的方法。

// ❌
if (Emp.Age >= 65 || Emp.Resignation == true || Emp.Productivity == 0)
{
  ...
}

// ✔️
if (Emp.IsQuit)
{
  ...
}

Method 不要有過多的 Return / Exit Point

// ❌
if (...)
{
  return false;
}
else if (...)
{
  return false;
}

// ✔️
var flag = true;

if(...)
{
  flag = false;
}
else if (...)
{
  flag = false;
}

return flag; // Only One Return

少寫 Comment 多用 Summary

註解本身沒有特殊的輔助功能,Summary 則可以讓 Method 有提示,因此註解的使用應以 Summary 為主。此外 Todo、Hack 等等,也可以被 Visual Studio 所使用,應該多使用此類 Meaningful 的註解。

只要輸入三次 slash 就會自動 snippet Summary。

/// <summary>
/// 
/// </summary>
/// <returns></returns>
public void Action()
{

}

保持 Method 的精簡

分割 Method 中的演算邏輯,保持精簡。

保持 Class 的精簡

保持類別的單一責任,根據 Responsibilit Roles 來設計 Class:

  1. Knowing
  2. Deciding
  3. Doing

參考資料

Pluralsight - C# Programming Paradigms