• 代码坏味道


    随之代码的不断开发,协同作战,代码里将会出现很多奇诡的东西.
    以下,这些代码总让人头大

    1.神秘命名

    let a = "1";
    let aaa = "2";
    let katse = a+aaa;
    
    • 1
    • 2
    • 3

    2.重复代码

    同一类中或者在同一个项目中,频繁出现的拷贝粘贴函数

    3.过长函数

    想像一下,打开一个文件只有两个函数,这两个函数却拥有一千多行的代码逻辑,谁还有心情去理解呢

    4.过长参数列表

    一个函数有超出4个入参,并且上不封顶,为什么不使用引入对象参数呢?

    5.全局数据

    变量放全局,各处使用随时赋值,永远不知道是哪个逻辑的bug

    6.可变数据

    在不同的地方,修改更新了同一个变量的数据,导致数据混乱!

    优化:
    1.封装变量
    2.封装变量为类,即以查询取代派生变量

    7.发散式变化

    例子:在一个类中,加入一个新的数据库,需要修改3个函数、修改这个引用,我需要改动5个函数
    这样,将数据关心的数据挪移到同一个类中进行统一管理输出.
    在调用方,只关心一个调用,不关心数据的来源

    8. 霰弹式修改

    修改某个变化,就要在多个类中进行各种细微的修改,此时,就可以将这些相关的类挪移到同一个类中,进行管理

    9.依恋情结

    一个类中的的函数与其他函数或类的数据交换特别多,那么如此严重的数据依赖,为什么不考虑转移函数到其他的相关类中呢

    10. 数据泥团

    同样的数据结构出现爱多个地方,可以抽离出来作为类处理

    11.基本类型偏执

    过度使用基本类操作,如果有大量关于某一类的运算或者断言,可以进行封装结构或者多态方式替代

    12.重复的switch

    重复的switch可以被提炼,并不代表这所有的switch都必须使用多态来处理

    13. 循环语句

    用管道符更优雅的处理循环,比如filter和map

    14.冗余的元素

    随着代码量的增加,一些函数或者数据会被增加很多冗余的元素,使用类或者内联函数,清晰提取相关数据元素,进行统一处理

    15.夸夸其谈的通用性

    缩小类的使用范围,做不必要的通用性缩减,抽离的超类,没有那么大的责任,就可以放到小的模块中

    16.临时字段

    创建的临时字段,有时候,你的意思就是临时作用,然而,你不知道它的临时结束日期是什么时候,所以,可以使用搬移函数将相关函数或字段放入新的类中,或者引入特例,创建你一个替代对象,避免写条件式代码

    17.过长的消息链

    let notice = require("./notice");
    let people = notice.info.sendMessage.list;
    
    • 1
    • 2

    18.中间人

    过度的隐藏内部结构

    19.内幕交易

    类内的数据交换异常频繁,可以考虑将数据单独作为类处理

    20.过大的类

    一个类中拥有过多的函数,承担过重的逻辑

    21. 异曲同工的类

    拥有差不多功能的类,可以被合并

    22.纯数据类

    在纯数据类中创建查看/修改函数

    23.被拒绝的遗赠

    当子类不需要使用超类的函数或数据,可以使用委托代替子类

    24.注释

    注释是好的,但是,当你的代码需要过多的注释才能让人看懂的话,是不是可以考虑语义化命名函数、拆分函数等等操作

  • 相关阅读:
    2022年9月1日:Visual Studio Code 中的 GitHub 简介(未做完)
    天视通等小众冷门摄像机接入安防监控系统EasyCVR平台的常见兼容问题及解决方法
    【技术】视频汇聚/视频云存储/视频监控管理平台EasyCVR安全检查相关问题及解决方法2.0
    C++教程笔记链接推荐
    计算机算法分析与设计(20)---回溯法(0-1背包问题)
    开发JSP应用的基础知识
    【MySQL】实时监控和分析MySQL服务器性能指标的命令
    JAVA:面向对象++封装+继承【详细】
    Safran与是德科技合作为蔚来提供电动汽车中的5G和C-V2X连接测试
    vue项目中实现用户登录以及token验证
  • 原文地址:https://blog.csdn.net/Long861774/article/details/125497383