2011-12-21 29 views
0

說還有一類是什麼,如果初始化VS內部構造

package 
{ 

public MyClass 
{ 

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

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

} 

} 

哪一個以上是按照正確的方式定義的值不同?

回答

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 
    } 
} 
} 

以及在谷歌搜索後,我發現這篇文章,似乎同意。

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

請記住,你可能只想做事情一定的方式,使事情變得更容易爲你,再後來優化;因爲,剛剛完成它比風格imho更重要。

希望有所幫助。

+0

'+ 1'保持構造函數儘可能輕量化是個好主意。我使用自己的框架,在大多數情況下完全省略構造函數,而是使用我創建的'construct()'方法。 – Marty 2011-12-22 00:26:24

相關問題