注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)C#代碼整潔之道:代碼重構(gòu)與性能提升

C#代碼整潔之道:代碼重構(gòu)與性能提升

C#代碼整潔之道:代碼重構(gòu)與性能提升

定 價(jià):¥119.00

作 者: [英]詹森·奧爾斯(Jason Alls)
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787111703624 出版時(shí)間: 2022-04-01 包裝: 平裝-膠訂
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 352 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書(shū)介紹如何使用各種工具、模式和方法將可讀性、可維護(hù)性與可擴(kuò)展性均不盡人意的代碼重構(gòu)為整潔的代碼。首先介紹C#的編碼標(biāo)準(zhǔn)和原則,然后詳細(xì)討論代碼評(píng)審的過(guò)程并說(shuō)明其重要性。接著介紹類(lèi)、對(duì)象與數(shù)據(jù)結(jié)構(gòu)以及函數(shù)式編程的基礎(chǔ)知識(shí)。之后介紹異常處理、單元測(cè)試、端到端系統(tǒng)測(cè)試、線程與并發(fā)、API的設(shè)計(jì)與開(kāi)發(fā)、API密鑰與API安全、處理切面關(guān)注點(diǎn)等C#相關(guān)知識(shí)。結(jié)尾介紹一系列工具來(lái)提升代碼質(zhì)量,并介紹重構(gòu)C#代碼的方法。

作者簡(jiǎn)介

  Jason Alls擁有超過(guò)21年的Microsoft技術(shù)編程工作經(jīng)驗(yàn),曾就職于一家澳大利亞公司。他初負(fù)責(zé)呼叫中心管理報(bào)告軟件的開(kāi)發(fā),該軟件服務(wù)于全球客戶(hù),包括電信供應(yīng)商、銀行、航空公司和警察機(jī)構(gòu)。后續(xù)開(kāi)發(fā)過(guò)GIS市場(chǎng)營(yíng)銷(xiāo)應(yīng)用程序,在銀行部門(mén)負(fù)責(zé)Oracle和SQL Server間的數(shù)據(jù)遷移。從2005年獲得C# MCAD認(rèn)證以來(lái),他一直在參與各種桌面、Web 和移動(dòng)應(yīng)用程序的開(kāi)發(fā)。他目前任職于全球知名的英國(guó)教育公司GL Education,使用ASP.NET、Angular和C#進(jìn)行閱讀障礙測(cè)試,評(píng)估軟件的開(kāi)發(fā)與支持工作。

圖書(shū)目錄

