按作用域分: 1.在类中声明的变量或常量叫属性,或者叫成员变量。 2.在方法中声明的变量叫局部变量,或者临时变量。 3.属性可以使用四种权限修饰符修饰,局部变量不可以。 4.属性可以使用static修饰,局部变量不可以。 5.属性可以使用final修饰,局部变量也可以。 6.属性的生命周期很长,随着 ...
分类:
其他好文 时间:
2017-09-15 10:00:47
阅读次数:
143
你的程序有某个临时变量被赋值超过一次,它既不是循环变量,也不被用于收集计算结果。针对每次赋值,创造一个独立、对应的临时变量 重构后: 动机:临时变量有各种不同用途,其中某些用途会很自然的导致临时变量被多次赋值。“循环变量”和“结果收集变量”就是典型的例子:循环变量会随循环的每次运行而改变; 结果收集 ...
分类:
其他好文 时间:
2017-09-15 02:05:12
阅读次数:
147
代码对一个 参数赋值。以一个临时变量取代该参数的位置。 重构后: 动机:要清楚“对参数赋值”这个说法的意思。如果你把一个名为foo的对象作为参数传给某个函数,那么“对参数赋值”意味着改变foo,使它引用另外一个对象。如果你在“被传入对象”身上进行什么操作,那没什么问题。这里只针对“foo被改而指向另 ...
分类:
其他好文 时间:
2017-09-15 01:47:49
阅读次数:
161
所谓的以查询取代临时变量:就是当你的程序以一个临时变量保存某一个表达式的运算效果。将这个表达式提炼到一个独立函数中。将这个临时变量的所有引用点替换为对新函数的调用。此后,新函数就可以被其他函数调用。 例子如下: 重构之后代码: 引用书中原文来说: 动机:临时变量的问题在于:它们是暂时的,而且只能在所 ...
分类:
其他好文 时间:
2017-09-15 01:45:44
阅读次数:
163
发现:你有一个复杂的表达式。 解决:将该复杂的表达式(或其中的部分)的结果放进一个临时变量,并以此变量名称来解释表达式用途。 动机:表达式有可能非常复杂而难以阅读。这种情况下,临时变量可以帮助你将表达式分解为比较容易管理的形式。 在条件逻辑中,Introduce Explaining Variabl ...
分类:
其他好文 时间:
2017-09-15 01:41:28
阅读次数:
234
Inline Method (内联函数) 一个函数调用的本体与名称同样清楚易懂。在函数调用点插入函数体,然后移除该函数。 int GetRating() { return MoreThanfiveLateDeliverise() ? 2 : 1; } bool MoreThanfiveLateDel ...
分类:
其他好文 时间:
2017-09-13 00:37:00
阅读次数:
307
1. 函数调用栈的回顾 (1)用于保存函数中的实参、局部变量、临时变量等。 (2)从起始地址开始往一个方向增长(如:高地址→低地址) (3)有一个专用“指针”标识当前已使用内存的“顶部” (4)当函数调用结束时,栈会恢复到被调用前的状态。可以利用这个时机进行一些的回溯算法的设计。 【实例分析】函数调 ...
分类:
其他好文 时间:
2017-09-13 00:19:25
阅读次数:
181
左值就是在赋值中可以放在赋值操作符两边的值 右值则是只可以放在赋值操作符右边的值 ++i是直接给i变量加1,然后返回i本身,因为i是变量,所以可以被赋值,因此是左值表达式i++现产生一个临时变量,记录i的值,而后给i加1,接着返回临时变量,然后临时变量不存在了,所以,不能再被赋值,因此是右值表达式 ...
分类:
编程语言 时间:
2017-09-10 22:14:43
阅读次数:
213
练习14.13 对于Sales_data类来说,没有其他的算术运算符需要重载了,对于其它的运算没有意义; 练习14.14 首先operator+有两个参数,其参数类型为const,是不需要改变的,其返回类型为Sales_data类型的一个拷贝。不过每次都需要在函数体内定义一个临时变量,用来返回拷贝。 ...
分类:
编程语言 时间:
2017-09-10 20:49:14
阅读次数:
150
追问 你给的例子给了我很好的启发,因为JS可以多层嵌套代码,可能下面还可以再嵌一个方法,引用this就会变成子方法控制的对象,如果需要上级的对像,在没有参数的情况下,前面前提做了一个临时变量_this,可以保存上级对像,子方法中就可以用_this来调用了,这才是目的。 也许正如你所说的,我的那个方法 ...
分类:
其他好文 时间:
2017-09-07 17:04:40
阅读次数:
1103