Пользуетесь ли вы шаблонами проектирования в своих проектах?

В комментариях приветствуются названия шаблонов и описание их преимуществ перед тяп-ляп проектированием, а также какие плюшки эти шаблоны дают нам - создателям игрушек. Недавно узнал про то что в прошлом году занимался какой-то херней (это мой собственный вывод), а не программированием как подобает взрослым дядям и тетям программистам, поэтому хотелось бы растить свой профессиональный уровень. Собственно, если есть что-то против - высказывайтесь. Имеется ввиду планирование архитектуры.
  • +0

Комментарии (48)

0
Как минимум Interface, Singleton.
0
Чисто интересно, вот те, кто написал что паттернами не пользуется, точно-точно пулы не используют, хоть в каком-нибудь виде? Даже как один пул на всех? Прямо не верится, неужели насилуете гарбадж коллектор? Он же на большинстве жанров умрет, хоть с юнитами, хоть с шариками…
+3
Вот чувствую надо было мне выбрать вариант «я бэтмен»…
0
Пул?
+5
Черт, я не умею крутыми гифками отвечать. Я бы себя корил до конца жизни, если бы не попробовал.
0
Иногда нет возможности распарсить свой код на предмет пребывания в нем этих ваших паттернов.
+1
Вот жеж. Я вот и не знал что пул — это тоже паттерн. В таком деле я думаю надо считать, что незнание паттерна освобождает от ответственности за его использование :)
Т.е. если я чего-то не могу и лезу в паттерны, то я их использую. А если я пишу код, ни про какие паттены и не помышляю, — и опа… это паттерн оказывается, — то я не использую паттерн. Или я не использую паттерны сознательно.
Кстати, что синглтон тоже паттерн — тоже не знал, не знал.
Имо паттерны — для codemonkeys или кодеров в простонародье. Придумали их опять те-же америкосы у которых обучение построено не на том, чтобы научить думать, а на том, чтобы научить делать — т.е. дать шаблоны действий. А шаг влево шаг вправо — это все… приплыли, полный ступор.
Хотел сказать, что паттерны — зло, но понимаю, что это поза, а не на самом деле так. Просто сейчас многие задачи очень тривиальны и как-раз для кодеров, а не програмеров и выше. Ну и практика: вот некоторые сортировку с листиков передирали (у меня от такого шок, баттхерт, хочется кричать «позор ламерье») а ничего на самом то деле — работают сейчас, справляются. И даже больше меня «убер програмера» зарабатывают. Но я лично ну не использую паттерны. Хотя честно пытался к ним приобщится, но нафик мне забывать мозг связывая отфонарные в большинстве случаев слова с довольно очевидными алгоритмами или приемами? Ну и вообще так вот раньше с меньшим опытом я может бы и считал паттерны полезными для себя и использовал, сейчас — нет.
+7
Ты неправ. Паттерны — это то-же самое что изучать опыт других, чтобы не наступать на грабли в будущем и экономить время. В любой области знаний обучающийся должен изучить опыт на который хорошо опираться. Или ты считаешь, что каждый архитектор обязан изобрести арку и самому продумать как ее рассчитывать чтобы не провалилась? Это глупо. Кроме того паттерны (и антипаттерны кстати), это язык общения в отрасли. Или главпрограммеру надо каждый раз на пальцах объяснять что такое пул?
Ты, наверно, не читал хороших книжек по паттернам и антипаттернам. У меня это было давно, на английском и с примерами на джаве, потому я не помню названий. Но в книгах отнюдь не показывают кусок кода и все. В них описывются преимущества, недостатки, грабли итд. В итоге, придумывая архитектуру движка, я, возможно, и не думаю буквально «здесь у нас будет фабрика», но оформляю все именно в похожем ключе, помня, что избежал определенных граблей, обеспечил гибкость и расширяемость на будущее. И не буду каждый раз изобретать чего-то, потом через некоторое время переписывать и материться.
0
Изпользую кучу паттернов: синглтон, фабрика, MVC, редко наблюдатель. А вот с пулом никак нет времени разобраться.
+1
Ну пул, оказывается, и я применяю, ничего там сложного. Создаешь н-цать пуль, а потом когда пулю уничтожаешь, чтобы ее не занулять возвращаешь в какой нибудь массив.

static private var _bufferBullet:Array;
...
_bufferBullet = [];
for (var j:int = 0; j < 30; j++) 
	_bufferBullet.push(new Bullet());
Вот так добавлять на сцену:
private function createBullet():Bullet 
{
	if (_bufferBullet.length > 0)
		return _bufferBullet.pop();
	return new Bullet();
}

