代码重构之引入解释性变量

意图

  • 临时变量可以帮助你将表达式分解为比较容易管理的形式
  • 在较长的算法中,可以运用临时变量来解释每一步运算的意义

示例

/**
 * 引入解释性变量之前
 * Created by luo on 2017/4/23.
 */
public class IntroduceExplainingVariableBefore {
    private String platform;
    private String browser;
    private int resize = 0;

    public void test(){
        if ((platform.toUpperCase().indexOf("MAC") > -1) && (browser.toUpperCase().indexOf("IE") > -1) && wasInitialized() && resize > 0){
            //do something
        }
    }

    private boolean wasInitialized() {
        return false;
    }
}
/**
 * 引入解释性变量之后
 * Created by luo on 2017/4/23.
 */
public class IntroduceExplainingVariableAfter {
    private String platform;
    private String browser;
    private int resize = 0;

    public void test() {
        final boolean isMacOs = platform.toUpperCase().indexOf("MAC") > -1;
        final boolean isIEBrowser = browser.toUpperCase().indexOf("IE") > -1;
        final boolean wasResized = resize > 0;

        if (isMacOs && isIEBrowser && wasInitialized() && wasResized) {
            //do something
        }
    }

    private boolean wasInitialized() {
        return false;
    }
}
时间: 2024-10-12 21:01:07

代码重构之引入解释性变量的相关文章

第2章 重新组织函数(3):引入解释性变量、分解临时变量和移除对参数的赋值

5. 引入解释性变量(Introduct Explaining Variable) //引入解释性变量 //重构前 if((platform.toUpperCase().indexOf("MAC") > -1) && (browser.toUpperCase().indexOf("IE") > -1) && wasInitialized() && resize > 0) { //do somethin

引入解释性变量

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42417535         在上一篇文章中介绍了"以查询取代临时变量".本文将介绍"引入解释性变量"这种重构手法.         下面让我们来学习这种重构手法吧. 开门见山         发现:你有一个复杂的表达式. 解决:将该复杂的表达式(或其中的部分)的结果放进一个临时变量,并以此变量名称来解释表达式用途. //重构

重构改善既有代码设计--重构手法05:Introduce Explaining Variable (引入解释性变量)

  发现:你有一个复杂的表达式. 解决:将该复杂的表达式(或其中的部分)的结果放进一个临时变量,并以此变量名称来解释表达式用途. //重构前 if((platform.toUpperCase().indexOf("MAC") > -1) && (browser.toUpperCase().indexOf("IE") > -1) && wasInitialized() && resize > 0) {

1.5 引入解释性变量

[1]源代码 1 bool wasInitialized() 2 { 3 // do something... 4 return true; 5 } 6 7 void Func(QString platform) 8 { 9 if (platform.toUpper().indexOf("MAC") > -1 && 10 platform.toUpper().indexOf("IE") > -1 && 11 wasInit

代码重构之内联临时变量

意图 - 有一个临时变量,只被一个简单表达式赋值一次,而它妨碍了其他重构手法 示例 /** * 内联临时变量之前 * Created by luo on 2017/4/19. */ public class InlineTempBefore { Order anOrder = new Order(); public boolean test() { double basePrice = anOrder.basePrice(); return basePrice > 10; } } /** * 内

代码重构之分解临时变量

意图 如果临时变量承担多个责任,它就应该被替换(分解)为多个临时变量,每个变量只承担一个责任 示例 /** * Created by luo on 2017/4/24. */ public class SplitTemporaryVariableBefore { private double _height; private double _width; public void test(){ double temp = 2 * (_height + _width); System.out.pr

重构笔记——分解临时变量

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42463871         在上一篇文章中介绍了"重构笔记--引入解释性变量".本文将介绍"分解临时变量"这种重构手法.         下面让我们来学习这种重构手法吧. 开门见山         发现:你的程序有某个临时变量被赋值超过一次,它既不是循环变量,也不被用于收集计算结果. 解决:针对每次赋值,创造一个独立.对应的

重构笔记——引入本地扩展

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/44958839         在上一篇文章中介绍了"引入外加函数".本文将介绍"引入本地扩展"这种重构手法.         下面让我们来学习这种重构手法吧. 开门见山         发现:你需要为服务类提供一些额外函数,但你无法修改这个类. 解决:建立一个新类,使它包含这些额外函数.让这个扩展品成为源类的子类或者包装类.

代码重构(一):函数重构规则

重构是项目做到 一定程度后必然要做的事情.代码重构,可以改善既有的代码设计,增强既有工程的可扩充.可维护性.随着项目需求的不断迭代,需求的不断更新,我们在项目中 所写的代码也在时时刻刻的在变化之中.在一次新的需求中,你添加了某些功能模块,但这些功能模块有可能在下一次需求中不在适用.或者你因为需求迭代与变 更,使你原有的方法或者类变得臃肿,以及各个模块或者层次之间耦合度增加.此时,你要考虑重构了. 重构,在<重构,改善既有代码的设计>这本经典的书中给出了定义,大概就是:在不改变代码对外的表现的情