![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
strange mood
|
Идея такая: делаем хеш из классов, и в зависимости от параметра создаём и возвращаем объект нужного класса.
private function createModuleView(moduleType:String, moduleModel:Model):View{ var classes:Object = {}; classes[SiteModuleType.TEXT ] = site.modules.text.ModuleView; classes[SiteModuleType.PHOTO ] = site.modules.photo.ModuleView; classes[SiteModuleType.PHOTOSET ] = site.modules.photoset.ModuleView; classes[SiteModuleType.SETGROUP ] = site.modules.setgroup.ModuleView; return new classes[moduleType](moduleModel); }//createModuleView Что я делаю не так?
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Вопрос первый: зачем хеш пересоздавать каждый раз при вызове метода?
Вопрос второй: чем не угодил switch? Вопрос третий: какое значение moduleType передается? |
|
|||||
|
strange mood
|
1. Переписал этот кусок цепочкой if - return'ов, уже неактуально
2. Не люблю свитч, громоздкий он и выглядит некрасиво ![]() 3. Одно из перечисленных в хэше. Все проверки уже выполнены. Вопрос снят. Был косяк в проверках moduleType.
__________________
тонкий тролль, осеянный благодатью Последний раз редактировалось Gaen; 11.11.2008 в 00:36. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
2. Выглядит он вполне красиво, если оформить нормально;
Тем не менее, метод по сути натуральная фабрика, но опирается она на какие-то строковые параметры, объясняющие, какого типа является передаваемая модель, хотя мог бы опираться на класс передаваемой модели без строкового костыля, но в данном случае это невозможно, в силу того, что все модели имеют одинаковое имя класса при разных пакетах, что мало того, что странно само по себе, так ещё и создаст проблемы в будущем. Куда потерялась логика — неизвестно. |
|
|||||
|
strange mood
|
Структура изначально кривовата, времени переделывать уже нет. В конце концов это первый блин в mvc
![]() moduleType - не совсем костыль. Этот параметр берёт своё начало ещё из события, которое посылает меню и в котором указывается что за модуль показывать и с какими параметрами. Модели все одинаковые, код в соседнем треде про mvc. Ссылки на модели модулей явно нигде не хранятся, поэтому они попадают в GC при удалении модуля. Модули мне почему-то показалось красивым раскидать по разным пакетом и обозвать одинаковыми именами... Наверно не хотелось в одну кучу всё кидать. Ко мне вообще иногда очень забавные мысли приходят. Но пока ещё всё можно исправить. А вообще вся эта деятельность направлена на переписывание вот этого чуда: http://photoroot.ru/ потому что сейчас что-то туда дописывать равносильно копанию в говне.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Тем не менее, уже можно быть морально готовым к тому, что это ещё раз надо будет переписывать.
|
|
|||||
|
strange mood
|
Добавления модулей в ближайшие несколько лет не предвидится, поэтому терпит.
Сейчас я нарабатываю опыт на таких вот вещах, учусь на своих ошибках и пытаюсь учиться на чужих. С каждым разом результат получается всё лучше.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
стервочка (я мужик)
|
лучше? Вы уверены? кто оценивает Ваше лучше?
|
|
|||||
|
strange mood
|
Основной критерий - время и нервы, которые уходят на то чтобы что-то добавить или изменить. С каждым разом это делается легче.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
стервочка (я мужик)
|
"легче" - совсем не синоним "лучше".
Последний раз редактировалось BlooDHounD; 11.11.2008 в 12:13. |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:05. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|