Вот так возвращаем:
В Bullet.as:
GameScene.returnBullet(this);

В GameScene
static public function returnBullet(bullet:Bullet):void 
{
	_bulletLayer.removeChild(bullet);
	_bufferBullet.push(bullet);
}
0
Спасибо за пример, попробую реализовать у себя.
0
Имелось в виду просто использование шаблонов, или полное планирование архитектуры до начала работы?
0
Да, планирование архитектуры проекта, ну или какая-то «привычка», стремление к «правильному» коду… (добавил в пост).
0
Хотелось бы еще узнать, что делает автор, по сравнению с тем, что раньше был детский сад.
0
Рисую, анимирую xD
0
По шаблонам проектирования? )
0
По заданиям ;). А по программированию ничего не делаю, встрял как раз на шаблонах, но это другая история, расскажу в своем блоге.
+1
По-моему, норм проектирование даёт такую плюшку, что у тебя каждая часть игры как движок, и с каждой следующей игрой процент кода, который надо писать ручками, уменьшается. Причем всё это абсолютно удобно, не надо ниче переписывать итд…
0
Удваиваю!
0
я тоже так делаю,
ну у меня иногда взбредет в голову — что написано плохо — и все все ровно переделываю)
0
Робоноги (robotlegs) — как наркота… Главное преимущество — отпадает путаница в коде, чужой или свой — сходу понимаешь в какой пакет глядеть когда, что либо ищешь… Всегда найдутся те кто раскритикуют, но очень удобно когда над кодом работает несколько человек, или чужие проекты редактировать.
0
А pureMVC например?
+2
Лично с пьюр не работал — ничего конкретного сказать не могу. Сравнивали отзывы когда выбирали, что изучать — роботлегса расхваливали… Сами создатели где-то писали, что вдохновлялись от пьюр. Недавно знакомый, что до этого делал проекты на пьюр, попробовал сделать на робоногах — теперь впредь тоже с ним и работает.

p.s. Есть хорошая презентация в виде слайдов: probertson.com/resources/2010/09/21/Robotlegs_360Flex_2010_DC.pdf
0
Почитаемс…
0
А pureMVC например?
Использовал в неигровом проекте, не очень он мне помню понравился.
0
MVC, pool, редко singleton. И никаких фреймворков.
+3
Я пользуюсь своими уникальными шаблонами проектирования :D
+1
ИМХО не пользоваться паттернами проектирование — невозможно. Что не сделай, если это не дурь полная, получится использование какого-нибудь паттерна.

Я давно прочитал книжку банды четырех, кой какие идеи оттуда почерпнул и использую. Но мыслить в категориях паттернов от этого не научился: т.е. когда я думаю, как бы что сделать, мне паттерны в голову по названиям не приходят, сразу идеи конкретной реализации. Но например паттерн visitor я до того не использовал, а сейчас очень люблю.
+3
Определённо нужен вариант «узнал о том, что использую паттерны, из этого обсуждения»)
0
Я бэтмен :)
0
я пользуюсь пулом-фабрикой-синглтоном — не часто — только когда необходимо)
у меня что-то вроде фреймовика в синглтоне)

а кто расскажет про наблюдателя(визора)? я вот почитал только, что не очень понял суть — ведь я должен всегда знать все участвующие классы?
0
а кто расскажет про наблюдателя(визора)? я вот почитал только, что не очень понял суть — ведь я должен всегда знать все участвующие классы?
EventDispatcher — это и есть наблюдатель(observer), нативная реализация ;)
+3
Обсервер — это хрень такая из роботикса, которая дарков и баньшей видит!
+2
и сам обсервер невидимый!
+2
:D Да, как ни крути — полезный паттерн, и всего за 25 минералов и 75 газа!
+2
А фидбэк — это абилка такая у темпларов!
0
Жаль одновременно factory и pool нельзя применить, ибо один у терранов а второй у зергов
0
Можно если протосами переманить рабов обеих рас :)
0
Ребят, детский сад в скайпе, здесь серьезные люди обсуждают серьезные вещи.
0
Серьезные люди может и есть на этом блоге, но они скорее просто читают отдельные темы, а то что они встрянут в обсуждение так это вообще редкость.

А эта ветка про Старик самая интересная в этой теме, за что отдельное спасибо ))
0
Вот так и палятся игроки в Strategy реального времени)))
Зато к Factory можно Reactor(в СК2) пристроить, и в Command'ом центре побольше MVC или MCV наклепать :D

З.Ы. Паттерны терранов — имба!
+1
Кстати любителям старкрафта и паттернов есть отличная видеосерия PatternCraft www.johnlindquist.com/search/label/design%20patterns
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.