Clean Code学习笔记

143 阅读2分钟

有意义的命名

  • 名副其实:名称不需要注释补充就可见其含义、用途。避免功能迭代后方法已经变了但名称还没变

  • 避免误导:比如名字是xxList,但并不是一个list

  • 做有意义的区分:比如ProductInfo和ProductData,从名字上看不出区别

  • 使用读的出来的名字:避免过分缩写,如yyds

  • 使用可搜索的名字:比如xxxConsumer,xxxEnum

  • 避免思维映射:不要让别人把你的名字翻译成他们熟悉的名字

  • 类名:名词

  • 方法名:动词

  • 每个概念对应一个名字:比如获取多个对象用list做前缀,获取单个对象用get做前缀

    • add、save、insert、query、get、select、list
  • 尽量用术语:计算机、数学、专业领域术语

  • 别用双关词:add

具体实践

  • 枚举Enum结尾
  • 工具类Utils结尾
  • 设计模式相关的类,如Factory结尾、Proxy结尾
  • 接口实现类Impl结尾
  • 消费者Consumer结尾
  • 校验方法valid开头
  • 异步方法Async结尾
  • map命名keyValueMap

函数

  • 短小:20行最佳
  • 只做一件事:单一职责
  • 使用描述性的名词:不要怕命名太长
  • 函数参数:入参超过3个最好封装成类
  • 别重复自己:消除重复代码
  • 先把函数写出来,再规范化

具体实践

  • 注意for循环内的逻辑,避免出现循环RPC调用
  • 方法逻辑修改的同时,考虑方法名是不是也要修改
  • 事务方法内不要调用外部接口

注释

  • 注释不能美化糟糕的代码:代码还是重写吧

  • 类、类属性、类方法的注释必须使用 Javadoc 规范:不写IDEA会有提示

  • 好注释:

    • 提供信息、解释意图、警示、阐释、todo注释
  • 坏注释:

    • 啰嗦、多余、误导性、废话

格式

  • 垂直距离

    • 变量声明应该尽可能靠近使用位置
    • 实体变量应该放在类的顶部声明
    • 相关的函数应该放在一起
    • 函数的排列顺序保持其相互调用的顺序
    • 通过空行分隔不同逻辑,提高可读性
  • 水平位置

    • 一行代码尽量短,不超过100 - 120 个字符
    • 用空格将相关性弱的分开

写完代码整理一下:IDEA整理代码快捷键 option+command+L

cl.png