函数即变量,这里的函数指的是返回值为某一对象的函数.Replace temp with query,query 是一种查询函数. example 1 double price() { return this.quantity * this.itemPrice - Math.max(0, this.quantity - 500) * this.itemPrice * .05 + Math.min(this.quantity * this.itemPrice * 0.1, 100.0); } 将其重…
所谓的以查询取代临时变量:就是当你的程序以一个临时变量保存某一个表达式的运算效果.将这个表达式提炼到一个独立函数中.将这个临时变量的所有引用点替换为对新函数的调用.此后,新函数就可以被其他函数调用. 例子如下: double basePrice = _quantity*_itemPrice; if (basePrice > 1000) { return basePrice * 0.95; } else { return basePrice * 0.98; } 重构之后代码: if (BasePr…
返回总目录 6.4Replace Temp with Query(以查询取代临时变量) 概要 你的程序以一个临时变量保存某一表达式的运算结果. 将这个表达式提炼到一个独立函数中.将这个临时变量的所有引用点替换为对函数的调用.此后,新函数就可以被其他函数使用. 动机 临时变量的问题在于:只在当前函数可见.如果你在同类的别的地方访问这个变量,你就必须重新写表达式来获取这个变量,这样的话你就会在不经意间让你的函数变得复杂起来.如果将临时变量替换为一个查询,那么同类中所有函数都可以获得这份信息. 所以如…
Replace Temp with Query,顾名思义,表示你用查询来替换临时变量本身,临时变量对于函数来说是只有当前函数可见的,如果你在同类的别的地方要用到这个变量你就必须重新写表达式来获取这个变量,这样的话你就会在不经意间让你的函数变得复杂起来,所以如果你想要使用Extract Method,那么Replace Temp with Query是必不可少的一个步骤.而我们前面介绍的Inline Temp其实是这个手法的一部分,两者的区别在于Inline Temp已经有了表达式自身,只需要做简…
临时变量的问题在于: 它们是暂时的,而且只能在所属函数内使用.由于临时变量只在所属函数内可见,所以,如果很多地方都在用这个临时变量,就会驱使你写出更长的函数.如果把临时变量替换为一个查询,那么其他函数中都可以获得这份信息. 以查询取代临时变量是提炼函数之前必不可少的一个步骤.局部变量会使代码难以被提炼,所以应该尽可能把他们替换为查询式. 这个重构手法较为简单的情况是:临时变量只被赋值一次或者赋值给临时变量的表达式不受其他条件影响. 示例: 初始代码为(2个临时变量): function getP…
double GetPrice() { int basePrice = _quantity * _itemPrice; double discountFactor; ) { discountFactor = 0.95; } else { discountFactor = 0.98; } return basePrice * discountFactor; } double GetPrice() { return BasePrice() * DiscountFactor(); } int Base…
函数代码://demo.c #include<stdio.h> #include<stdlib.h> , global2 = , global3 = ; void function(void) { , local5 = , local6 = ; , static5 = , static6 = ; int *p2 = (int*)malloc(sizeof(int)); printf("子函数 局部变量 : \n"); printf("local4 :…
1.选择重构代码段 2.重构 – 抽取方法 3.命名重构代码段抽取的方法 4.使用抽取的方法…
首先感谢园友的指定,后续的文章一定会多码多想,出来的文章才有说服力.那今天接上篇我们来聊一聊匿名函数,对于匿名函数,我们知道使用delegate关键字,那我们来需要知道匿名函数在变量是的处理方式,先说两个术语,外部变量和捕获的外部变量,可以看出"捕获的外部变量=外部变量+捕获了",这个捕获顾名思义就是在匿名函数中使用了这个变量. 外部变量:指在一个包含匿名方法的作用域内的变量或者参数,在类的实例成员内部的匿名方法,this也是认为是一个外部变量. 捕获的外部变量:它是指在匿名方法中使用…
第四章 Refactoring Code The solutions you develop in Android Studio will not always follow a straight path from design to finish. To be an effective Android programmer, you need to be flexible and refactor your code as you develop, debug, and test. In t…