封面
版权页
前言
关于作者
关于审校者
第1章 C#的编码标准和原则
1.1 技术要求
1.2 良好的代码与劣质的代码
1.3 编码标准、原则和方法的必要性
1.4 总结
1.5 习题
1.6 参考资料
第2章 代码评审——过程及其重要性
2.1 代码评审流程
2.2 准备代码评审
2.3 引导代码评审
2.4 确定评审内容
2.5 何时发起代码评审
2.6 提供并回应评审反馈
2.7 总结
2.8 习题
2.9 参考资料
第3章 类、对象和数据结构
3.1 技术要求
3.2 组织类
3.3 一个类应当只具备一种职责
3.4 从注释生成文档
3.5 内聚和耦合
3.6 为变化而设计
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.4 异常应当提供有意义的信息
5.5 创建自定义异常
5.6 总结
5.7 习题
5.8 参考资料
第6章 单元测试
6.1 技术要求
6.2 为何要进行良好的测试
6.3 了解测试工具
6.4 TDD方法实践——失败、通过与重构
6.5 删除冗余的测试、注释以及无用代码
6.6 总结
6.7 习题
6.8 参考资料
第7章 端到端系统测试
7.1 端到端测试
7.2 工厂
7.3 依赖注入
7.4 模块化
7.5 总结
7.6 习题
7.7 参考资料
第8章 线程与并发
8.1 理解线程的生命周期
8.2 添加线程参数
8.3 使用线程池
8.4 使用互斥量同步线程
8.5 使用信号量处理并行线程
8.6 限制线程池使用的处理器数目及线程数目
8.7 避免死锁
8.8 避免竞态条件
8.9 理解静态构造器和静态方法
8.10 可变性、不可变性与线程安全
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.5 使用RAML设计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.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.5 创建可重用的解决切面关注点问题的类库
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.3 类级别代码坏味道
13.4 方法级别的代码坏味道
13.5 总结
13.6 习题
13.7 参考资料
第14章 重构C#代码——实现设计模式
14.1 技术要求
14.2 实现创建型设计模式
14.3 实现结构型设计模式
14.4 行为型设计模式概述
14.5 关于整洁代码和重构的思考
14.6 总结
14.7 习题
14.8 参考资料
参考答案
更新时间:2022-05-17 14:30:32