程序员超强大脑——避免低质量代码和认知负荷:两种框架

本文探讨了代码异味如何影响代码结构、可维护性和认知负荷,重点关注过长的方法、过长的参数列表、复杂的Switch语句、重复代码和低质量标识符等问题,强调结构清晰和代码组织的重要性。
摘要由CSDN通过智能技术生成

为什么存在异味的代码会加重认知负荷

代码异味: 结构不理想的代码。

代码异味解释级别
过长的方法方法不宜包括执行不同计算的代码方法
过长的参数列表方法不宜包括太多参数方法
负责的Switch语句程序不宜使用复杂的Switch语句,考虑用多态来替换Switch语句可以简化方法
异曲同工的类不宜使用两个初看不同、但字段和方法其实相似的类
基本类型偏执避免在类中过度使用基本类
不完美的程序类库应该在程序类库而不是随机类中添加方法
过大的类类包括的方法和字段不宜过多,否则难以判断类所代表的抽象
冗赘类类包括的方法和字段不宜过少
纯数据类类不宜只包括数据,还应该包括方法
临时字段类不宜包括不必要的临时字段
数据泥团应该把经常组合使用的数据存储在独立的类或结构中
发散式变化通常情况下,代码修改应该在局部进行,最好限制在一个类内。如果必须在不同的位置做出许多不同的调整,则表明代码结构存在问题代码库
依恋情结如果B类从A类中引用了大量方法,则表明这些方法更适合放在B类里,应该把他们从A类移至B类代码库
狎昵关系类与类之间的联系不宜过多代码库
重复的代码(代码克隆)代码库的多个不同位置不宜出现相同或极为相似的代码代码库
注释注释应该用于描述代码存在的原因为不是代码的作用代码库
过长的消息链避免使用过长的消息链(多层嵌套调用)代码库
中间人如果某个类将自身的许多方法委托给其他类,则应该重新考虑这个类是否有存在的必要代码库
平行继承体系如果为一个类创建子类的同时还要为另一个类创建子类,则表明两个类的功能可能应该放在一个类型里代码库
被拒绝的遗赠如果类继承了没有使用的行为,则表明继承可能并无必要代码库
霰弹式修改通常情况下,代码修改应该在一个类内进行。如果必须在不同位置做出许多小的调整,则表明代码结构出存在问题代码库
夸夸其谈的通用性避免为“以防万一”而向代码库中添加功能,只添加需要用到的功能代码库
与方法有关的代码异味

如果方法包括多行代码并提供多种功能,那么表明存在“过长的方法”异味或“上帝方法”异味;如果方法传入太多参数,则表明存在“过长的参数列表”异味。

与类有关的代码异味

代码异味既可能与方法有关,也可能与类有关,过大的类就是一例。

与代码库有关的代码异味

除了方法层面和类层面的代码异味,整个代码也可能存在异味。如果代码库的不同位置出现相同或极为相似的代码,那么表明存在“重复的代码(代码克隆)”异味。

代码异味的影响

有异味不一定说明代码错误,但有异味的代码往往更容易出错。

代码异味对认知的负面影响

  1. 导致工作记忆过载的异味:过长的参数列表和复杂的switch语句
  2. 阻碍有效分块异味:过大的类和过长的方法
  3. 导致分块错误的异味:重复的代码

低质量的标识符对认知负荷的影响

代码异味指受到结构反模式影响的代码,即代码本省没有错误,但构造方式不理想。
代码中还可能存在概念反模式,即代码结构正确,但标识符具有误导性。
采用语言反模式来描述这类代码问题。

6种语言反模式
方法声明的功能多于方法实现的功能
方法声明的功能少于方法实现的功能
方法声明的功能不符合方法实现的功能
标识符描述的内容多于实体包含的内容
标识符描述的内容少于实体包含的内容
标识符描述的内容不符合实体包含的内容
  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值