編寫高質量代碼改善C#程序的157個建議

編寫高質量代碼改善C#程序的157個建議
定價:354
NT $ 308
  • 作者:陸敏技
  • 出版社:機械工業出版社
  • 出版日期:2011-10-01
  • 語言:簡體中文
  • ISBN10:7111356497
  • ISBN13:9787111356493
  • 裝訂:347頁 / 普通級 / 初版
 

內容簡介

本書是C#程序員進階修煉的必讀之作,包含的全部都是C#編碼的最佳實踐,從語言本身、程序的設計和架構、編碼規范和編程習慣等三大方面對C#程序員遇到的經典問題給出了經驗性的解決方案,為C#程序員如何編寫更高質量的C#代碼提供了157條極為寶貴的建議。對於每一個問題,不僅以建議的方式給出了被實踐證明為十分優秀的解決方案,而且還給出了經常被誤用或被錯誤理解的不好的解決方案,從正反兩個方面進行了分析和對比。

全書一共三個部分,第一部分專注於C#語言本身,一共89條建議,涵蓋了C#語言基本要素、集合、LINQ、泛型、委托、事件、資源管理、序列化、異常處理、異步、多線程、任務和並行編程等與C#語法相關的核心內容;第二部分重點講解了C#程序的設計和架構,一共32條建議,涉及成員設計、面向對象的類型設計、安全性設計等重要方面的內容;第三部分探討了C#的編碼規范及編程習慣,一共36條建議,包含C#命名規范、如何使代碼更整潔以及如何規范開發行為等方面的內容。

本書是一本關於如何編寫高質量C#代碼的工具書,列舉的問題非常典型,給出的建議也非常實用,其中的每一條建議都有可能在我們編寫下一行代碼的時候被用到。你可以將此書擱置在案頭,以便有需要的時候隨時查閱。
 

目錄

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