美文网首页
代码坏味道自检清单

代码坏味道自检清单

作者: GuangHui | 来源:发表于2022-10-08 09:41 被阅读0次
    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)解决方案
                - 团队统一编程方案
                - 提取函数,将不同层次的内容放到不同的函数中
    

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

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

    相关文章

      网友评论

          本文标题:代码坏味道自检清单

          本文链接:https://www.haomeiwen.com/subject/oubiartx.html