首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

.NET 開發實戰守則 22 條:從單例模式到資源管理的避坑指南

     編輯:關於C#

核心開發守則

  1. 解構函式勿關閉資料連線:GC 呼叫時機不確定,請用 using 或 try/finally 顯式釋放。
  2. 慎用複雜列表控制項:GridView、DataGrid ViewState 巨大,依需求自訂繼承 IDataBoundControl 的輕量控制項。
  3. 雙重檢查鎖定單例模式:
    
    public sealed class Singleton {
        private static volatile Singleton _instance;
        private static readonly object _sync = new object();
        private Singleton() { }
        public static Singleton Instance {
            get {
                if (_instance == null) {
                    lock (_sync) {
                        if (_instance == null) _instance = new Singleton();
                    }
                }
                return _instance;
            }
        }
    }
    
  4. 同一 Connection 重複執行命令需注意:未關閉前一個 SqlDataReader 即重用 SqlCommand 會導致例外,請確保 reader.Close() 或使用 MARS (MultipleActiveResultSets=True)。
  5. 善用系統預存程序:sp_help、sp_helptext、sp_depends 等快速查詢中繼資料。
  6. Identity 欄位重置:
    
    DBCC CHECKIDENT ('MyTable', RESEED, 0); -- 下一筆從 1 開始
    
  7. NullReferenceException 常見成因:Session 遺失、未檢查 null 即存取成員、ViewState 遺失。防禦性編程:obj?.Prop、?? 運算子。
  8. ViewState 膨脹:無需回傳資料的控制項設 EnableViewState="false"。
  9. 例外處理層級:捕獲具體例外(FileNotFoundException),避免吞噬 Exception;自訂例外繼承 ApplicationException 而非 Exception。
  10. 字串比較:== 與 Equals 行為不同(參考 vs 值),字串建議用 string.Equals(a, b, StringComparison.OrdinalIgnoreCase)。
  11. Session 清理:Session.Remove(key) 移除單一鍵,Session.Abandon() 棄用整個 Session。
  12. 養成 try/catch/finally 習慣:finally 確保資源釋放。
  13. 分層架構:資料層、業務層、表現層分離,降低耦合。
  14. 變數初始化:宣告即賦值,避免 CS0165 未指派錯誤。
  15. 正則表達式效能:Regex 編譯與匹配較慢,熱路徑改用 string.Contains、Span 解析或預編譯 RegexOptions.Compiled。
  16. DataFormatString 格式化:DataFormatString="Detail.aspx?id={0}" 直接在繫結欄位格式化 URL。
  17. 預存程序參數長度:varchar 長度不足導致截斷錯誤,檢查 DECLARE @p varchar(100) 是否足夠。
  18. 強制終止程序:ntsd -c q -p <PID>(需 Debugging Tools for Windows)。
  19. 資料庫記錄檔壓縮:
    
    BACKUP LOG [DB] WITH NO_LOG;
    DBCC SHRINKDATABASE([DB]);
    ALTER DATABASE [DB] SET AUTO_SHRINK ON;
    
  20. Double 驗證正則:^([0-9]+)(\.[0-9]+)?([Ee][-+]?[0-9]+)?$
  21. XML 檔案快取:頻繁讀取的 XML 載入 MemoryCache 或 HttpRuntime.Cache,避免磁碟 I/O。
  22. Reader 必須 Close:XmlReader、SqlDataReader 皆實作 IDisposable,請用 using。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved