zoukankan      html  css  js  c++  java
  • 重构改善既有代码设计--重构手法05:Introduce Explaining Variable (引入解释性变量)

      发现:你有一个复杂的表达式。

      解决:将该复杂的表达式(或其中的部分)的结果放进一个临时变量,并以此变量名称来解释表达式用途。

    //重构前  
    if((platform.toUpperCase().indexOf("MAC") > -1) &&  
        (browser.toUpperCase().indexOf("IE") > -1) &&  
        wasInitialized() && resize > 0)  
    {  
        //do something  
    }  
    //重构后  
    final boolean isMacOs = platform.toUpperCase().indexOf("MAC") > -1;  
    final boolean isIEBrowser = browser.toUpperCase().indexOf("IE") > -1;  
    final boolean wasResize = resize > 0;  
      
    if(isMacOs && isIEBrowser && wasInitialized() && wasResize){  
        //do something  
    }  

    动机:表达式有可能非常复杂而难以阅读。这种情况下,临时变量可以帮助你将表达式分解为比较容易管理的形式。

             在条件逻辑中,Introduce Explaining Variable (引入解释性变量)是一个很常见的手法,但是最好尽量使用 Extract Method (提炼函数)来解释一段代码的意义。毕竟临时变量只在他所处的那个函数才有意义,局限性较大。函数则可以在对象的这个生命中都有用,并且可被其他对象使用。但有时候,当局部变量使Extract Method (提炼函数)难以进行时,就可以使用Introduce Explaining Variable (引入解释性变量).

    做法:1、声明final临时变量,将待分解的复杂表达式中的一部分动作的运算结果赋值给他。

             2、将表达式中的“运算结果”这一部分,替换为上述临时变量。如果被替换的这一部分在代码中重复出现,你可以一次一个,逐次替换。

             3、编译、测试

             4、重复上述过程,处理表达式的其他部分。

    总结:这种一般很少用,一般就用于比较复杂的语句计算的时候,定义一个临时变量,因为这个时候采用内联可能会显得太长了,反而不好看,所以就定义一个有意义的临时变量,并将变量声明为final

  • 相关阅读:
    家目录,Linux常用命令概述
    Day003_Linux基础——系统目录结构
    Day002_LInux基础_常用命令_001
    Day002_LInux基础_常用命令
    Linux_Day001-002章常用命令
    Linux基础Day001-001章
    pycharm单行及多行注释快捷键
    配置ospf的路由器连通配置静态路由的路由器
    python--闭包
    主机数和可用主机数计算
  • 原文地址:https://www.cnblogs.com/pony1223/p/7523486.html
Copyright © 2011-2022 走看看