代码的异味

代码的异味

一.duplicated  code

当相同或者相似的程序结构出现在一个以上的地方的时候,这段代码就需要合而为一,提炼出一个方法共调用。

分为3种情况,

1.同一个类的两个函数含有相同的表达式。

处理方式:使用extract method提炼出这重复代码,然后在这两个地方调用这个函数。

2.互为兄弟的两个子类含有相同的表达式

处理方式:对这两个类extract method提炼出重复代码到一个函数,然后采用pull up method推入他们的超类中。

3.两个无关的类中出现dulicated code。

处理方式:采用extract method提炼出重复代码,并将重复代码放到一个合适的类中(可以是单独的一个独立的类,也可以是这两个类中的一个。这个根据设计中职责划分的原则选择),然后在原来出现的地方调用这个方法。

 

二.long method

小型函数的有点:自解释能力,共享能力,选择能力(使用多态特性封装条件逻辑)。

 

为避免logn mehtod我们应该积极的分解函数,分解的过程中应遵循一个原则:每当感觉需要以注释来说明一段代码做什么事情的时候,就应该把这段代码封装到一个函数同,并以其用途或者功能(也就是注释的内容)来为其命名。

处理方式:使用extract method提炼函数。

 

提炼函数的过程中可能需要将大量的参数和临时变量当作新函数的参数传递过来使用,这会引起提炼出的函数参数过长。一般遇到这个问题可以使用replace temp with query来消除这些临时变量,采用instroduce parameter object 和 preserve whole object则可以将过长的参数列表变得简洁。

 

如果经过上述的处理后仍然有太多临时变量和参数,我们就可以使用repace method with method object。

 

三.large class

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值