在变量声明或构造函数中实例化类

时间:2011-04-13 14:26:07

标签: actionscript-3 actionscript

  

可能重复:
  Where is the “proper” place to initialize class variables in AS3

我想知道是否有人知道更好地在它的变量声明或构造函数中实例化类?例如,这个:

protected var _errorHandler:ErrorHandler = new ErrorHandler();

或者这个:

protected var _errorHandler:ErrorHandler;

public function someClass() {
_errorHandler = new ErrorHandler();
}

我认为这是一个小问题,但我希望我的代码尽可能强大和高效!

由于

克里斯

1 个答案:

答案 0 :(得分:7)

为了便于阅读,首选构造函数中的初始化 - 以便能够轻松查看在何时初始化的内容。最不可读的选择是混合这些,我不推荐。

您将看到AS3程序员使用的第三个选项:

  • 变量声明中没有初始化
  • 清空(或接近空)构造函数
  • 在一个或多个专用init()函数中完成的所有初始化

这种方法有两个要点:

  1. 您可以通过再次调用init轻松重置对象以便重复使用
  2. 您可以解决AS3不会让您像其他类似语言(Java / C ++ / C#)一样重载构造函数的限制。例如,您可能希望能够使用一种或多种不同类型的对象初始化数据结构。
  3. 就性能而言,我相信你的两个例子会编译成相同的字节代码。 AS3编译器为构造函数之外的静态声明创建了一个特殊的类初始化程序,但是对于在声明时初始化的常规成员变量,我希望它只是将初始化移动到构造函数内部。但它是将它们向前移动还是在构造函数中明确指出之后?我不记得了,这就是为什么我把可读性作为将一切都放在构造函数中的主要原因: - )