中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折!

歡迎光臨中圖網 請 | 注冊
> >
C#代碼整潔之道:代碼重構與性能提升

包郵 C#代碼整潔之道:代碼重構與性能提升

出版社:機械工業出版社出版時間:2022-04-01
開本: 16開 頁數: 337
中 圖 價:¥80.9(6.8折) 定價  ¥119.0 登錄后可看到會員價
加入購物車 收藏
開年大促, 全場包郵
?新疆、西藏除外
本類五星書更多>

C#代碼整潔之道:代碼重構與性能提升 版權信息

C#代碼整潔之道:代碼重構與性能提升 本書特色

適讀人群 :使用C#編程的所有開發人員C#語言曾主要用于開發Windows桌面應用和游戲程序,而現在已經在多個領域得到了廣泛應用,如Web應用程序和云應用程序。C#在移動開發領域的影響力也與日俱增。盡管C#擁有大量的編程特性,但專業人士還是會在工作中遇到由糟糕的代碼導致的效率、伸縮性和維護方面的相關問題。本書將幫助你識別這些問題,并使用有效的編碼解決它們。本書首先對比了良好的代碼與劣質的代碼以幫助大家理解編碼標準、原則與方法的重要性,之后討論了如何進行代碼審查、代碼審查在代碼改進過程中的作用以及業界的編碼標準。本書還介紹了單元測試,深入研究了測試驅動開發的方法,并探討了如何處理切面關注點。你將學到如何在C#中恰當處理對象、結構體、異常等。我們還將研究API的設計并使用工具改善代碼質量,通過學習反面案例來避免不當的編碼實踐。 閱讀本書,你將學到開發符合業界編碼標準的整潔、易讀、可擴展且易于維護的C#代碼的方法。 本書涵蓋以下主題:如何編寫能夠持續修改與完善的代碼。使用C#控制臺應用程序實踐“失敗-通過-重構”的工作流程。使用設計模式解決切面關注點問題。編寫提供含義明確的信息的自定義C#異常。如何識別質量不佳、需要重構的C#代碼。如何使用API密鑰對API進行保護,以及使用Azure Key Vault對數據進行保護。如何使用分析和重構工具提升代碼性能。

C#代碼整潔之道:代碼重構與性能提升 內容簡介

本書介紹如何使用各種工具、模式和方法將可讀性、可維護性與可擴展性均不盡人意的代碼重構為整潔的代碼。首先介紹C#的編碼標準和原則,然后詳細討論代碼評審的過程并說明其重要性。接著介紹類、對象與數據結構以及函數式編程的基礎知識。之后介紹異常處理、單元測試、端到端系統測試、線程與并發、API的設計與開發、API密鑰與API安全、處理切面關注點等C#相關知識。結尾介紹一系列工具來提升代碼質量,并介紹重構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.6 KISS原則 20

1.3.7 YAGNI原則 21

1.3.8 DRY原則 21

1.3.9 SOLID原則 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.3 DI范例 54

3.6.4 IoC范例 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.1 MSTest 99

6.3.2 NUnit 105

6.3.3 Moq 110

6.3.4 SpecFlow 114

6.4 TDD方法實踐—失敗、通過與重構 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.2 ThreadPool.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.3 API代理 185

9.4 API設計準則 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 使用RAML設計API 197

9.5.1 安裝Atom和MuleSoft的Workbench插件 198

9.5.2 創建項目 198

9.5.3 從RAML語言無關設計規范生成C# API代碼 200

9.6 總結 203

9.7 習題 204

9.8 參考資料 204

第10章 使用API密鑰和Azure Key Vault保護API 206

10.1 技術要求 207

10.2 范例API項目—股息日歷 207

10.3 訪問Morningstar API 208

10.4 在Azure中創建股息日歷ASP.NET Core Web應用程序 210

10.5 使用API密鑰保護股息日歷API 215

10.5.1 創建repository 216

10.5.2 設置認證和鑒權功能 218

10.6 測試API密鑰安全功能 223

10.7 添加股息日歷代碼 226

10.8 限制API調用 232

10.9 總結 235

10.10 習題 236

10.11 參考資料 236

第11章 處理切面關注點 237

11.1 技術要求 238

11.2 裝飾器模式 238

11.3 代理模式 240

11.4 使用PostSharp實現AOP 242

