コンストラクタと初期化メソッドの書き方で悩む


コンストラクタと初期化メソッドの書き方で悩む。パラメータの初期化をコンストラクタで行い、その他の振る舞いを初期化メソッドで行う (下の例で 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);
カテゴリー: Flash   パーマリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>