读《 Clean Code-代码整洁之道》分享。

1,805 阅读2分钟

提纲

整洁代码

有意义的命名

格式

注释

函数

对象和数据结构

错误处理

边界

测试

整洁代码

  • 统一风格
  • 不要重复整洁代码

有意义的命名

  • 名副其实
  • 做有意义的区分
    • 对功能类似的变量名采用统一的命名风格
  • 使用解决方案领域名称

格式

  • 格式是美观的充分条件

  • 遵守团队规则

  • 例如:

    • 大小写一致
    • 调用函数的函数和被调函数应放在较近的位置
    • 对存在一定业务逻辑复杂性的代码进行注释
    • 不要在代码库中遗留被注释掉的代码

注释

  • 注释不能美化糟糕的代码
  • 用代码来阐释
  • 好注释
  • 基础数据的注释
  • 提供信息的注释
  • 对意图的注释
  • Todo注释 *不要有冗余注释

函数

  • 短小

    • 每行150个字符
    • 每个函数20行 *只做一件事 *不要有匿名函数
  • 函数参数

    • 零到三个,最好没有
  • 别重复自己

    • 移除重复的代码
  • 无副作用

    • 当函数产生了除了“接受一个值并返回一个结果”之外的行为时,称该函数产生了副作用。
    • 少用输出参数
    • 不要使用标记(Flag)作为函数参数
  • 使用异常替代返回错误码

  • 抽离try catch代码块

  • 不要写全局函数

  • 封装判断条件

  • 避免“否定情况”的判断

  • 避免条件判断

  • 避免类型判断

  • 删除无效的代码

  • 如何写出好的函数

    • 先实现,然后优化

  • 单一职责原则 (SRP)
  • 开/闭原则 (OCP)
    • 指的是我们应允许用户方便的扩展我们代码模块的功能,而不需要打开 js 文件源码手动对其进行修改。
  • 利斯科夫替代原则 (LSP)
    • 子类对象应该能够替换其超类对象被使用
  • 接口隔离原则 (ISP)
    • 不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。

对象和数据结构

  • 边界要清晰
  • 对象暴露行为,隐藏数据
  • 数据结构暴露数据,没有明显行为

错误处理

  • 使用异常而非返回码
  • 给出异常发生的环境说明
  • 将错误处理独立于主逻辑之外

错误处理

  • 分离已知和未知边界
    • 使用尚不存在的代码
  • 保持边界整洁

测试

  • 单一的测试每个概念
  • 测试全面
  • 别略过小测试
  • 被忽略的测试就是对不确定事物的疑问
  • 全面测试相近的缺陷
  • 快速

参考资料