出版社:機械工業出版社 ISBN:9787111703624 商品編碼:10050703468780 包裝:平裝 開本:16開 出版時間:2022-04-21 頁數:352 代碼:119 作者:詹森·奧爾斯
"商品參數
書名:C#代碼整潔之道:代碼重構與性能提升 代碼:19.00 出版社:機械工業出版社 作者:[英]詹森·奧爾斯(Jason?Alls) ISBN編碼:9787111703624
內容簡介
本書介紹如何使用各種工具、模式和方法將可讀性、可維護性與可擴展性均不盡人意的代碼重構為整潔的代碼。首先介紹C#的編碼標準和原則,然後詳細討論代碼評審的過程並說明其重要性。接著介紹類、對像與數據結構以及函數式編程的基礎知識。之後介紹異常處測試、端到端繫統測試、線程與並發、API的設計與開發、API密鑰與API安全、處理切面關注點等C#相關知識。結尾介紹一繫列工具來提升代碼質量,並介紹重構C#代碼的方法。
目錄
前言 關於作者 關於審校者 第1章C#的編碼標準和原則??1 1.1技術要求??2 1.2良好的代碼與劣質的代碼??2 1.2.1劣質的代碼??3 1.2.2良好的代碼??14 1.3編碼標準、原則和方法的必要性??18 1.3.1編碼標準??19 1.3.2編碼原則??19 1.3.3編碼方法??19 1.3.4編碼規則??20 1.3.5模塊化??20 1.3.6KISS原則??20 1.3.7YAGNI原則??21 1.3.8DRY原則??21 1.3.9SOLID原則??21 1.3.10奧卡姆剃刀法則??22 1.4總結??22 1.5習題??22 1.6參考資料??23 第2章代碼評審—過程及其重要性??24 2.1代碼評審流程??25 2.2準備代碼評審??25 2.3引導代碼評審??26 2.3.1創建pull?request??27 2.3.2響應pull?request??28 2.3.3反饋對被評審人的影響??30 2.4確定評審內容??33 2.4.1公司編碼規範與業務需求??34 2.4.2命名規則??34 2.4.3代碼格式??34 2.4.4測試??35 2.4.5架構規範和設計模式??35 2.4.6性能和安全性??36 2.5何時發起代碼評審??36 2.6提供並回應評審反饋??37 2.6.1評審人提供反饋意見??38 2.6.2被評審人回應反饋??38 2.7總結??39 2.8習題??39 2.9參考資料??40 第3章類、對像和數據結構??41 3.1技術要求??41 3.2組織類??42 3.3一個類應當隻具備一種職責??43 3.4從注釋生成文檔??45 3.5內聚和耦合??48 3.5.1緊耦合範例??48 3.5.2低耦合範例??49 3.5.3低內聚範例??50 3.5.4高內聚範例??51 3.6為變化而設計??52 3.6.1面向接口編程??52 3.6.2依賴注入和控制反轉??54 3.6.3DI範例??54 3.6.4IoC範例??56 3.7迪米特法則??57 3.8不可變對像與數據結構??59 3.9對像應當隱藏數據並暴露方法??60 3.10數據結構體應當暴露數據而無須包含方法??61 3.11總結??62 3.12習題??62 3.13參考資料??63 第4章編寫整潔的函數??64 4.1理解函數式編程??65 4.2保持方法短小??67 4.3代碼縮進??69 4.4避免重復代碼??70 4.5避免多個參數??71 4.6實現單一職責原則??72 4.7總結??76 4.8習題??76 4.9參考資料??77 第5章異常處理??78 5.1檢查型異常和非檢查型異常??79 5.2避免NullReferenceException??82 5.3業務規則異常??84 5.3.1範例1—使用業務規則異常進行條件處理??86 5.3.2範例2—使用正常程序流程進行條件處理??87 5.4異常應當提供有意義的信息??89 5.5創建自定義異常??90 5.6總結??92 5.7習題??93 5.8參考資料??93 第6測試??94 6.1技術要求??95 6.2為何要進行良好的測試??95 6.3了解測試工具??98 6.3.1MSTest??99 6.3.2NUnit??105 6.3.3Moq??110 6.3.4SpecFlow??114 6.4TDD方法實踐—失敗、通過與重構??117 6.5刪除冗餘的測試、注釋以及無用代碼??122 6.6總結??123 6.7習題??123 6.8參考資料??124 第7章端到端繫統測試??125 7.1端到端測試??125 7.1.1登錄模塊(子繫統)??127 7.1.2管理員模塊(子繫統)??129 7.1.3測驗模塊(子繫統)??131 7.1.4對三模塊繫統執行E2E測試??132 7.2工廠??134 7.3依賴注入??140 7.4模塊化??145 7.5總結??147 7.6習題??147 7.7參考資料??147 第8章線程與並發??148 8.1理解線程的生命周期??149 8.2添加線程參數??150 8.3使用線程池??151 8.3.1任務並行庫??152 8.3.2ThreadPool.QueueUserWorkItem()方法??153 8.4使用互斥量同步線程??154 8.5使用信號量處理並行線程??156 8.6限制線程池使用的處理器數目及線程數目??158 8.7避免死鎖??159 8.8避免競態條件??164 8.9理解靜態構造器和靜態方法??166 8.9.1添加靜態構造器??167 8.9.2在代碼中添加靜態方法??168 8.10可變性、不可變性與線程安全??170 8.10.1編寫可變且線程不安全的代碼??171 8.10.2編寫不可變且線程安全的代碼??172 8.11理解線程安全??173 8.12同步方法依賴??177 8.13使用Interlocked類??177 8.14通用建議??180 8.15總結??181 8.16習題??181 8.17參考資料??182 第9章API的設計與開發??183 9.1技術要求??184 9.2什麼是API??184 9.3API代理??185 9.4API設計準則??186 9.4.1明確定義軟件邊界??189 9.4.2理解高質量API文檔的重要性??190 9.4.3傳遞不可變結構體而非可變對像??192 9.4.4測試第三方API??195 9.4.5測試自己的API??196 9.5"
^_^:c8c3c3ec601dbb0dc1179cbccc8fc69f
" |