1.引言
最近看代码重构的数据遇到问题了。很多重构手法都不是很明白,于是捡自己遇到的能理解的,记录下。
2.正题
8.1 replace Data Value with Object(以对象取代数据值)
将基本类型数据封装成对象数据。此重构手法主要是方面以后的拓展,实际项目中不是很常用。理解下意思就行。
8.2 replace Array with Object(以对象取代数组)
假如一个数据保存的是不同属性的值。可以用对象来代替数组。一种封装的思想。
8.3 Encapsulate Filed(封装字段)
将属性字段设置成private,然后提供get/set 方法。之所以设置成私有而不是public。因为这样可以降低程序的耦合性。虽然我经常喜欢写成public的。但是以后还是注意吧。
9.1 Decompose Conditional(分解条件表达式)
条件逻辑往往是造成代码难以阅读的罪魁祸首。我自己写代码的时候有的甚至能嵌套3。4个if/else。假如不注意,那么每个分支的代码会很大难以阅读。。所以当分支的 代码太大,要单独的写一个方法来处理。
9.2 Consolidate Conditional Expression(合并条件表达式)
将有些不必要的if/else 合并成一个。
合并重复代码
public void test(){
int total;
if (isPass()){
total++;
send();
}else {
total--;
send();
}
}
一般写if/else代码的时候,先写if,然后在写else。假如嵌套多了的话,为了避免错误,重复了就重复了。这是我以前写代码的思想。。但是现在当发现if/else 代码块有重复的部门必然会想着怎么提出来。避免重复。
9.3 Remove Control Flag(移除控制标记)
在做for循环或者判断的时候。能用break.return,continue尽量用这些控制标记,能减少不必要的循环。
9.4 以卫语句代替嵌套语句。
条件表达式通常有俩种表现形式。第一种是:所有的分支都是正常的业务逻辑;第二种是:只有一种业务逻辑是正常的。。第一种:通常就不得不用if...else.....; 第二种:如果某一个条件极其的罕见,就应该单独检查该条件。当条件位置正的时候立马retrun。这样的单独检查成为“卫语句”。。判断某一个是不是符合要求的值,也是一样。在方法开始的时候就给予判断,true继续执行,false立马结束掉循环。
9.5 多态 简化条件表达式,或者代替switch
9.6 使用三目表达式代替 if或者if/else。
三目表达式能极大的简介代码。
网友评论