计算机
类型
可以朗读
语音朗读
298千字
字数
2022-04-01
发行日期
展开全部
主编推荐语
本书介绍如何使用各种工具、模式和方法将可读性、可维护性与可扩展性均不尽人意的代码重构为整洁的代码。
内容简介
书中首先介绍C#的编码标准和原则,然后详细讨论代码评审的过程并说明其重要性。接着介绍类、对象与数据结构以及函数式编程的基础知识。之后介绍异常处理、单元测试、端到端系统测试、线程与并发、API的设计与开发、API密钥与API安全、处理切面关注点等C#相关知识。结尾介绍一系列工具来提升代码质量,并介绍重构C#代码的方法。
目录
- 版权信息
- 前言
- 关于作者
- 关于审校者
- 第1章 C#的编码标准和原则
- 1.1 技术要求
- 1.2 良好的代码与劣质的代码
- 1.2.1 劣质的代码
- 1.2.2 良好的代码
- 1.3 编码标准、原则和方法的必要性
- 1.3.1 编码标准
- 1.3.2 编码原则
- 1.3.3 编码方法
- 1.3.4 编码规则
- 1.3.5 模块化
- 1.3.6 KISS原则
- 1.3.7 YAGNI原则
- 1.3.8 DRY原则
- 1.3.9 SOLID原则
- 1.3.10 奥卡姆剃刀法则
- 1.4 总结
- 1.5 习题
- 1.6 参考资料
- 第2章 代码评审
- 2.1 代码评审流程
- 2.2 准备代码评审
- 2.3 引导代码评审
- 2.3.1 创建pull request
- 2.3.2 响应pull request
- 2.3.3 反馈对被评审人的影响
- 2.4 确定评审内容
- 2.4.1 公司编码规范与业务需求
- 2.4.2 命名规则
- 2.4.3 代码格式
- 2.4.4 测试
- 2.4.5 架构规范和设计模式
- 2.4.6 性能和安全性
- 2.5 何时发起代码评审
- 2.6 提供并回应评审反馈
- 2.6.1 评审人提供反馈意见
- 2.6.2 被评审人回应反馈
- 2.7 总结
- 2.8 习题
- 2.9 参考资料
- 第3章 类、对象和数据结构
- 3.1 技术要求
- 3.2 组织类
- 3.3 一个类应当只具备一种职责
- 3.4 从注释生成文档
- 3.5 内聚和耦合
- 3.5.1 紧耦合范例
- 3.5.2 低耦合范例
- 3.5.3 低内聚范例
- 3.5.4 高内聚范例
- 3.6 为变化而设计
- 3.6.1 面向接口编程
- 3.6.2 依赖注入和控制反转
- 3.6.3 DI范例
- 3.6.4 IoC范例
- 3.7 迪米特法则
- 3.8 不可变对象与数据结构
- 3.9 对象应当隐藏数据并暴露方法
- 3.10 数据结构体应当暴露数据而无须包含方法
- 3.11 总结
- 3.12 习题
- 3.13 参考资料
- 第4章 编写整洁的函数
- 4.1 理解函数式编程
- 4.2 保持方法短小
- 4.3 代码缩进
- 4.4 避免重复代码
- 4.5 避免多个参数
- 4.6 实现单一职责原则
- 4.7 总结
- 4.8 习题
- 4.9 参考资料
- 第5章 异常处理
- 5.1 检查型异常和非检查型异常
- 5.2 避免NullReferenceException
- 5.3 业务规则异常
- 5.3.1 范例1——使用业务规则异常进行条件处理
- 5.3.2 范例2——使用正常程序流程进行条件处理
- 5.4 异常应当提供有意义的信息
- 5.5 创建自定义异常
- 5.6 总结
- 5.7 习题
- 5.8 参考资料
- 第6章 单元测试
- 6.1 技术要求
- 6.2 为何要进行良好的测试
- 6.3 了解测试工具
- 6.3.1 MSTest
- 6.3.2 NUnit
- 6.3.3 Moq
- 6.3.4 SpecFlow
- 6.4 TDD方法实践
- 6.5 删除冗余的测试、注释以及无用代码
- 6.6 总结
- 6.7 习题
- 6.8 参考资料
- 第7章 端到端系统测试
- 7.1 端到端测试
- 7.1.1 登录模块(子系统)
- 7.1.2 管理员模块(子系统)
- 7.1.3 测验模块(子系统)
- 7.1.4 对三模块系统执行E2E测试
- 7.2 工厂
- 7.3 依赖注入
- 7.4 模块化
- 7.5 总结
- 7.6 习题
- 7.7 参考资料
- 第8章 线程与并发
- 8.1 理解线程的生命周期
- 8.2 添加线程参数
- 8.3 使用线程池
- 8.3.1 任务并行库
- 8.3.2 ThreadPool.QueueUserWorkItem()方法
- 8.4 使用互斥量同步线程
- 8.5 使用信号量处理并行线程
- 8.6 限制线程池使用的处理器数目及线程数目
- 8.7 避免死锁
- 8.8 避免竞态条件
- 8.9 理解静态构造器和静态方法
- 8.9.1 添加静态构造器
- 8.9.2 在代码中添加静态方法
- 8.10 可变性、不可变性与线程安全
- 8.10.1 编写可变且线程不安全的代码
- 8.10.2 编写不可变且线程安全的代码
- 8.11 理解线程安全
- 8.12 同步方法依赖
- 8.13 使用Interlocked类
- 8.14 通用建议
- 8.15 总结
- 8.16 习题
- 8.17 参考资料
- 第9章 API的设计与开发
- 9.1 技术要求
- 9.2 什么是API
- 9.3 API代理
- 9.4 API设计准则
- 9.4.1 明确定义软件边界
- 9.4.2 理解高质量API文档的重要性
- 9.4.3 传递不可变结构体而非可变对象
- 9.4.4 测试第三方API
- 9.4.5 测试自己的API
- 9.5 使用RAML设计API
- 9.5.1 安装Atom和MuleSoft的Workbench插件
- 9.5.2 创建项目
- 9.5.3 从RAML语言无关设计规范生成C# API代码
- 9.6 总结
- 9.7 习题
- 9.8 参考资料
- 第10章 使用API密钥和Azure Key Vault保护API
- 10.1 技术要求
- 10.2 范例API项目
- 10.3 访问Morningstar API
- 10.4 在Azure中创建股息日历ASP.NET Core Web应用程序
- 10.5 使用API密钥保护股息日历API
- 10.5.1 创建repository
- 10.5.2 设置认证和鉴权功能
- 10.6 测试API密钥安全功能
- 10.7 添加股息日历代码
- 10.8 限制API调用
- 10.9 总结
- 10.10 习题
- 10.11 参考资料
- 第11章 处理切面关注点
- 11.1 技术要求
- 11.2 装饰器模式
- 11.3 代理模式
- 11.4 使用PostSharp实现AOP
- 11.4.1 扩展“方面”框架
- 11.4.2 扩展架构框架
- 11.5 创建可重用的解决切面关注点问题的类库
- 11.5.1 添加缓存关注点
- 11.5.2 添加文件日志功能
- 11.5.3 添加日志关注点
- 11.5.4 添加异常处理关注点
- 11.5.5 添加安全关注点
- 11.5.6 添加验证关注点
- 11.5.7 添加事务关注点
- 11.5.8 添加资源池关注点
- 11.5.9 添加配置关注点
- 11.5.10 添加检测关注点
- 11.6 总结
- 11.7 习题
- 11.8 参考资料
- 第12章 使用工具改善代码质量
- 12.1 技术要求
- 12.2 什么是高质量代码
- 12.3 清理代码并进行代码度量
- 12.4 执行代码分析
- 12.5 使用快速操作
- 12.6 使用JetBrains dotTrace探查工具
- 12.7 使用JetBrains ReSharper
- 12.8 使用Telerik JustDecompile工具
- 12.9 总结
- 12.10 习题
- 12.11 参考资料
- 第13章 重构C#代码——识别代码坏味道
- 13.1 技术要求
- 13.2 应用程序级别代码坏味道
- 13.2.1 布尔盲点
- 13.2.2 组合爆炸
- 13.2.3 人为复杂性
- 13.2.4 数据泥团
- 13.2.5 粉饰注释
- 13.2.6 重复代码
- 13.2.7 意图不明
- 13.2.8 可变的变量
- 13.2.9 怪异的解决方案
- 13.2.10 霰弹式修改
- 13.2.11 解决方案蔓延
- 13.2.12 不可控的副作用
- 13.3 类级别代码坏味道
- 13.3.1 过高的圈复杂度
- 13.3.2 发散式变化
- 13.3.3 向下类型转换
- 13.3.4 过度的字面量使用
- 13.3.5 依恋情结
- 13.3.6 狎昵关系
- 13.3.7 不恰当的暴露
- 13.3.8 巨大的类
- 13.3.9 冗赘类
- 13.3.10 中间人类
- 13.3.11 孤立的变量和常量类
- 13.3.12 基本类型偏执
- 13.3.13 被拒绝的遗赠
- 13.3.14 夸夸其谈未来性
- 13.3.15 命令,而非询问
- 13.3.16 临时字段
- 13.4 方法级别的代码坏味道
- 13.4.1 不合群的方法
- 13.4.2 过高的圈复杂度
- 13.4.3 人为复杂性
- 13.4.4 无用的代码
- 13.4.5 过多的返回数据
- 13.4.6 依恋情结
- 13.4.7 过长或过短的标识符
- 13.4.8 狎昵关系
- 13.4.9 过长的代码行
- 13.4.10 冗赘方法
- 13.4.11 过长的方法
- 13.4.12 参数过多
- 13.4.13 过度耦合的消息链
- 13.4.14 中间人方法
- 13.4.15 怪异的解决方案
- 13.4.16 夸夸其谈未来性
- 13.5 总结
- 13.6 习题
- 13.7 参考资料
- 第14章 重构C#代码——实现设计模式
- 14.1 技术要求
- 14.2 实现创建型设计模式
- 14.2.1 实现单例设计模式
- 14.2.2 实现工厂方法设计模式
- 14.2.3 实现抽象工厂设计模式
- 14.2.4 实现原型设计模式
- 14.2.5 实现建造者设计模式
- 14.3 实现结构型设计模式
- 14.3.1 实现桥接设计模式
- 14.3.2 实现组合设计模式
- 14.3.3 实现外观设计模式
- 14.3.4 实现享元设计模式
- 14.4 行为型设计模式概述
- 14.5 关于整洁代码和重构的思考
- 14.6 总结
- 14.7 习题
- 14.8 参考资料
- 参考答案
展开全部
出版方
机械工业出版社有限公司
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。