Clean Code: 程序员的自我修养


Clean Code: 程序员的自我修养

MangoGO 芒狗狗


1 Clean Code的定义

  《代码整洁之道》针对Clean Code进行了专业的解析,生产干净、可维护的代码可以减少攻击者可获得的漏洞。

  Clean Code的标准——Program SMaRT:

  1. 简洁/可读(Simple)
  2. 可维护(Maintenance)
  3. 可测试(Testable)
  4. 可靠(Reliable)
  5. 高效(Performance)
  6. 可移植(Portable)
  7. 安全(Safety)

1.1 详细解读

1.1.1 简洁/可读

  软件适应场景变化易于阅读的能力:易于阅读、易于实现、恰到好处,降低长期维护的成本。
  可读性可以降低代码理解所需的时间,将作者的信息准确地传递给阅读者。这体现在:

  1. 传递足够的信息:利用名称、格式传递信息;
  2. 减少信息失真:业务术语统一,命名和注释准确具体;
  3. 减少信息干扰:无废弃代码和无效注释,缩写/简写保持一致;
  4. 降低信息理解难度:功能单一,简化语句逻辑,减少变量影响范围。

1.1.2 可维护

  软件可修改、扩展、复用的能力:纠错、改进、新增需求或功能规格变化的适应能力。
  提升以上能力主要在两处发力:

  1. 隔离不同变化:高内聚
  2. 耦合点要稳定:低耦合

  实现上述两点目标需要遵守SOLID原则:

  1. 单一职责原则(Single Responsibility Principle)
  2. 开放封闭原则(Open Closed Principle)
  3. 里氏替换原则(Liskov Substitution Principle)
  4. 接口分离原则(Interface Segregation Principle)
  5. 依赖倒置原则(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评估方法。

  1. 数量维度:依据专家经验对代码评估,发现代码坏味道越少的代码越Clean
  2. 时间维度:发现代码坏味道所花的时间越长越Clean

2.2 工具评估

  略

3 Clean Code实现

3.1 实现方法

  1. 设计与TDD
  2. 代码重构
  3. 工具检查
  4. 专家评估

3.2 Clean Code分层

  1. L0:功能正确
  2. L1:代码安全
  3. L2:代码整洁
  4. L3:代码架构敏捷
  5. L4:系统架构敏捷
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MangoGO芒狗狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值