コンストラクタと初期化メソッドの書き方で悩む。パラメータの初期化をコンストラクタで行い、その他の振る舞いを初期化メソッドで行う (下の例で 1 + 2) のがベストか?
1. コンストラクタ内完結型
恐らく最も一般的な書き方。
public function Hoge(p0:int, p1:int, p2:int) { this.p0 = p0; this.p1 = p1; this.p2 = p2; } var hoge:Hoge = new Hoge(1, 2, 3);
2. 初期化メソッド (private) 型
コンストラクタの中身を抽出した書き方。初期化メソッドを何度も使用できるが冗長になる。
public function Hoge(p0:int, p1:int, p2:int) { initialize(p0, p1, p2); } private function initialize(p0:int, p1:int, p2:int):void { this.p0 = p0; this.p1 = p1; this.p2 = p2; } var hoge:Hoge = new Hoge(1, 2, 3);
3. 初期化メソッド (public) 型
コンストラクタの中身を抽出して public にした書き方。インスタンスを先に生成しておいて遅延初期化できるが、初期化されていない場合のエラーハンドリングが必要。
public function Hoge() { } public function initialize(p0:int, p1:int, p2:int):void { this.p0 = p0; this.p1 = p1; this.p2 = p2; } var hoge:Hoge = new Hoge(); hoge.initialize(1, 2, 3);