代码的坏味道

本文探讨了代码中常见的坏味道,如重复代码、过长函数、过大的类和过长参数列表等,并提供了相应的重构策略。强调了类和函数的单一职责原则,提倡减少依赖和提高代码可读性。同时,指出了一些设计问题,如发散式变化、霰弹式修改和数据泥团等,并提出了改进方案。通过识别和重构这些坏味道,可以提高代码的可维护性和可扩展性。
摘要由CSDN通过智能技术生成

代码的坏味道

Duplicated Code(重复代码)

同一个类的两个函数含有相同的表达式或互为兄弟的子类内含有相同表达式

Long Method(过长函数)

拥有短函数的对象会活的比较好、比较长
遵循的原则:每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立函数中,并以其用途(而非实现手法)命名

Large Class(过大的类)

过大的类往往影响阅读,且其中必定含有可分解提炼的方法,

Long Parameter List(过长参数列)

将来自同一对象的一堆数据收集起来

Divergent Change(发散式变化)

针对某一外界变化的所有相应修改,都只应该发生在单一类中,如果某一变化总是影响到多个函数的修改,则应该把这多个函数提炼到另一个类中

Shotgun Surgery(霰弹式修改)

如果某一变化必须在许多不同的类里做出许多小修改,则应该把所有需要修改的代码放进同一个类里

Feature Envy(依恋情结)

函数对某个类的兴趣高过对自己所处类的兴趣,则应该把它移动到这个类里

Data Clumps(数据泥团)

把很多常常一起出现的数据提炼到一个新数据类里

Primitive Obsession(基本类型偏执)

判断所用数据是基本类型好还是对象好,灵活运用

Switch Statements(switch惊悚现身)

switch往往伴随着重复,当然也不是不能用switch,比如有几种电影类型,每种电影价格不同且每种电影积分也不同时,就可能会出现使用两次甚至更多次switch(电影类型)的重复代码

Parallel Inheritance Hierarchies(平行继承体系)

每当为某个类增加一个子类,必须也为另一个类相应增加一个子类

Lazy Class(冗赘类)

去除没用的类

Speculative Generality(夸夸其谈未来性)

去除没用的抽象类

Temporary Field(令人迷惑的暂时字段)

尽量少用局部变量

Message Chains(过度耦合的消息链)

避免函数调用链过长

Middle Man(中间人)

某个类接口有一半的函数都委托给其他类,则应让它直接和真正负责的对象打交道

Inappropriate Intimacy(狎昵关系)

两个类过于亲密,则应把两者的共同点提炼到一个新类里

Alternative Classes with Different Interfaces(异曲同工的类)

两个函数做同一件事,应该提炼相同部分

Incomplete Library Class(不完美的库类)

根据修改库类的函数多少选择继承库类还是包装库类

Data Class(纯稚的数据类)

数据类应该充分的封装,做到数据的安全

Refused Bequest(被拒绝的遗赠)

子类不想继承一些父类的某些函数和数据,应该为子类新建一个兄弟类,把所有不需要继承的函数和数据推给这个兄弟类

Comments(过多的注释)

注释越少越好,通过重构手法把需要注释的类或函数提炼

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值