我想知道当我写这样的临时变量时有什么区别(这些只是示例):
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,那意味着我的值显式存储在每个周期清除的临时变量中?
答案 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.