临时变量

时间:2011-11-12 02:54:14

标签: actionscript-3 variables temp

我想知道当我写这样的临时变量时有什么区别(这些只是示例):

VERSION1

for each tempEnemy in enemyManager.enemies {
var tempX:int = tempEnemy.x;
}

或者这个:

版本2

for each tempEnemy in enemyManager.enemies {
tempEnemy.oldX = tempEnemy.x;
}

出了什么问题,对吗?目前我把它写成版本2,我不确定是否应该将其更改为版本1.有人可以帮我解决这个问题吗?我知道大多数开发人员都喜欢版本1,但我有点困惑,因为我完全没有意识到版本1.如果我使用版本1,那意味着我的值显式存储在每个周期清除的临时变量中?

2 个答案:

答案 0 :(得分:2)

...还 添加:variableType(int,String,Number等)有助于代码提示和调试。

答案 1 :(得分:1)

在版本1中声明:

var tempX:int

定义一个变量,该变量只持续与for(或for-each)循环的迭代一样长。每个迭代tempX都是定义的,给定来自Enemy对象的值,并且最后留给垃圾收集。

在版本2中,引用附加到名为Enemy的临时变量引用的tempEnemy对象的两个变量。

在两个版本中,对Enemy对象tempEnemy的引用将被重新分配给下一个迭代的Enemy对象。

每种方法都有其优点。从内存的角度来看,版本2可能更好,因为它会反复更改现有变量,而不是创建在每次迭代结束时丢弃的新变量。另一方面,版本1不要求你在其类变量中定义oldX,如果没有这些变量,这通常会变得非常糟糕。

代码的最佳实践基于(a)与其他程序员合作,他们需要能够阅读和理解代码,以及(b)离开项目并稍后返回,在那里您需要能够阅读和理解您自己的代码。对于你不打算共享的简短项目,版本2是可以的(并且可能更节省内存),但任何大型项目都应该使用更像版本1的东西。

另一个考虑因素是,除了定义(设置)的函数之外,您是否将使用该变量?如果没有,则不需要将其存储在对象中,该对象再次指向版本1.