C#代码整洁之道:代码重构与性能提升
全新正版 极速发货
¥
86.65
7.3折
¥
119
全新
库存2件
作者(英)詹森·奥尔斯
出版社机械工业出版社
ISBN9787111703624
出版时间2022-04
装帧平装
开本16开
定价119元
货号31425367
上书时间2024-06-09
商品详情
- 品相描述:全新
- 商品描述
-
目录
前言<br/>关于作者<br/>关于审校者<br/>第1章 C#的编码标准和原则 1<br/>1.1 技术要求 2<br/>1.2 良好的代码与劣质的代码 2<br/>1.2.1 劣质的代码 3<br/>1.2.2 良好的代码 14<br/>1.3 编码标准、原则和方法的必要性 18<br/>1.3.1 编码标准 19<br/>1.3.2 编码原则 19<br/>1.3.3 编码方法 19<br/>1.3.4 编码规则 20<br/>1.3.5 模块化 20<br/>1.3.6 KISS原则 20<br/>1.3.7 YAGNI原则 21<br/>1.3.8 DRY原则 21<br/>1.3.9 SOLID原则 21<br/>1.3.10 奥卡姆剃刀法则 22<br/>1.4 总结 22<br/>1.5 习题 22<br/>1.6 参考资料 23<br/>第2章 代码评审—过程及其重要性 24<br/>2.1 代码评审流程 25<br/>2.2 准备代码评审 25<br/>2.3 引导代码评审 26<br/>2.3.1 创建pull request 27<br/>2.3.2 响应pull request 28<br/>2.3.3 反馈对被评审人的影响 30<br/>2.4 确定评审内容 33<br/>2.4.1 公司编码规范与业务需求 34<br/>2.4.2 命名规则 34<br/>2.4.3 代码格式 34<br/>2.4.4 测试 35<br/>2.4.5 架构规范和设计模式 35<br/>2.4.6 性能和安全性 36<br/>2.5 何时发起代码评审 36<br/>2.6 提供并回应评审反馈 37<br/>2.6.1 评审人提供反馈意见 38<br/>2.6.2 被评审人回应反馈 38<br/>2.7 总结 39<br/>2.8 习题 39<br/>2.9 参考资料 40<br/>第3章 类、对象和数据结构 41<br/>3.1 技术要求 41<br/>3.2 组织类 42<br/>3.3 一个类应当只具备一种职责 43<br/>3.4 从注释生成文档 45<br/>3.5 内聚和耦合 48<br/>3.5.1 紧耦合范例 48<br/>3.5.2 低耦合范例 49<br/>3.5.3 低内聚范例 50<br/>3.5.4 高内聚范例 51<br/>3.6 为变化而设计 52<br/>3.6.1 面向接口编程 52<br/>3.6.2 依赖注入和控制反转 54<br/>3.6.3 DI范例 54<br/>3.6.4 IoC范例 56<br/>3.7 迪米特法则 57<br/>3.8 不可变对象与数据结构 59<br/>3.9 对象应当隐藏数据并暴露方法 60<br/>3.10 数据结构体应当暴露数据而无须包含方法 61<br/>3.11 总结 62<br/>3.12 习题 62<br/>3.13 参考资料 63<br/>第4章 编写整洁的函数 64<br/>4.1 理解函数式编程 65<br/>4.2 保持方法短小 67<br/>4.3 代码缩进 69<br/>4.4 避免重复代码 70<br/>4.5 避免多个参数 71<br/>4.6 实现单一职责原则 72<br/>4.7 总结 76<br/>4.8 习题 76<br/>4.9 参考资料 77<br/>第5章 异常处理 78<br/>5.1 检查型异常和非检查型异常 79<br/>5.2 避免NullReferenceException 82<br/>5.3 业务规则异常 84<br/>5.3.1 范例1—使用业务规则异常进行条件处理 86<br/>5.3.2 范例2—使用正常程序流程进行条件处理 87<br/>5.4 异常应当提供有意义的信息 89<br/>5.5 创建自定义异常 90<br/>5.6 总结 92<br/>5.7 习题 93<br/>5.8 参考资料 93<br/>第6章 单元测试 94<br/>6.1 技术要求 95<br/>6.2 为何要进行良好的测试 95<br/>6.3 了解测试工具 98<br/>6.3.1 MSTest 99<br/>6.3.2 NUnit 105<br/>6.3.3 Moq 110<br/>6.3.4 SpecFlow 114<br/>6.4 TDD方法实践—失败、通过与重构 117<br/>6.5 删除冗余的测试、注释以及无用代码 122<br/>6.6 总结 123<br/>6.7 习题 123<br/>6.8 参考资料 124<br/>第7章 端到端系统测试 125<br/>7.1 端到端测试 125<br/>7.1.1 登录模块(子系统) 127<br/>7.1.2 管理员模块(子系统) 129<br/>7.1.3 测验模块(子系统) 131<br/>7.1.4 对三模块系统执行E2E测试 132<br/>7.2 工厂 134<br/>7.3 依赖注入 140<br/>7.4 模块化 145<br/>7.5 总结 147<br/>7.6 习题 147<br/>7.7 参考资料 147<br/>第8章 线程与并发 148<br/>8.1 理解线程的生命周期 149<br/>8.2 添加线程参数 150<br/>8.3 使用线程池 151<br/>8.3.1 任务并行库 152<br/>8.3.2 ThreadPool.QueueUserWorkItem()方法 153<br/>8.4 使用互斥量同步线程 154<br/>8.5 使用信号量处理并行线程 156<br/>8.6 限制线程池使用的处理器数目及线程数目 158<br/>8.7 避免死锁 159<br/>8.8 避免竞态条件 164<br/>8.9 理解静态构造器和静态方法 166<br/>8.9.1 添加静态构造器 167<br/>8.9.2 在代码中添加静态方法 168<br/>8.10 可变性、不可变性与线程安全 170<br/>8.10.1 编写可变且线程不安全的代码 171<br/>8.10.2 编写不可变且线程安全的代码 172<br/>8.11 理解线程安全 173<br/>8.12 同步方法依赖 177<br/>8.13 使用Interlocked类 177<br/>8.14 通用建议 180<br/>8.15 总结 181<br/>8.16 习题 181<br/>8.17 参考资料 182<br/>第9章 API的设计与开发 183<br/>9.1 技术要求 184<br/>9.2 什么是API 184<br/>9.3 API代理 185<br/>9.4 API设计准则 186<br/>9.4.1 明确定义软件边界 189<br/>9.4.2 理解高质量API文档的重要性 190<br/>9.4.3 传递不可变结构体而非可变对象 192<br/>9.4.4 测试第三方API 195<br/>9.4.5 测试自己的API 196<br/>9.5 使用RAML设计API 197<br/>9.5.1 安装Atom和MuleSoft的Workbench插件 198<br/>9.5.2 创建项目 198<br/>9.5.3 从RAML语言无关设计规范生成C# API代码 200<br/>9.6 总结 203<br/>9.7 习题 204<br/>9.8 参考资料 204<br/>第10章 使用API密钥和Azure Key Vault保护API 206<br/>10.1 技术要求 207<br/>10.2 范例API项目—股息日历 207<br/>10.3 访问Morningstar API 208<br/>10.4 在Azure中创建股息日历ASP.NET Core Web应用程序 210<br/>10.5 使用API密钥保护股息日历API 215<br/>10.5.1 创建repository 216<br/>10.5.2 设置认证和鉴权功能 218<br/>10.6 测试API密钥安全功能 223<br/>10.7 添加股息日历代码 226<br/>10.8 限制API调用 232<br/>10.9 总结 235<br/>10.10 习题 236<br/>10.11 参考资料 236<br/>第11章 处理切面关注点 237<br/>11.1 技术要求 238<br/>11.2 装饰器模式 238<br/>11.3 代理模式 240<br/>11.4 使用PostSharp实现AOP 242<br/>11.4.1 扩展“方面”框架 242<br/>11.4.2 扩展架构框架 244<br/>11.5 创建可重用的解决切面关注点问题的类库 245<br/>11.5.1 添加缓存关注点 245<br/>11.5.2 添加文件日志功能 246<br/>11.5.3 添加日志关注点 247<br/>11.5.4 添加异常处理关注点 249<br/>11.5.5 添加安全关注点 249<br/gt;11.5.6 添加验证关注点 252<br/>11.5.7 添加事务关注点 256<br/>11.5.8 添加资源池关注点 257<br/>11.5.9 添加配置关注点 257<br/>11.5.10 添加检测关注点 258<br/>11.6 总结 259<br/>11.7 习题 259<br/>11.8 参考资料 259<br/>第12章 使用工具改善代码质量 260<br/>12.1 技术要求 261<br/>12.2 什么是高质量代码 261<br/>12.3 清理代码并进行代码度量 262<br/>12.4 执行代码分析 264<br/>12.5 使用快速操作 267<br/>12.6 使用JetBrains dotTrace探查工具 267<br/>12.7 使用JetBrains ReSharper 271<br/>12.8 使用Telerik JustDecompile工具 279<br/>12.9 总结 280<br/>12.10 习题 280<br/>12.11 参考资料 281<br/>第13章 重构C#代码—识别代码坏味道 282<br/>13.1 技术要求 282<br/>13.2 应用程序级别代码坏味道 283<br/>13.2.1 布尔盲点 283<br/>13.2.2 组合爆炸 284<br/>13.2.3 人为复杂性 285<br/>13.2.4 数据泥团 286<br/>13.2.5 粉饰注释 286<br/>13.2.6 重复代码 286<br/>13.2.7 意图不明 287<br/>13.2.8 可变的变量 287<br/>13.2.9 怪异的解决方案 288<br/>13.2.10 霰弹式修改 290<br/>13.2.11 解决方案蔓延 291<br/>13.2.12 不可控的副作用 292<br/>13.3 类级别代码坏味道 292<br/>13.3.1 过高的圈复杂度 292<br/>13.3.2 发散式变化 295<br/>13.3.3 向下类型转换 296<br/>13.3.4 过度的字面量使用 296<br/>13.3.5 依恋情结 296<br/>13.3.6 狎昵关系 298<br/>13.3.7 不恰当的暴露 298<br/>13.3.8 巨大的类 298<br/>13.3.9 冗赘类 298<br/>13.3.10 中间人类 299<br/>13.3.11 孤立的变量和常量类 299<br/>13.3.12 基本类型偏执 299<br/>13.3.13 被拒绝的遗赠 299<br/>13.3.14 夸夸其谈未来性 299<br/>13.3.15 命令,而非询问 300<br/>13.3.16 临时字段 300<br/>13.4 方法级别的代码坏味道 300<br/>13.4.1 不合群的方法 300<br/>13.4.2 过高的圈复杂度 300<br/>13.4.3 人为复杂性 300<br/>13.4.4 无用的代码 301<br/>13.4.5 过多的返回数据 301<br/>13.4.6 依恋情结 301<br/>13.4.7 过长或过短的标识符 301<br/>13.4.8 狎昵关系 301<br/>13.4.9 过长的代码行 301<br/>13.4.10 冗赘方法 301<br/>13.4.11 过长的方法 302<br/>13.4.12 参数过多 302<br/>13.4.13 过度耦合的消息链 302<br/>13.4.14 中间人方法 302<br/>13.4.15 怪异的解决方案 302<br/>13.4.16 夸夸其谈未来性 302<br/>13.5 总结 302<br/>13.6 习题 303<br/>13.7 参考资料 304<br/>第14章 重构C#代码—实现设计模式 305<br/>14.1 技术要求 306<br/>14.2 实现创建型设计模式 306<br/>14.2.1 实现单例设计模式 306<br/>14.2.2 实现工厂方法设计模式 307<br/>14.2.3 实现抽象工厂设计模式 308<br/>14.2.4 实现原型设计模式 311<br/>14.2.5 实现建造者设计模式 313<br/>14.3 实现结构型设计模式 317<br/>14.3.1 实现桥接设计模式 317<br/>14.3.2 实现组合设计模式 319<br/>14.3.3 实现外观设计模式 321<br/>14.3.4 实现享元设计模式 323<br/>14.4 行为型设计模式概述 325<br/>14.5 关于整洁代码和重构的思考 326<br/>14.6 总结 328<br/>14.7 习题 328<br/>14.8 参考资料 329<br/>参考答案 330
内容摘要
本书介绍如何使用各种工具、模式和方法将可读性、可维护性与可扩展性均不尽人意的代码重构为整洁的代码。首先介绍C#的编码标准和原则,然后详细讨论代码评审的过程并说明其重要性。接着介绍类、对象与数据结构以及函数式编程的基础知识。之后介绍异常处理、单元测试、端到端系统测试、线程与并发、API的设计与开发、API密钥与API安全、处理切面关注点等C#相关知识。结尾介绍一系列工具来提升代码质量,并介绍重构C#代码的方法。
— 没有更多了 —
以下为对购买帮助不大的评价