Зачем ставить импортные заявления в упаковке? - PullRequest
1 голос
/ 24 июня 2010

В AS3, почему мы помещаем наши операторы импорта в оператор пакета, а не в объявление класса?

Это типичный (но довольно бессмысленный) класс 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));
        }
    }
}

Но почему все операторы импорта предназначены для того, чтобы пройти весь путь вверх по классу?Класс работает отлично, когда я перемещаю импорт внутрь объявления класса, как показано ниже.

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

Только пакет MovieClip должен быть в пакете, потому что мой класс его расширяет.

Нет ничего полезного в соглашениях по кодированию Adobe AS3 .

Так почему же мы помещаем импорт в пакет, а не в класс, который их фактически использует?Пакет не использует импортированные классы, не так ли?И почему это все еще работает, если я перемещаю импорт в Класс?

1 Ответ

1 голос
/ 24 июня 2010

Это просто соглашение, которое используется, поэтому есть одно центральное место для просмотра всего импорта.Допустим, мы перенесем вашу логику в следующий край и поместим оператор импорта в строку непосредственно перед каждой объявленной нами переменной (которая, кстати, прекрасно компилируется).Мы бы без необходимости дублировали импортные заявления, нарочно или случайно.Кроме того, кому-то, кто хочет увидеть, какие зависимости у данного файла, придется сканировать весь файл, а не смотреть только на верхнюю часть файла.Ваша цель поместить импорт в объявление класса не так уж и сумасшедшая, но вы все равно столкнетесь с проблемой импорта, разбросанного по файлу, если ваш файл объявляет более одного класса (как в случае классов, используемых внутринапример).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...