誰都會寫代碼,幾個月經驗就能寫出「可運行的應用程序」。但要以最高效率、最佳結構編寫代碼,則需要長期的學習與實踐。大多數程序員只關注「能跑」,而忽略了「高效」。想成為團隊中最受重視的專業人士?掌握高效編碼藝術,從這份規範開始。
統一的命名風格能大幅提升代碼可讀性,降低維護成本。
// 類名 - PascalCase
public class HelloWorld { ... }
// 方法名 - PascalCase
public void SayHello(string name) { ... }
// 變量與參數 - camelCase
int totalCount = 0;
void SayHello(string name) {
string fullMessage = "Hello " + name;
}
早期習慣用類型前綴(如 m_sName、nAge),但在 .NET 規範中不推薦。所有變量統一使用 camelCase,不加類型或 m_ 前綴。
name、address、salary 代替 nam、addr、sal。i、n、x),改用 index、temp。唯一例外:僅作循環計數且不在循環體外使用的迭代變量,可保留 i。_)作為分隔符。CompanyName.ProductName.TopLevelModule.BottomLevelModule。類 HelloWorld 對應文件 HelloWorld.cs(或 .vb),便於快速定位。
{} 與外層代碼對齊,另起一行(Allman 風格)。if ( showResult == true ) 而非 if(showResult==true)。// 好:名稱即文檔
void SavePhoneNumber(string phoneNumber) { ... }
// 差:需靠註釋解釋
void SaveData(string phoneNumber) { ... }
一個方法只做一件事。將「保存地址」與「發送通知郵件」拆分為兩個獨立方法,而非合併在一個 SaveAddress(address, email) 中。
// 推薦
int age; string name; object contactInfo;
// 不推薦
Int16 age; String name; Object contactInfo;
const 或 readonly 替代固定數值。.resx),便於本地化與維護。共享成員變量會導致狀態難以追蹤;改用局部變量並通過參數傳遞,降低耦合。
enum 表達離散值enum MailType { Html, PlainText, Attachment }
void SendMail(string message, MailType mailType) { ... }
優於字符串判斷 case "Html",編譯期即可檢查類型安全。
成員變量聲明為 private,對外提供 public/protected 屬性(Property),保護內部狀態。
C:\),改用相對路徑或可編程路徑(AppDomain.CurrentDomain.BaseDirectory、Environment.GetFolderPath)。「更新數據庫失敗,請確認登錄 ID 與密碼是否正確」 優於 「應用程序出錯」。catch { } 或 catch { return null; } 會掩蓋錯誤,導致問題永遠無法被發現。FileIOException),而非基類 Exception。Application.ThreadException、AppDomain.UnhandledException),在開發期暴露更多 Bug。ApplicationException,而非 SystemException。遵循這套規範,不僅能寫出「能跑」的代碼,更能產出可維護、可擴展、團隊協作友好的高質量軟件。從今天開始,把每一行代碼都當作給未來的自己(和同事)看的文檔來編寫吧!