11.4.1 擴展“方面”框架 242

11.4.2 擴展架構框架 244

11.5 創建可重用的解決切面關注點問題的類庫 245

11.5.1 添加緩存關注點 245

11.5.2 添加文件日志功能 246

11.5.3 添加日志關注點 247

11.5.4 添加異常處理關注點 249

11.5.5 添加安全關注點 249

11.5.6 添加驗證關注點 252

11.5.7 添加事務關注點 256

11.5.8 添加資源池關注點 257

11.5.9 添加配置關注點 257

11.5.10 添加檢測關注點 258

11.6 總結 259

11.7 習題 259

11.8 參考資料 259

第12章 使用工具改善代碼質量 260

12.1 技術要求 261

12.2 什么是高質量代碼 261

12.3 清理代碼并進行代碼度量 262

12.4 執行代碼分析 264

12.5 使用快速操作 267

12.6 使用JetBrains dotTrace探查工具 267

12.7 使用JetBrains ReSharper 271

12.8 使用Telerik JustDecompile工具 279

12.9 總結 280

12.10 習題 280

12.11 參考資料 281

第13章 重構C#代碼—識別代碼壞味道 282

13.1 技術要求 282

13.2 應用程序級別代碼壞味道 283

13.2.1 布爾盲點 283

13.2.2 組合爆炸 284

13.2.3 人為復雜性 285

13.2.4 數據泥團 286

13.2.5 粉飾注釋 286

13.2.6 重復代碼 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 類級別代碼壞味道 292

13.3.1 過高的圈復雜度 292

13.3.2 發散式變化 295

13.3.3 向下類型轉換 296

13.3.4 過度的字面量使用 296

13.3.5 依戀情結 296

13.3.6 狎昵關系 298

13.3.7 不恰當的暴露 298

13.3.8 巨大的類 298

13.3.9 冗贅類 298

13.3.10 中間人類 299

13.3.11 孤立的變量和常量類 299

13.3.12 基本類型偏執 299

13.3.13 被拒絕的遺贈 299

13.3.14 夸夸其談未來性 299

13.3.15 命令,而非詢問 300

13.3.16 臨時字段 300

13.4 方法級別的代碼壞味道 300

13.4.1 不合群的方法 300

13.4.2 過高的圈復雜度 300

13.4.3 人為復雜性 300

13.4.4 無用的代碼 301

13.4.5 過多的返回數據 301

13.4.6 依戀情結 301

13.4.7 過長或過短的標識符 301

13.4.8 狎昵關系 301

13.4.9 過長的代碼行 301

13.4.10 冗贅方法 301

13.4.11 過長的方法 302

13.4.12 參數過多 302

13.4.13 過度耦合的消息鏈 302

13.4.14 中間人方法 302

13.4.15 怪異的解決方案 302

13.4.16 夸夸其談未來性 302

13.5 總結 302

13.6 習題 303

13.7 參考資料 304

第14章 重構C#代碼—實現設計模式 305

14.1 技術要求 306

14.2 實現創建型設計模式 306

14.2.1 實現單例設計模式 306

14.2.2 實現工廠方法設計模式 307

14.2.3 實現抽象工廠設計模式 308

14.2.4 實現原型設計模式 311

14.2.5 實現建造者設計模式 313

14.3 實現結構型設計模式 317

14.3.1 實現橋接設計模式 317

14.3.2 實現組合設計模式 319

14.3.3 實現外觀設計模式 321

14.3.4 實現享元設計模式 323

14.4 行為型設計模式概述 325

14.5 關于整潔代碼和重構的思考 326

14.6 總結 328

14.7 習題 328

14.8 參考資料 329

參考答案 330


展開全部

C#代碼整潔之道:代碼重構與性能提升 作者簡介

Jason Alls擁有超過21年的Microsoft技術編程工作經驗,曾就職于一家澳大利亞公司。他最初負責呼叫中心管理報告軟件的開發,該軟件服務于全球客戶,包括電信供應商、銀行、航空公司和警察機構。后續開發過GIS市場營銷應用程序,在銀行部門負責Oracle和SQL Server間的數據遷移。從2005年獲得C# MCAD認證以來,他一直在參與各種桌面、Web 和移動應用程序的開發。 他目前任職于全球知名的英國教育公司GL Education,使用ASP.NET、Angular和C#進行閱讀障礙測試,評估軟件的開發與支持工作。

