2011-12-21 2 views
0

클래스 위의생성자 내부

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

또한 Google에서 검색 한 후 동의하는 것으로 보이는이 기사를 발견했습니다.

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

그냥 일을 당신을 위해 쉽게 일을하게하는 특정한 방식으로 수행하고 나중에 최적화 할 수 있다는 것을 명심하십시오; 왜냐하면, 단지 그것을 끝내는 것은 스타일 imho보다 더 중요합니다.

희망이 있습니다.

+0

'+ 1' 설명 된대로 가능한 한 가볍게 생성자를 유지하는 것이 좋습니다. 나는 대부분의 경우에 생성자를 완전히 생략하고 생성하는'construct()'메서드를 대신 사용하는 자체 프레임 워크를 사용합니다. – Marty