目录
1 Clean Code的定义
《代码整洁之道》针对Clean Code进行了专业的解析,生产干净、可维护的代码可以减少攻击者可获得的漏洞。
Clean Code的标准——Program SMaRT:
- 简洁/可读(Simple)
- 可维护(Maintenance)
- 可测试(Testable)
- 可靠(Reliable)
- 高效(Performance)
- 可移植(Portable)
- 安全(Safety)
1.1 详细解读
1.1.1 简洁/可读
软件适应场景变化易于阅读的能力:易于阅读、易于实现、恰到好处,降低长期维护的成本。
可读性可以降低代码理解所需的时间,将作者的信息准确地传递给阅读者。这体现在:
- 传递足够的信息:利用名称、格式传递信息;
- 减少信息失真:业务术语统一,命名和注释准确具体;
- 减少信息干扰:无废弃代码和无效注释,缩写/简写保持一致;
- 降低信息理解难度:功能单一,简化语句逻辑,减少变量影响范围。
1.1.2 可维护
软件可修改、扩展、复用的能力:纠错、改进、新增需求或功能规格变化的适应能力。
提升以上能力主要在两处发力:
- 隔离不同变化:高内聚
- 耦合点要稳定:低耦合
实现上述两点目标需要遵守SOLID原则:
- 单一职责原则(Single Responsibility Principle)
- 开放封闭原则(Open Closed Principle)
- 里氏替换原则(Liskov Substitution Principle)
- 接口分离原则(Interface Segregation Principle)
- 依赖倒置原则(Dependency Invenrsion Principle)
1.1.3 可测试
软件发现故障并隔离、定位故障的能力,以及在一定的时间和成本的前提下进行测试设计、测试执行的能力:可隔离、可控制、可观测、可定位。
可隔离、可控制是可维护的延伸。
TDD是实现可测试的较好手段。
1.1.4 可靠
在给定时间间隔和环境条件下,按设计要求运行成功程序的概率:预防、容错、自愈。
可靠性常常和资源、通信、状态、业务流程、数据规模、代码实现等因素有关。
常见的可靠性问题有:linux和windows在一些字符的表述上不同;日志没有清理功能导致磁盘占用等。
1.1.5 高效
尽量少使用系统资源的能力:CPU、内存、硬盘、网络带宽等。
常见的方法有选择高效的算法,较少冗余或无效计算等。
1.1.6 可移植
适应不同环境的能力:CPU、编译器、操作系统、软硬件平台与环境等。
1.1.7 安全
软件面对威胁的防护能力,保持系统信息的机密性、完整性和可用性:未授权访问/使用、泄露、破坏、篡改、毁灭等。
1.2 优先级
视情况而定。一般情况情况下,各原则的优先级排序如下:
安全>可靠>可读>可维护>可测试>高效>可移植。
2 Clean Code评估
从可量化和不可量化两个方面进行评估。量化部分通过工具实现,不可量化部分需要专家评估。
2.1 专家评估
《代码整洁之道》提出WTF评估方法。
- 数量维度:依据专家经验对代码评估,发现代码坏味道越少的代码越Clean
- 时间维度:发现代码坏味道所花的时间越长越Clean
2.2 工具评估
略
3 Clean Code实现
3.1 实现方法
- 设计与TDD
- 代码重构
- 工具检查
- 专家评估
3.2 Clean Code分层
- L0:功能正确
- L1:代码安全
- L2:代码整洁
- L3:代码架构敏捷
- L4:系统架构敏捷