重构手法05:Introduce Explaining Variable (引入解释性变量)

 

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

if (Platform.ToUpperCass().indexOf("MAC") > -1 && (Browser.ToUpperCass().indexOf("Ie") > -1) && WasInitalized() )

            {

                //do something

            }

 

 

const bool imMacOs = Platform.ToUpperCass().indexOf("MAC") > -1;

const bool isIeBrowser = Browser.ToUpperCass().indexOf("Ie") > -1;

const bool wasInitalized = WasInitalized();

    if (imMacOs && isIeBrowser && wasInitalized)

     {

         //do something

     }

 

 

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

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

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

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

         3、编译、测试

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

 

你可能感兴趣的:(variable)