2011-12-21 5 views
0

がクラス以上のコンストラクタ内

package 
{ 

public MyClass 
{ 

    var myA:Number = 10 ; //<< initializing here 

    public function MyClass() 
    { 
     myA = 20; //<< initializing here 
    } 

} 

} 

1フォローする正しい方法があるがあると言う対定義の値を初期化するかの違いは何ですか?

答えて

3

私が出席した会議では、最適化に関するセッション中に、コンストラクターで多くの割り当てや操作を行うのが賢明でないこと、または関数外の変数を宣言することが勧められました。そのため、コンパイラはこれらのセクションを徹底的に最適化するわけではありません。

これは、変数を関数外に宣言し、初期化関数で代入することをお勧めします。ただし、変数がコンストラクタにパラメータとして渡され、それらを渡すことを避けたい場合は除きますもう一度。

package{ 

public MyClass { 

    private var myA1:Number; //declare here 
    public var myA2:Number; //declare here 

    public function MyClass(arg1:Number = 10):void{ 
     myA1 = arg1;//assigns myA1 a Number passed into the constructor, or 10 
     init(); 
    } 
    public init():void{ 
     myA2 = 20; //assigns myA2 a value of 20 
    } 
} 
} 

また、Googleで検索したところ、私はこの記事が同意したと判断しました。

http://voices.yahoo.com/flash-actionscript-3-optimization-guide-part-1-4793274.html

はあなただけのものにあなたのために物事が容易になり、特定の方法を行い、その後、後で最適化することを、覚えておいてください。ただ、それをやり遂げることはスタイルイモより重要です。

希望に役立ちます。

+0

'+ 1'コンストラクタをできるだけ軽量にしておくことをお勧めします。大部分のケースでコンストラクタを完全に省略し、代わりに 'construct()'メソッドを使用する独自のフレームワークを使用します。 – Marty

関連する問題