抽取出重复的代码

重构重复代码是收效最大的方法之一, 总代码量会大大的减少, 维护上也变得方便, 代码条理清晰, 而且在IDE(idea)工具中超过两次重复使用IDE工具也会给出提醒, 你需要毫不犹豫的把其抽取到合适的方法当中。(图)
image.png

image.png

这几个用例,也就是抽取了一些同样的代码出来!

将很长很长的方法进行分割

其实这点和抽取重复代码是有不可分割的关系的, 往往我们提炼重复代码的过程中, 也就不知不觉的分割了冗长的方法。 倘若你提炼了大部分的重复代码, 某写冗长代码以然存在, 此刻就要静下心专门处理这些方法了。
风格代码我们应遵循按照功能点分割,不然取名会成问题, 他人去看也会产生理解问题, 一个好的名字无比的重要。(图, 一段js的页面函数)

image.png

嵌套条件分支分解

大量的嵌套条件如果不是自己编写的话会让人望而却步的, 是需要大力避免的, 根据【结构化原则】一个函数只能有一个出口, 但是在大量嵌套的条件分支下, 忘了这些规则把。将不满足某些条件的情况放在方法前面, 及时的跳出方法!
(给出错误示范图)
image.png

(正确)
image.png

去掉一次性的临时变量

一次性用具(非必须)无论在代码还是现实生活中都是浪费的(如筷子), 代码中一次性变量对性能也是有小小的影响, 对可读性也是一种亵渎
(错误提示)
image.png
(正确提示)
image.png

过长的参数列表需消除

对于一个传递了大量参数的方法, 追求代码整洁的程序员是无法接受的, 我们可以将其封包为一个对象传递过去, 从而去除过长的参数列表。 而且一般情况下当我们遇到这种场景的适合, 这个封装体往往已经存在
(如图)
image.png

提取出体系中的常量,排除魔法值

为了消除一些魔法值或者常量等等, 这些特性代来的弊端自不用说, 最主要会对程序的意图产生迷惑, 而且提取出后, 可以达到一处修改,处处生效
(如图)
image.png

让类提供应该提供的方法

我们经常会操作一个类的大部分属性,从而得到一个最终我们想要的结果。这种时候,我们应该让这个类做它该做的事情,而不应该让我们替它做。 不过这个行为也有待商榷, 在规范上, 并不是所有的人这样做做, 处理只在service层也是规范。

拆分冗长的类

我们拆分一个类应该主要集中在类的属性上, 拆分出来的两批属性在逻辑上是可以隔离的, 并且代码中, 两批属性都使用在不同的方法中, 这是一个较大的工程, 因为往往一个大类已经被很多类所使用了, 因此一定要谨慎, 这是有难度的, 是要考验架构能力的。

重构行为上的建议

重构十六字心法

【旧的不变】
【新的创建】
【一步切换】
【旧的再见】
image.png

团队体会

你需要认知到【重构】它不是一项任务, 【重构】一定是也应该是随时发生的, 每一次的改进都需要进行一定的重构。

最后--- 熟读《整洁代码之道--重构》

今天先到这儿, 抽空写这套书的感悟!

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

脸朝大海, 春暖花开 ----江大脸