重构改善既有代码设计

代码重构之重新组织数据

2017-06-20  本文已影响43人  过期的薯条

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。

三目表达式能极大的简介代码。

上一篇 下一篇

猜你喜欢

热点阅读