第1章 C#的編碼標(biāo)準(zhǔn)和原則  1
1.1 技術(shù)要求  2
1.2 良好的代碼與劣質(zhì)的代碼  2
1.2.1 劣質(zhì)的代碼  3
1.2.2 良好的代碼  14
1.3 編碼標(biāo)準(zhǔn)、原則和方法的必要性  18
1.3.1 編碼標(biāo)準(zhǔn)  19
1.3.2 編碼原則  19
1.3.3 編碼方法  19
1.3.4 編碼規(guī)則  20
1.3.5 模塊化  20
1.3.6 KISS原則  20
1.3.7 YAGNI原則  21
1.3.8 DRY原則  21
1.3.9 SOLID原則  21
1.3.10 奧卡姆剃刀法則  22
1.4 總結(jié)  22
1.5 習(xí)題  22
1.6 參考資料  23
第2章 代碼評(píng)審—過(guò)程及其重要性  24
2.1 代碼評(píng)審流程  25
2.2 準(zhǔn)備代碼評(píng)審  25
2.3 引導(dǎo)代碼評(píng)審  26
2.3.1 創(chuàng)建pull request  27
2.3.2 響應(yīng)pull request  28
2.3.3 反饋對(duì)被評(píng)審人的影響  30
2.4 確定評(píng)審內(nèi)容  33
2.4.1 公司編碼規(guī)范與業(yè)務(wù)需求  34
2.4.2 命名規(guī)則  34
2.4.3 代碼格式  34
2.4.4 測(cè)試  35
2.4.5 架構(gòu)規(guī)范和設(shè)計(jì)模式  35
2.4.6 性能和安全性  36
2.5 何時(shí)發(fā)起代碼評(píng)審  36
2.6 提供并回應(yīng)評(píng)審反饋  37
2.6.1 評(píng)審人提供反饋意見(jiàn)  38
2.6.2 被評(píng)審人回應(yīng)反饋  38
2.7 總結(jié)  39
2.8 習(xí)題  39
2.9 參考資料  40
第3章 類(lèi)、對(duì)象和數(shù)據(jù)結(jié)構(gòu)  41
3.1 技術(shù)要求  41
3.2 組織類(lèi)  42
3.3 一個(gè)類(lèi)應(yīng)當(dāng)只具備一種職責(zé)  43
3.4 從注釋生成文檔  45
3.5 內(nèi)聚和耦合  48
3.5.1 緊耦合范例  48
3.5.2 低耦合范例  49
3.5.3 低內(nèi)聚范例  50
3.5.4 高內(nèi)聚范例  51
3.6 為變化而設(shè)計(jì)  52
3.6.1 面向接口編程  52
3.6.2 依賴(lài)注入和控制反轉(zhuǎn)  54
3.6.3 DI范例  54
3.6.4 IoC范例  56
3.7 迪米特法則  57
3.8 不可變對(duì)象與數(shù)據(jù)結(jié)構(gòu)  59
3.9 對(duì)象應(yīng)當(dāng)隱藏?cái)?shù)據(jù)并暴露方法  60
3.10 數(shù)據(jù)結(jié)構(gòu)體應(yīng)當(dāng)暴露數(shù)據(jù)而無(wú)須包含方法  61
3.11 總結(jié)  62
3.12 習(xí)題  62
3.13 參考資料  63
第4章 編寫(xiě)整潔的函數(shù)  64
4.1 理解函數(shù)式編程  65
4.2 保持方法短小  67
4.3 代碼縮進(jìn)  69
4.4 避免重復(fù)代碼  70
4.5 避免多個(gè)參數(shù)  71
4.6 實(shí)現(xiàn)單一職責(zé)原則  72
4.7 總結(jié)  76
4.8 習(xí)題  76
4.9 參考資料  77
第5章 異常處理  78
5.1 檢查型異常和非檢查型異常  79
5.2 避免NullReferenceException  82
5.3 業(yè)務(wù)規(guī)則異常  84
5.3.1 范例1—使用業(yè)務(wù)規(guī)則異常進(jìn)行條件處理  86
5.3.2 范例2—使用正常程序流程進(jìn)行條件處理  87
5.4 異常應(yīng)當(dāng)提供有意義的信息  89
5.5 創(chuàng)建自定義異常  90
5.6 總結(jié)  92
5.7 習(xí)題  93
5.8 參考資料  93
第6章 單元測(cè)試  94
6.1 技術(shù)要求  95
6.2 為何要進(jìn)行良好的測(cè)試  95
6.3 了解測(cè)試工具  98
6.3.1 MSTest  99
6.3.2 NUnit  105
6.3.3 Moq  110
6.3.4 SpecFlow  114
6.4 TDD方法實(shí)踐—失敗、通過(guò)與重構(gòu)  117
6.5 刪除冗余的測(cè)試、注釋以及無(wú)用代碼  122
6.6 總結(jié)  123
6.7 習(xí)題  123
6.8 參考資料  124
第7章 端到端系統(tǒng)測(cè)試  125
7.1 端到端測(cè)試  125
7.1.1 登錄模塊(子系統(tǒng))  127
7.1.2 管理員模塊(子系統(tǒng))  129
7.1.3 測(cè)驗(yàn)?zāi)K(子系統(tǒng))  131
7.1.4 對(duì)三模塊系統(tǒng)執(zhí)行E2E測(cè)試  132
7.2 工廠  134
7.3 依賴(lài)注入  140
7.4 模塊化  145
7.5 總結(jié)  147
7.6 習(xí)題  147
7.7 參考資料  147
第8章 線程與并發(fā)  148
8.1 理解線程的生命周期  149
8.2 添加線程參數(shù)  150
8.3 使用線程池  151
8.3.1 任務(wù)并行庫(kù)  152
8.3.2 ThreadPool.QueueUserWorkItem()方法  153
8.4 使用互斥量同步線程  154
8.5 使用信號(hào)量處理并行線程  156
8.6 限制線程池使用的處理器數(shù)目及線程數(shù)目  158
8.7 避免死鎖  159
8.8 避免競(jìng)態(tài)條件  164
8.9 理解靜態(tài)構(gòu)造器和靜態(tài)方法  166
8.9.1 添加靜態(tài)構(gòu)造器  167
8.9.2 在代碼中添加靜態(tài)方法  168
8.10 可變性、不可變性與線程安全  170
8.10.1 編寫(xiě)可變且線程不安全的代碼  171
8.10.2 編寫(xiě)不可變且線程安全的代碼  172
8.11 理解線程安全  173
8.12 同步方法依賴(lài)  177
8.13 使用Interlocked類(lèi)  177
8.14 通用建議  180
8.15 總結(jié)  181
8.16 習(xí)題  181
8.17 參考資料  182
第9章 API的設(shè)計(jì)與開(kāi)發(fā)  183
9.1 技術(shù)要求  184
9.2 什么是API  184
9.3 API代理  185
9.4 API設(shè)計(jì)準(zhǔn)則  186
9.4.1 明確定義軟件邊界  189
9.4.2 理解高質(zhì)量API文檔的重要性  190
9.4.3 傳遞不可變結(jié)構(gòu)體而非可變對(duì)象  192
9.4.4 測(cè)試第三方API  195
9.4.5 測(cè)試自己的API  196
9.5 使用RAML設(shè)計(jì)API  197
9.5.1 安裝Atom和MuleSoft的Workbench插件  198
9.5.2 創(chuàng)建項(xiàng)目  198
9.5.3 從RAML語(yǔ)言無(wú)關(guān)設(shè)計(jì)規(guī)范生成C# API代碼  200
9.6 總結(jié)  203
9.7 習(xí)題  204
9.8 參考資料  204
第10章 使用API密鑰和Azure Key Vault保護(hù)API  206
10.1 技術(shù)要求  207
10.2 范例API項(xiàng)目—股息日歷  207
10.3 訪問(wèn)Morningstar API  208
10.4 在Azure中創(chuàng)建股息日歷ASP.NET Core Web應(yīng)用程序  210
10.5 使用API密鑰保護(hù)股息日歷API  215
10.5.1 創(chuàng)建repository  216
10.5.2 設(shè)置認(rèn)證和鑒權(quán)功能  218
10.6 測(cè)試API密鑰安全功能  223
10.7 添加股息日歷代碼  226
10.8 限制API調(diào)用  232
10.9 總結(jié)  235
10.10 習(xí)題  236
10.11 參考資料  236
第11章 處理切面關(guān)注點(diǎn)  237
11.1 技術(shù)要求  238
11.2 裝飾器模式  238
11.3 代理模式  240
11.4 使用PostSharp實(shí)現(xiàn)AOP  242
11.4.1 擴(kuò)展“方面”框架  242
11.4.2 擴(kuò)展架構(gòu)框架  244
11.5 創(chuàng)建可重用的解決切面關(guān)注點(diǎn)問(wèn)題的類(lèi)庫(kù)  245
11.5.1 添加緩存關(guān)注點(diǎn)  245
11.5.2 添加文件日志功能  246
11.5.3 添加日志關(guān)注點(diǎn)  247
11.5.4 添加異常處理關(guān)注點(diǎn)  249
11.5.5 添加安全關(guān)注點(diǎn)  249
11.5.6 添加驗(yàn)證關(guān)注點(diǎn)  252
11.5.7 添加事務(wù)關(guān)注點(diǎn)  256
11.5.8 添加資源池關(guān)注點(diǎn)  257
11.5.9 添加配置關(guān)注點(diǎn)  257
11.5.10 添加檢測(cè)關(guān)注點(diǎn)  258
11.6 總結(jié)  259
11.7 習(xí)題  259
11.8 參考資料  259
第12章 使用工具改善代碼質(zhì)量  260
12.1 技術(shù)要求  261
12.2 什么是高質(zhì)量代碼  261
12.3 清理代碼并進(jìn)行代碼度量  262
12.4 執(zhí)行代碼分析  264
12.5 使用快速操作  267
12.6 使用JetBrains dotTrace探查工具  267
12.7 使用JetBrains ReSharper  271
12.8 使用Telerik JustDecompile工具  279
12.9 總結(jié)  280
12.10 習(xí)題  280
12.11 參考資料  281
第13章 重構(gòu)C#代碼—識(shí)別代碼壞味道  282
13.1 技術(shù)要求  282
13.2 應(yīng)用程序級(jí)別代碼壞味道  283
13.2.1 布爾盲點(diǎn)  283
13.2.2 組合爆炸  284
13.2.3 人為復(fù)雜性  285
13.2.4 數(shù)據(jù)泥團(tuán)  286
13.2.5 粉飾注釋  286
13.2.6 重復(fù)代碼  286
13.2.7 意圖不明  287
13.2.8 可變的變量  287
13.2.9 怪異的解決方案  288
13.2.10 霰彈式修改  290
13.2.11 解決方案蔓延  291
13.2.12 不可控的副作用  292
13.3 類(lèi)級(jí)別代碼壞味道  292
13.3.1 過(guò)高的圈復(fù)雜度  292
13.3.2 發(fā)散式變化  295
13.3.3 向下類(lèi)型轉(zhuǎn)換  296
13.3.4 過(guò)度的字面量使用  296
13.3.5 依戀情結(jié)  296
13.3.6 狎昵關(guān)系  298
13.3.7 不恰當(dāng)?shù)谋┞?nbsp; 298
13.3.8 巨大的類(lèi)  298
13.3.9 冗贅類(lèi)  298
13.3.10 中間人類(lèi)  299
13.3.11 孤立的變量和常量類(lèi)  299
13.3.12 基本類(lèi)型偏執(zhí)  299
13.3.13 被拒絕的遺贈(zèng)  299
13.3.14 夸夸其談未來(lái)性  299
13.3.15 命令,而非詢(xún)問(wèn)  300
13.3.16 臨時(shí)字段  300
13.4 方法級(jí)別的代碼壞味道  300
13.4.1 不合群的方法  300
13.4.2 過(guò)高的圈復(fù)雜度  300
13.4.3 人為復(fù)雜性  300
13.4.4 無(wú)用的代碼  301
13.4.5 過(guò)多的返回?cái)?shù)據(jù)  301
13.4.6 依戀情結(jié)  301
13.4.7 過(guò)長(zhǎng)或過(guò)短的標(biāo)識(shí)符  301
13.4.8 狎昵關(guān)系  301
13.4.9 過(guò)長(zhǎng)的代碼行  301
13.4.10 冗贅?lè)椒?nbsp; 301
13.4.11 過(guò)長(zhǎng)的方法  302
13.4.12 參數(shù)過(guò)多  302
13.4.13 過(guò)度耦合的消息鏈  302
13.4.14 中間人方法  302
13.4.15 怪異的解決方案  302
13.4.16 夸夸其談未來(lái)性  302
13.5 總結(jié)  302
13.6 習(xí)題  303
13.7 參考資料  304
第14章 重構(gòu)C#代碼—實(shí)現(xiàn)設(shè)計(jì)模式  305
14.1 技術(shù)要求  306
14.2 實(shí)現(xiàn)創(chuàng)建型設(shè)計(jì)模式  306
14.2.1 實(shí)現(xiàn)單例設(shè)計(jì)模式  306
14.2.2 實(shí)現(xiàn)工廠方法設(shè)計(jì)模式  307
14.2.3 實(shí)現(xiàn)抽象工廠設(shè)計(jì)模式  308
14.2.4 實(shí)現(xiàn)原型設(shè)計(jì)模式  311
14.2.5 實(shí)現(xiàn)建造者設(shè)計(jì)模式  313
14.3 實(shí)現(xiàn)結(jié)構(gòu)型設(shè)計(jì)模式  317
14.3.1 實(shí)現(xiàn)橋接設(shè)計(jì)模式  317
14.3.2 實(shí)現(xiàn)組合設(shè)計(jì)模式  319
14.3.3 實(shí)現(xiàn)外觀設(shè)計(jì)模式  321
14.3.4 實(shí)現(xiàn)享元設(shè)計(jì)模式  323
14.4 行為型設(shè)計(jì)模式概述  325
14.5 關(guān)于整潔代碼和重構(gòu)的思考  326
14.6 總結(jié)  328
14.7 習(xí)題  328
14.8 參考資料  329
參考答案  330

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)