作品简介

本书介绍如何使用各种工具、模式和方法将可读性、可维护性与可扩展性均不尽人意的代码重构为整洁的代码。首先介绍C#的编码标准和原则,然后详细讨论代码评审的过程并说明其重要性。接着介绍类、对象与数据结构以及函数式编程的基础知识。之后介绍异常处理、单元测试、端到端系统测试、线程与并发、API的设计与开发、API密钥与API安全、处理切面关注点等C#相关知识。结尾介绍一系列工具来提升代码质量,并介绍重构C#代码的方法。

Jason Alls拥有超过21年的Microsoft技术编程工作经验,曾就职于一家澳大利亚公司。他最初负责呼叫中心管理报告软件的开发,该软件服务于全球客户,包括电信供应商、银行、航空公司和警察机构。后续开发过GIS市场营销应用程序,在银行部门负责Oracle和SQL Server间的数据迁移。从2005年获得C# MCAD认证以来,他一直在参与各种桌面、Web和移动应用程序的开发。

他目前任职于全球知名的英国教育公司GL Education,使用ASP.NET、Angular和C#进行阅读障碍测试,评估软件的开发与支持工作。

作品目录

  • 前言
  • 关于作者
  • 关于审校者
  • 第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 参考资料
  • 参考答案
展开全部