重构——3内联临时变量(Inline Temp)

内联临时变量(Inline Temp)

你有一个临时变量,只被一个简单表达式赋值一次,而它妨碍了其他重构手法。将所有对该变量的引用动作,替换为对它赋值的那个表达式自身

一、动机

1、作为“以查询取代临时变量”的一部分使用

2、临时变量妨碍了其他的重构手法

二、做法

1、检查给临时变量赋值的语句,确保等号右边的表达式没有副作用

2、如果这个临时变量并未被声明为final,就将它声明为final,然后编译,确保这个变量真的只被赋值了一次

3、找到该临时变量的所有引用点,将它们替换为“为临时变量赋值”的表达式

4、每次修改后,编译并测试

5、修改完所有的引用点之后,删除该临时变量的声明和赋值语句

6、编译,测试

时间: 2024-07-29 22:52:28

重构——3内联临时变量(Inline Temp)的相关文章

重构——2内联函数(Inline Method)

内联函数(Inline Method) 一个函数本体与名称同样清楚易懂,在函数调用点插入函数本体,然后移除该函数. 一.动机 1.非必要的间接性总让人不舒服 2.把组织不合理的一群函数重新组织 3.并不是所有的间接层都有价值,委托太多,会让人晕头转向 二.做法 1.检查函数,确定它不具多态性 2.找出这个函数所有的被调用点 3.将这个函数所有的调用点都替换为函数本体 4.编译,测试 5.删除该函数的定义

重构——13将类内联化(Inline Class)

将类内联化(Inline Class) 某各类没有做太多的事情:将这个类的所有特性搬移到另外一个类中,然后移除原类 一.动机 类萎缩了,不再承担足够的责任了 二.做法 1.在目标类身上声明public协议,并将其中所有函数委托至源类 2.修改所有源类引用点,改而引用目标类 3.编译,测试 4.运用Move Method,MoveField,将源类的特性全部搬移到目标类 5.为源类举行一个简单的丧礼

vc++-VC++内联汇编 变量未初始化问题

问题描述 VC++内联汇编 变量未初始化问题 char input; int input1=input; 我是这么写的..然后出现了代码未初始化的问题..input是需要输入的值.input1是输入的值中的整数.这么运行的话我之后的输出会是任意一个负的整数..求教 解决方案 没太搞明白你说的问题.你是想把input里的数字字符变成整数赋给input1吗? 如果是,可以这样: input1=input-'0'; 解决方案二: 一个字符型的值赋值给整型能对么- 解决方案三: push input1;

C++ 内联inline

原文链接:http://www.cnblogs.com/berry/articles/1582702.html inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把函数指定为内联.       inline int min(int first, int secend) {/****/};       inline 函数对编译器而言必须是可见的,以便它能够在调用点内展开该函数.与非inline函数不同的是,inline函数必须在调用该函数

CSS文档流与块级元素(block)内联元素(inline)

将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流. 每个非浮动块级元素都独占一行, 浮动元素则按规定浮在行的一端. 若当前行容不下, 则另起新行再浮动. 内联元素也不会独占一行. 几乎所有元素(包括块级,内联和列表元素)均可生成子行, 用于摆放子元素. 有三种情况将使得元素脱离文档流而存在,分别是浮动,绝对定位, 固定定位.   基于文档流, 我们可以很容易理解以下的定位模式: 相对定位, 即相对于元素在文档流中位置进行偏移. 但保留原占位. 绝对定位, 即完全脱离文档

C语言中的内联函数(inline)与宏定义(#define)详细解析_C 语言

先简明扼要,说下关键:1.内联函数在可读性方面与函数是相同的,而在编译时是将函数直接嵌入调用程序的主体,省去了调用/返回指令,这样在运行时速度更快. 2.内联函数可以调试,而宏定义是不可以调试的.内联函数与宏本质上是两个不同的概念如果程序编写者对于既要求快速,又要求可读的情况下,则应该将函数冠以inline.下面详细介绍一下探讨一下内联函数与宏定义. 一.内联函数是什么?内联函数是代码被插入到调用者代码处的函数.如同 #define 宏(但并不等同,原因见下文),内联函数通过避免被调用的开销来提

C++编程中队内联函数的理解和使用_C 语言

函数调用过程c++经过编译生成可执行程序文件exe,存放在外存储器中.程序启动,系统从外存储器中将可执行文件装载到内存中,从入口地址(main函数起始处)开始执行.程序执行中遇到了对其他函数的调用,就暂停当前函数的执行,并保存下一条指令的地址作为从被调函数返回后继续执行的入口点,保存现场.然后转到被调函数的入口地址执行被调函数.遇到return语句或者被调函数结束后,恢复先前保存的现场,从先前保存的返回地址处继续执行主调函数的其余部分. 内联函数函数调用需要进行现场保护,以便在函数调用之后继续进

详解C++中的内联函数和函数重载_C 语言

内联函数(内嵌函数,内置函数) 调用函数时需要一定的时间和空间的开销.C++提供一种提高效率的方法,即在编译时将函数调用处用函数体替换,类似于C语言中的宏展开.这种在函数调用处直接嵌入函数体的函数称为内联函数(inline function),又称内嵌函数或内嵌函数. 指定内联函数的方法很简单,只需要在定义函数时增加 inline 关键字. 注意:是在函数定义时增加 inline 关键字,而不是在函数声明时.在函数声明时增加 inline 关键虽然没有错误,但是也没有任何效果 inline 关键

重构——4以查询取代临时变量(Replace Temp with Query)

以查询取代临时变量(Replace Temp with Query) 你的程序以一个临时变量保存某一个表达式的结果.将这个表达式提炼到一个独立函数中,将这个临时变量所有的引用点替换为对新函数的调用,此后,新函数就可以被其他函数使用 一.动机 临时变量是暂时的,只能在所属函数中使用 二.做法 1.找出只被赋值一次的临时变量 2.将该临时变量声明为final 3.编译 4.将"对该临时变量赋值"之语句的等号右侧部分提炼到一个独立函数中.首先将函数声明为"private"