Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Помогите найти: 10 причин что вы пишите не ООП-код (http://www.flasher.ru/forum/showthread.php?t=139023)

orcpochta 22.04.2010 02:33

Цитата:

Сообщение от silin (Сообщение 902270)
да, еще: твой if (parent) parent.removeChild(this); безусловно удобная штука..

на самом деле так лучше не делать в больших проектах, ибо если кто-то попытается удалить дисплейОбджект как положено через removeChild(obj) после вызова метода destroy, то получит "ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller."

а метод destroy пусть лучше внутренние слушатели отцепляет и наружу не лезет)))

etc 22.04.2010 07:42

Цитата:

Сообщение от orcpochta (Сообщение 902251)
хм... получается, что для дисплэй обджектов
- это ересь?)))

Да, ересь.

orcpochta 22.04.2010 09:10

Цитата:

Сообщение от etc (Сообщение 902364)
Да, ересь.


каюсь)))

Psycho Tiger 22.04.2010 10:07

Цитата:

Сообщение от lowka (Сообщение 902292)
Иногда бывает более уместна некая компонентная модель, в которой сам объект есть набор компонент, определяющих его свойства и т.п.
А подобная цепочка классов в итоге дает лишь головную боль, когда оказывается, что функционал, предоставляемый одним из классов цепочки, необходим в абсолютно стороннем классе. Ошибка проектирования в данном случае налицо.

Ошибка проектирование налицо, если какому-то классу нужен весь функционал другого класса и это "оказывается".

lowka, а какие ваши предложения? Забить на наследование в моём случае и композицией/созданием новых методов собирать пару десятков методов со всех классов, а класс экстендить сразу от Sprite`а, чтобы хорошо было?

Division 22.04.2010 10:25

ИМХО перед тем как наследовать что-то, нужно хорошо подумать. Действительно ли оно надо? Сейчас использую такой вот подход к архитектуре игр: немного изменённый паттерн декоратор. Можно наращивать функционал без наследования. Пишу вот и радуюсь (:

lowka 22.04.2010 22:35

Цитата:

Сообщение от Psycho Tiger (Сообщение 902368)
lowka, а какие ваши предложения? Забить на наследование в моём случае и композицией/созданием новых методов собирать пару десятков методов со всех классов, а класс экстендить сразу от Sprite`а, чтобы хорошо было?

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

Psycho Tiger 22.04.2010 22:51

Хорошо, дайте хорошую статью на ваш взгляд? Буду благодарен.

$mival 23.04.2010 19:15

почитал, вроде все норм )

Iv 30.04.2010 18:20

Цитата:

Сообщение от CrazyFlasher (Сообщение 902252)
"Вы часто используете наследование. В ваших цепочках наследования порой насчитывается более 5 классов."

что в этом плохого?!

- в этом ничего плохого нет, если это оправдано.

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

Чтобы на это не нарываться, я программирую снизу: сначала создаю конечные классы, если потребуется активно используя копи-пасту. Добиваюсь нужной функциональности, и только затем начинаю выносить общую функциональность в надклассы.
Этого пока хватало.

Nirth 30.04.2010 19:01

Цитата:

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


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

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