商品評論(0條)
暫無評論……
書友推薦
本類暢銷
編輯推薦
返回頂部
中圖網
在線客服
主站蜘蛛池模板: 微信小程序定制,广州app公众号商城网站开发公司-广东锋火 | 深圳市索富通实业有限公司-可燃气体报警器 | 可燃气体探测器 | 气体检测仪 | 都江堰招聘网-都江堰人才网 都江堰人事人才网 都江堰人才招聘网 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | 恒温恒湿试验箱厂家-高低温试验箱维修价格_东莞环仪仪器_东莞环仪仪器 | 体视显微镜_荧光生物显微镜_显微镜报价-微仪光电生命科学显微镜有限公司 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 布袋除尘器-单机除尘器-脉冲除尘器-泊头市兴天环保设备有限公司 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 定量包装秤,吨袋包装称,伸缩溜管,全自动包装秤,码垛机器人,无锡市邦尧机械工程有限公司 | 品牌广告服务平台,好排名,好流量,好生意。 | led全彩屏-室内|学校|展厅|p3|户外|会议室|圆柱|p2.5LED显示屏-LED显示屏价格-LED互动地砖屏_蕙宇屏科技 | 悬浮拼装地板_幼儿园_篮球场_悬浮拼接地板-山东悬浮拼装地板厂家 | 一体式钢筋扫描仪-楼板测厚仪-裂缝检测仪-泰仕特(北京) | 陶氏道康宁消泡剂_瓦克消泡剂_蓝星_海明斯德谦_广百进口消泡剂 | 断桥铝破碎机_发动机破碎机_杂铝破碎机厂家价格-皓星机械 | 呼末二氧化碳|ETCO2模块采样管_气体干燥管_气体过滤器-湖南纳雄医疗器械有限公司 | 上海公众号开发-公众号代运营公司-做公众号的公司企业服务商-咏熠软件 | PAS糖原染色-CBA流式多因子-明胶酶谱MMP-上海研谨生物科技有限公司 | CE认证_FCC认证_CCC认证_MFI认证_UN38.3认证-微测检测 CNAS实验室 | Q361F全焊接球阀,200X减压稳压阀,ZJHP气动单座调节阀-上海戎钛 | 科威信洗净科技,碳氢清洗机,超声波清洗机,真空碳氢清洗机 | hdpe土工膜-防渗膜-复合土工膜-长丝土工布价格-厂家直销「恒阳新材料」-山东恒阳新材料有限公司 ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 真空吸污车_高压清洗车厂家-程力专用汽车股份有限公司官网 | 雷蒙磨,雷蒙磨粉机,雷蒙磨机 - 巩义市大峪沟高峰机械厂 | 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 | LCD3D打印机|教育|桌面|光固化|FDM3D打印机|3D打印设备-广州造维科技有限公司 | 优宝-汽车润滑脂-轴承润滑脂-高温齿轮润滑油脂厂家 | 宝鸡市人民医院| 青岛空压机,青岛空压机维修/保养,青岛空压机销售/出租公司,青岛空压机厂家电话 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 常州律师事务所_常州律所_常州律师-江苏乐天律师事务所 | 大型果蔬切片机-水果冬瓜削皮机-洗菜机切菜机-肇庆市凤翔餐饮设备有限公司 | 河南不锈钢水箱_地埋水箱_镀锌板水箱_消防水箱厂家-河南联固供水设备有限公司 | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | 广西正涛环保工程有限公司【官网】| 北京律师咨询_知名专业北京律师事务所_免费法律咨询 | 闭端端子|弹簧螺式接线头|防水接线头|插线式接线头|端子台|电源线扣+护线套|印刷电路板型端子台|金笔电子代理商-上海拓胜电气有限公司 | NMRV减速机|铝合金减速机|蜗轮蜗杆减速机|NMRV减速机厂家-东莞市台机减速机有限公司 | 东莞ERP软件_广州云ERP_中山ERP_台湾工厂erp系统-广东顺景软件科技有限公司 | 重庆钣金加工厂家首页-专业定做监控电视墙_操作台 | 大巴租车平台承接包车,通勤班车,巴士租赁业务 - 鸿鸣巴士 | 旋转/数显粘度计-运动粘度测定仪-上海平轩科学仪器 |