2010-06-23 3 views
1

AS3에서는 import 선언문을 클래스 선언문에 넣지 않고 package 문에 넣는 것이 어떻습니까?패키지에 import 문을 넣는 이유는 무엇입니까?

이것은 일반적인 (오히려 무의미) AS3 클래스입니다 :

package my.foo.package 
{ 
    import flash.display.MovieClip; 
    import flash.events.Event; 
    import flash.events.TimerEvent; 
    import flash.utils.Timer; 

    public class FooClass extends MovieClip 
    { 
     public static const EVENT_TIME_UP:String = 'timeUpEvent'; 

     public function FooClass() 
     { 
      var timer:Timer = new Timer(2000, 1); 
      timer.addEventListener(TimerEvent.TIMER, timerHandler); 
      timer.start(); 
     } 

     private function timerHandler(e:TimerEvent):void 
     { 
      dispatchEvent(new Event(FooClass.EVENT_TIME_UP)); 
     } 
    } 
} 

왜 모든 import 문은 클래스에 외부, 거기 모든 방법을 이동하기위한 것입니다? 클래스를 아래처럼 클래스 선언 내부로 가져올 때 클래스는 완벽하게 작동합니다.

package my.foo.package 
{ 
    import flash.display.MovieClip; 

    public class FooClass extends MovieClip 
    { 
     import flash.events.Event; 
     import flash.events.TimerEvent; 
     import flash.utils.Timer; 

     public static const EVENT_TIME_UP:String = 'timeUpEvent'; 

     public function FooClass() 
     { 
      var timer:Timer = new Timer(2000, 1); 
      timer.addEventListener(TimerEvent.TIMER, timerHandler); 
      timer.start(); 
     } 

     private function timerHandler(e:TimerEvent):void 
     { 
      dispatchEvent(new Event(FooClass.EVENT_TIME_UP)); 
     } 
    } 
} 

내 수업에서 확장하기 때문에 패키지에 있어야하는 것은 영화 클립 가져 오기 일뿐입니다.

Adobe AS3 coding conventions에는 아무런 관련이 없습니다.

그래서 우리는 왜 실제로 패키지를 사용하는 클래스가 아닌 패키지에 가져 오기를 넣을까요? 패키지가 가져온 클래스를 사용하고 있지 않습니까? 수입품을 클래스로 옮기면 왜 아직도 작동합니까?

답변

1

이것은 단순히 사용중인 규칙이므로 모든 가져 오기를 한 곳에서 볼 수 있습니다. 우리가 당신의 논리를 다음 극단으로 가져 가고 우리가 선언 한 모든 변수 바로 앞에 줄에 import 문을 놓습니다. 우리는 의도적이든 우발적이든 상관없이 수입 명세서를 불필요하게 복제 할 것입니다. 또한, 주어진 파일이 어떤 의존성을 가지는지 알고 자하는 사람은 파일의 맨 위만을 보는 것이 아니라 전체 파일을 스캔해야합니다. 클래스 선언에 가져 오기를 넣는 것이 어렵지는 않지만 파일에 클래스가 두 개 이상 있다고 선언하면 파일 전체에 흩어져있는 가져 오기 문제로 인해 어려움을 겪을 수 있습니다 (예 : 내부 클래스, 예를 들어).

+0

마지막 괄호 안의 부분을 제외하고 소식에 동의하십시오. 내부적으로 사용되는 클래스 (패키지 명령문 블록 외부의 개인 클래스)에 대해 클래스를 다시 가져와야합니다. 패키지 블록 내부의 import 문은 패키지 블록 외부에서 볼 수 없습니다. – Amarghosh

관련 문제