ArgumentException 衍生型別Debug.Assert 驗證前置條件(如「j 必為正數」),取代註解finally 區塊包裝必須執行的清理邏輯(string message) 與 (string, Exception inner) 建構子[Serializable] 並實作 ISerializable(跨 AppDomain/遠端需求)private 建構子struct(值型別)internalLazy<T> 初始化abstract;不應被覆寫的類別/方法標記 sealedoverride 關鍵字(防止簽名錯誤)IDisposable 模式(Dispose(bool) + 終結器)釋放非託管資源using 區塊確保 IDisposable 物件確定性釋放as + null 檢查,避免 InvalidCastExceptionToString() 供診斷輸出,勿另寫 Dump()Equals 時:GetHashCode(語意一致、利用成員變數、回傳不變雜湊碼)==/!=,內部轉呼叫 Equalsvoid,避免 out/ref 參數sender 為第一參數,EventArgs 衍生類唯讀event 關鍵字發布委派,防止外部直接觸發lock 取代 Monitor.Enter/Exit(語法糖含 try/finally)Monitor.Pulse/PulseAll 或事件,禁用 Thread.Sleep 忙等待double(如 1.0 而非 1),避免隱性整數除法[Serializable] 並有預設建構子(含 Exception/EventArgs 衍生類)ISerializable 需同時提供 GetObjectData 與 (SerializationInfo, StreamingContext) 建構子[SetUp]/[TearDown][ExpectedException] 驗證異常拋出public 類別/方法採 XML 文件註解(///),<summary> 描述「做什麼」,<remarks> 或行內註解說明「怎麼做」Console.WriteLineforeach 優於 for(int i...);屬性取代 Getter/Setter 方法readonly)優於無 setter 的屬性將此清單整合至 PR 模板或靜態分析規則集,逐項核對可攔截 80% 以上常見缺陷。團隊可依專案屬性裁剪(如無序列化需求可移除相關項),但核心原則——顯式優於隱式、失敗快速、資源確定性釋放——應貫穿始終。