如何写漂亮的代码

最近读了代码整洁之道和编写可维护代码的艺术,发现这两本书的道理还是相同的,主要是下面这几点,命名,注释,逻辑,函数,格式,组织。写篇文章整合记录一下。

命名

好的命名有下面的特征

  • 名副其实
  • 名字与抽象层级符合
  • 有表现力
  • 名字带上更多信息
  • 大作用域的名字使用更长的名字。
  • 避免误导,类似,容易混淆的名字
  • 名字的区分有意义
  • 可读的/容易搜索/熟悉的名字
  • 每个概念用同一个名字,如获取数据统一用fetchXXX
  • 少用双关语
  • 添加有意义的语境

注释

  • 不要为能迅速发现的地方写注释
  • 注释的作用
    • 记录想法和对代码的理解
    • 提供信息
    • 对意图的解释
    • 对不能修改,难以理解的地方的解释
    • 警示,陷阱的提醒
    • TODO
    • 常量
    • 解答读者疑问
  • 好的注释
    • 紧凑
    • 精准
    • 用输入输出来说明

逻辑

  • 让控制流更易读
    • length<10好于10>length,让左边变化,右边为常量
    • 先处理简单的情况,可疑的情况,正逻辑
    • 使用卫语句提前结束逻辑
    • 最小化嵌套
  • 拆分超长表达式
    • 使用解释变量代替表达式
    • 使用总结变量代替一段代码
  • 变量与可读性
    • 减少没有价值的变量,中间过程变量,控制流变量
    • 减小变量作用域
    • 变量在使用前定义
    • 多用不可变变量

函数

  • 短小
  • 只做一件事
  • 不重复
  • 只有一个抽象层级
  • 避免多参数,如果要,包装成一个对象
  • 分割查询作用的函数和指令函数

  • 短小
  • 单一权责
  • 内聚
  • 易修改

格式

  • 一致布局
  • 相关代码分组,形成代码块
  • 列对齐
  • 使用有意义的排序,如重要程度,先后顺序,字母顺序
  • 代码分成段落
  • 让代码自上而下阅读
  • 意思相近的代码靠近

组织

  • 抽取子问题
  • 纯工具代码统一维护
  • 简化已有接口
  • 按需重塑接口
  • 使用自然语言描述代码
  • 少些代码
  • 使用参数来控制需要按顺序执行的多个函数
hpoenixf wechat
扫码获取最新博客推送
支持作者