程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 高質量代碼方法

高質量代碼方法

編輯:C#入門知識

第1章 基本語言要素 1:正確操作字符串 / 2 2:使用默認轉型方法 / 6 3:區別對待強制轉型與as和is / 9 4:TryParse比Parse好 / 12 5:使用int?來確保值類型也可以為null / 15 6:區別readonly和const的使用方法 / 16 7:將0值作為枚舉的默認值 / 19 8:避免給枚舉類型的元素提供顯式的值 / 20 9:習慣重載運算符 / 22 10:創建對象時需要考慮是否實現比較器 / 23 11:區別對待==和Equals / 27 12:重寫Equals時也要重寫GetHashCode / 29 13:為類型輸出格式化字符串 / 32 14:正確實現淺拷貝和深拷貝 / 36 15:使用dynamic來簡化反射實現 / 40 第2章 集合和LINQ / 43 16:元素數量可變的情況下不應使用數組 / 43 17:多數情況下使用foreach進行循環遍歷 / 45 18:foreach不能代替for / 51 19:使用更有效的對象和集合初始化 / 53 20:使用泛型集合代替非泛型集合 / 54 21:選擇正確的集合 / 57 22:確保集合的線程安全 / 61 23:避免將List<T>作為自定義集合類的基類 / 64 24:迭代器應該是只讀的 / 67 25:謹慎集合屬性的可寫操作 / 68 26:使用匿名類型存儲LINQ查詢結果 / 70 27:在查詢中使用Lambda表達式 / 73 28:理解延遲求值和主動求值之間的區別 / 75 29:區別LINQ查詢中的IEnumerable<T>和IQueryable<T> / 78 30:使用LINQ取代集合中的比較器和迭代器 / 80 31:在LINQ查詢中避免不必要的迭代 / 83 第3章 泛型、委托和事件 / 86 32:總是優先考慮泛型 / 86 33:避免在泛型類型中聲明靜態成員 / 88 34:為泛型參數設定約束 / 90 35:使用default為泛型類型變量指定初始值 / 92 36:使用FCL中的委托聲明 / 94 37:使用Lambda表達式代替方法和匿名方法 / 96 38:小心閉包中的陷阱 / 99 39:了解委托的實質 / 103 40:使用event關鍵字為委托施加保護 / 106 41:實現標准的事件模型 / 108 42:使用泛型參數兼容泛型接口的不可變性 / 109 43:讓接口中的泛型參數支持協變 / 111 44:理解委托中的協變 / 112 45:為泛型類型參數指定逆變 / 114 第4章 資源管理和序列化 / 116 46:顯式釋放資源需繼承接口IDisposable / 116 47:即使提供了顯式釋放方法,也應該在終結器中提供隱式清理 / 119 48:Dispose方法應允許被多次調用 / 120 49:在Dispose模式中應提取一個受保護的虛方法 / 121 50:在Dispose模式中應區別對待托管資源和非托管資源 / 123 51:具有可釋放字段的類型或擁有本機資源的類型應該是可釋放的 / 124 52:及時釋放資源 / 125 53:必要時應將不再使用的對象引用賦值為null / 127 54:為無用字段標注不可序列化 / 131 55:利用定制特性減少可序列化的字段 / 136 56:使用繼承ISerializable接口更靈活地控制序列化過程 / 137 57:實現ISerializable的子類型應負責父類的序列化 / 140 第5章 異常與自定義異常 / 144 58:用拋出異常代替返回錯誤代碼 / 144 59:不要在不恰當的場合下引發異常 / 147 60:重新引發異常時使用Inner Exception  / 150 61:避免在finally內撰寫無效代碼 / 151 62:避免嵌套異常 / 157 63:避免“吃掉”異常 / 160 64:為循環增加Tester-Doer模式而不是將try-catch置於循環內 / 161 65:總是處理未捕獲的異常 / 162 66:正確捕獲多線程中的異常 / 166 67:慎用自定義異常 / 168 68:從System.Exception或其他常見的基本異常中派生異常 / 170 69:應使用finally避免資源洩漏 / 172 70:避免在調用棧較低的位置記錄異常 / 175 第6章 異步、多線程、任務和並行 / 177 71:區分異步和多線程應用場景 / 177 72:在線程同步中使用信號量 / 180 73:避免鎖定不恰當的同步對象 / 184 74:警惕線程的IsBackground / 188 75:警惕線程不會立即啟動 / 189 76:警惕線程的優先級 / 191 77:正確停止線程 / 193 78:應避免線程數量過多 / 194 79:使用ThreadPool或BackgroundWorker代替Thread / 196 80:用Task代替ThreadPool / 198 81:使用Parallel簡化同步狀態下Task的使用 / 202 82:Parallel簡化但不等同於Task默認行為 / 204 83:小心Parallel中的陷阱 / 205 84:使用PLINQ / 208 85:Task中的異常處理 / 209 86:Parallel中的異常處理 / 214 87:區分WPF和WinForm的線程模型 / 216 88:並行並不總是速度更快 / 220 89:在並行方法體中謹慎使用鎖 / 222 第二部分 架構篇 第7章 成員設計 / 226 90:不要為抽象類提供公開的構造方法 / 226 91:可見字段應該重構為屬性 / 226 92:謹慎將數組或集合作為屬性 / 227 93:構造方法應初始化主要屬性和字段 / 228 94:區別對待override和new / 229 95:避免在構造方法中調用虛成員 / 235 96:成員應優先考慮公開基類型或接口 / 236 97:優先考慮將基類型或接口作為參數傳遞 / 237 98:用params減少重復參數 / 237 99:重寫時不應使用子類參數 / 238 100:靜態方法和實例方法沒有區別 / 239 101:使用擴展方法,向現有類型“添加”方法 / 240 第8章 類型設計 / 243 102:區分接口和抽象類的應用場合 / 243 103:區分組合和繼承的應用場合 / 245 104:用多態代替條件語句 / 248 105:使用私有構造函數強化單例 / 251 106:為靜態類添加靜態構造函數 / 253 107:區分靜態類和單例 / 255 108:將類型標識為sealed / 255 109:謹慎使用嵌套類 / 256 110:用類來代替enum / 257 111:避免雙向耦合 / 260 112:將現實世界中的對象抽象為類,將可復用對象圈起來就是命名空間 / 262 第9章 安全性設計 / 264 113:聲明變量前考慮最大值 / 264 114:MD5不再安全 / 265 115:通過HASH來驗證文件是否被篡改 / 268 116:避免用非對稱算法加密文件 / 269 117:使用SSL確保通信中的數據安全 / 273 118:使用SecureString保存密鑰等機密字符串 / 284 119:不要使用自己的加密算法 / 289 120:為程序集指定強名稱 / 289 121:為應用程序設定運行權限 / 291 第三部分 編碼規范及習慣 第10章 命名規范 / 296 122:以<Company>.<Component>為命名空間命名 / 296 123:程序集不必與命名空間同名 / 296 124:考慮在命名空間中使用復數 / 297 125:避免用FCL的類型名稱命名自己的類型 /  / 297 126:用名詞和名詞組給類型命名 / 298 127:用形容詞組給接口命名 / 299 128:考慮讓派生類的名字以基類名字作為後綴 / 300 129:泛型類型參數要以T作為前綴 / 300 130:以復數命名枚舉類型,以單數命名枚舉元素 / 301 131:用PascalCasing命名公開元素 / 302 132:考慮用類名作為屬性名 / 302 133:用camelCasing命名私有字段和局部變量  / 303 134:有條件地使用前綴  / 304 135: 考慮使用肯定性的短語命名布爾屬性 / 305 136:優先使用後綴表示已有類型的新版本 / 306 137:委托和事件類型應添加上級後綴 / 307 138:事件和委托變量使用動詞或形容詞短語命名 / 308 139:事件處理器命名采用組合方式 / 309 第11章 代碼整潔 / 311 140:使用默認的訪問修飾符 / 311 141:不知道該不該用大括號時,就用 / 312 142:總是提供有意義的命名 / 314 143:方法抽象級別應在同一層次 / 315 144:一個方法只做一件事 / 316 145:避免過長的方法和過長的類 / 317 146:只對外公布必要的操作 / 318 147:重構多個相關屬性為一個類 / 319 148:不重復代碼 / 320 149:使用表驅動法避免過長的if和switch分支 / 321 150:使用匿名方法、Lambda表達式代替方法 / 324 151:使用事件訪問器替換公開的事件成員變量  / 325 152:最少,甚至是不要注釋 / 326 153:若拋出異常,則必須要注釋 / 326 第12章 規范開發行為 / 327 154:不要過度設計,在敏捷中體會重構的樂趣 / 327 155:隨生產代碼一起提交單元測試代碼 / 336 156:利用特性為應用程序提供多個版本 / 342 157:從寫第一個界面開始,就進行自動化測試  / 344

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved