Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Очень много import (http://www.flasher.ru/forum/showthread.php?t=146090)

micromacro 28.10.2010 18:40

Очень много import
 
Привет ребят. Возникла проблема, что у меня много класов раскиданных по разным папкам. Проблема в том что они сильно друг от друга зависят и приходиться в каждом классе писать огромное кол-во импортов.

import mymodel.myshape.*;
import mymodel.mycrystal.moving.*;
...
...

Может можно как то поставить по дефолту чтобы ФлекБилдер смотрел в текущий проект.

Bgg 28.10.2010 18:45

Много это сколько? 500?

Mur4ik 28.10.2010 19:27

Если у Вас в одном классе используется очень много других, стОит задуматься о рефакторинге или о архитектуре приложения в целом.

micromacro 28.10.2010 20:43

Много это по 20. Неужели нельзя как -то сделать?

КорДум 28.10.2010 20:58

Это вы весь код сосредотачиваете в главном классе, что ли?

Mur4ik 28.10.2010 21:09

Цитата:

Сообщение от micromacro (Сообщение 946138)
Много это по 20. Неужели нельзя как -то сделать?

Зависимость одного класса от 20 это много, нет это не много, это очень много.
Но рефакторинг для вас тут не вариант, как я понял.

Возможно мы не улавливаем проблемы, Вы же не руками импорты пишете?

micromacro 28.10.2010 21:28

В том то и дело, что приходиться руками делать импорты.

Например есть класс myModel в котором юзаются MyRender,MyFilter,MyPositioner, MyNetConnection и так далее. А эти классы для удобства и наглядности разложены в свои пакеты. В итоге мне приходиться частенько делать кучу вот таких:

import mymodel.*;
import mymodel.myshape.*;
import mymodel.mycrystal.moving.*;

Мне кажется, должно быть какое-то лёгкое решение, которое позволяет компилятору смотреть сперва в эти пакеты и там искать класс, если он не будет найден то тогда да, спросить "эй прог, что это за класс где его брать?". Может что-то связанное c namespace и т.д.

Цитата:

Это вы весь код сосредотачиваете в главном классе, что ли?
Наоборот разбрасываю по классам.

Код AS1/AS2:

Зависимость одного класса от 20 это много, нет это не много, это очень много.

Ну классы по 200-1000 строк кода. Разве двадцать типов это много?

f.g.programmer 28.10.2010 23:02

А в чём вы пишете? Во FlashDevelop проблем с автопрописыванием импортов нет, думаю в FDT и FlashBuilder тоже.
Да и компилятор от Flex SDK вам ничего не скомпилит без импортов и скажет, о каких именах ничего не знает.

micromacro 29.10.2010 02:42

Пишу на as3 во FlexBuilder

Добавлено через 2 минуты
В java если пишешь в ide Eclipse он подкрашивает неизвестный класс и сам предлагает варианты для импорта при наведении на класс в тексте. Может такое есть??

Bgg 29.10.2010 02:54

ctrl+shift+1

Psycho Tiger 29.10.2010 13:14

Код:

        import artshlagin.events.VkontakteEvent;
        import events.GameEvent;
        import flash.events.TimerEvent;
        import flash.utils.Timer;
        import game.GameController;
        import network.Vkontakte;
        import events.CustomDataEvent;
        import events.LobbyEvent;
        import flash.display.DisplayObjectContainer;
        import flash.display.MovieClip;
        import flash.display.Shape;
        import flash.events.Event;
        import flash.events.EventDispatcher;
        import flash.events.MouseEvent;
        import flash.ui.Mouse;
        import flash.utils.setTimeout;
        import flufme.as3.network.vkontakte.SimpleConnector;
        import lobby.LobbyController;
        import network.ServerConnector;

Вот мои, 19. Что лишнее?

При рефакторинге планирую добавить Graphics, DisplayObject, IEventDispatcher и несколько других, будет больше.

-De- 29.10.2010 14:24

setTimeout - устарел же.
network.Vkontakte/flufme.as3.network.vkontakte.SimpleConnector - зачем два?
flash.events.* и flash.display.* и видимость приличия соблюдена)
Вообще интересно, что за класс, что ему всё это надо, может побить его на три? %)

Psycho Tiger 29.10.2010 14:35

Бейз контроллер.
Про flufme.as3.network.vkontakte.SimpleConnector - согласен. Второй надо побрить )

setTimeout отлично делает свою работу. Не вижу нужды заводить Timer на какую-то мелочь.

i.o. 29.10.2010 14:41

в последний раз при профайлинге в FD заметил, что setTimeout оставляет каку в памяти и не убирает за собой.

Psycho Tiger 29.10.2010 14:49

Я очень плохо пользуюсь профайлером. )

Mur4ik 29.10.2010 15:02

Psycho Tiger, твой вопрос из серии оценивания, вплотную поднесенной к замочной скважине, картины. Могу и голов поназабивать исходя из твоего клочка информации, но не это сейчас обсуждаем.

Я уже не помню как это было во флекс билдере, во флеш билдере в автокомплите указывается и наименование пакета для класса. И встречая классы с одинаковыми названиями в доступных пакетах, любая хорошая IDE должна предоставить выбор.

В FlashDevelop Ctrl+Space автокомплит исходя из текущего контекста, Ctrl+Alt+Space все доступные классы из всех доступных пакетов.
Но вот Flash/Flex Builder вроде туговат для такого. Надеюсь что он достаточно умен чтоб по нажатию Ctrl+Space на нужном слове мог предложить все возможные варианты импорта, а не только ближайшие по его соображениям.

Psycho Tiger 29.10.2010 15:10

Mur4ik, это был сарказм по поводу оценки, извини что ввёл тебя в заблуждение.

Просто 20 - "это много" - на мой взгляд это информация ложная. Например, DisplayObject, InteractiveObject, DisplayObjectContainer, Sprite, EventDispatcher, IEventDispatcher, IDataInput, Socket, Timer, TextField, IDataOutput, Sound, URLRequest, Loader - будет использовать простенькая программа для коннекта к серверу и вывода информации. Типа "в сокет упала картинка - вот!", или там отображателя ссылок. Конечно может с IDataInput/output погорячился, но суть такая. И это ещё без пользовательских классов! Если кастовать тяп-ляп (например, нужен только x и y, а кастуем к MovieClip) - классов конечно будет меньше, но ведь это и не хорошо.

Или ты имеешь ввиду 20 не-нативных? Тогда безусловно, много. )

udaaff 29.10.2010 15:22

Цитата:

Сообщение от micromacro (Сообщение 946138)
Много это по 20. Неужели нельзя как -то сделать?

а 19 нормально?

Цитата:

«Если волосы с головы выпадают по одному, с какого момента человек становится лысым?»
Можно было бы спорить о том, что тот или иной импорт лишний (из-за неверной архитектуры) в условиях конкретной задачи, но не как ни о том что их много или мало где-то, неизвестно, вообще, где.

Psycho Tiger 29.10.2010 15:28

Цитата:

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

Mur4ik 29.10.2010 15:43

Цитата:

Сообщение от Psycho Tiger (Сообщение 946317)
Например, DisplayObject, InteractiveObject, DisplayObjectContainer, Sprite, EventDispatcher, IEventDispatcher, IDataInput, Socket, Timer, TextField, IDataOutput, Sound, URLRequest, Loader - будет использовать простенькая программа для коннекта к серверу и вывода информации. Типа "в сокет упала картинка - вот!", или там отображателя ссылок.

Не оч хочется хливарить тут :) Но что то на ум не приходит пример из реального проекта где в одном классе можно было бы собрать столько разношорстной лабуды.

Цитата:

Сообщение от Psycho Tiger (Сообщение 946317)
Или ты имеешь ввиду 20 не-нативных? Тогда безусловно, много. )

Если учесть что такое скопление не в большинстве классов, то нормально. У меня такие простыни получаются только там где собраны все основные зависимости для проекта, это от 1 до 3 классов. С некоторых пор пошла у меня мания дробления всего что напрашивается в отдельные объекты.

Но опять же я со своей колокольни сужу, могу и ошибаться - ОГРОМНЫХ проектов не пишу, возможно там это сплошь и рядом.

100% согласен с udaaff, всё относительно. Пусть каждый для себя решает где много и где мало, а время покажет. ;)


Часовой пояс GMT +4, время: 23:29.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.