代码坏味道自检清单

2022-10-08  本文已影响0人  GuangHui
1 命名
    (1)坏味道自检
        - 命名是否具有业务含义
            - 命名不精准,用词宽泛,不能有效反应代码含义
            - 用技术术语命名
        - 命名是否符合英语语法
            - 违反语法规则
            - 不准确的英语词汇
            - 拼写错误
    (2)解决方案
        - 用业务语言命名
        - 描述意图,而非细节
        - 制定代码规范,建立团队词汇表,使用命名插件codelf
2 重复代码
    (1)坏味道自检
        - 复制粘贴的代码
        - 结构重复的代码
        - if和else代码块中语句高度类似
    (2)解决方案
        提取函数
3 函数
    3.1 长函数
        (1)坏味道自检
            - 代码行数是否超过20行
        (2)编程原则
            - 定义长函数的标准
            - 做好分离关注点
            - 坚守童子军军规:让营地比你来时更干净
    3.2 长参数
        (1)坏味道自检
            - 参数列表是否超过3个
        (2)解决方案:将参数封装成一个类
        (3)注意
            - 变动频率
            - 标记参数
            - 模型封装以行为为基础
4 类
    4.1 大类
        (1)坏味道自检
            类的字段是否超过10个
        (2)解决方案
            拆分小类
        (3)编程原则
            单一职责
    4.2 依赖混乱
        (1)坏味道自检
            - 缺少防腐层,业务与外部接口耦合
            - 业务代码中出现具体实现类
        (2)解决方案
            - 引入防腐层,将业务和接口隔离
            - 引入一个模型,将业务与具体实现隔离
        (3)编程原则
            依赖倒置原则
5 语句
    5.1 滥用控制语句
        (1)坏味道自检
            - 嵌套的代码
            - else语句
            - 重复的switch
            - 循环语句
        (2)解决方案
            - 提取单个元素操作
            - 用卫语句简化条件表达式
            - 使用多态取代条件表达式
        (3)编程原则
            - 函数至多有一层缩进
            - 不要使用else关键字
    5.2 过长的消息链
        (1)坏味道自检
            火车头残骸,连续的函数调用
        (2)解决方案
            隐藏委托关系,封装
        (3)编程原则:迪米特法则
    5.3 基本类型偏执
        (1)坏味道自检
            使用各种基本类型作为模型传递
        (2)解决方案
            以对象取代基本类型
    5.4 可变的数据
        (1)坏味道自检
            - 缺失行为,暴露细节
            - 可变的数据
                - 满天飞的setter
                - 初始化后的setter
            - 全局数据
        (2)解决方案
            限制变化,尽可能编写不可变类
    5.5 变量的声明与赋值分离
        (1)坏味道自检
            - 变量声明之后是否立即赋值
            - 集合声明之后是否有立即添加元素
        (2)解决方案
            - 在声明前加上final
            - 用声明式的方式进行集合的初始化
        (3)编程原则
            变量要一次性完成初始化
    5.6 语言新特性
        (1)坏味道自检
            - 是否使用语音新特性
            - Optional
            - 函数式编程
        (2)编程原则
            不断学习新的代码风格,不管改善自己的代码
    5.7 不一致的代码
        (1)坏味道自检
            - 命名中的不一致
            - 方案中的不一致
            - 代码中的不一致
        (2)解决方案
            - 团队统一编程方案
            - 提取函数,将不同层次的内容放到不同的函数中

学完代码之丑的专栏之后,做了系统的笔记,并积极在自己的开发中进行践行,感觉收获颇多。

说实在的,这种收获感比学那些高大上的架构知识,都来得更为幸福。而为了更好地做到自我检视,这次再整理一份自检清单出来,希望在帮助自己的同时,也能帮助到更多有缘人。

上一篇下一篇

猜你喜欢

热点阅读