[flood] Доросли ли вы до design patterns?

6yrop

цитата из wikipedia
 
Есть мнение, что слепое применение шаблонов из справочника, без осмысления причин и предпосылок выделения каждого отдельного шаблона, замедляет профессиональный рост программиста, так как подменяет творческую работу механическим подставлением шаблонов. Люди, придерживающиеся данного мнения, считают, что знакомиться со списками шаблонов надо тогда, когда "дорос" до них в профессональном плане - и не раньше. Хороший критерий нужной степени профессионализма - выделение шаблонов самостоятельно, на основании собственного опыта. При этом, разумеется, знакомство с теорией, связанной с шаблонами, полезно на любом уровне профессионализма и напрявляет развитие программиста в правильную сторону. Сомнению подвергается только использование шаблонов "по справочнику".
http://ru.wikipedia.org/wiki/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%...
  

А вы доросли?

Restoration

я нет
с утверждением согласен. правда, возможно, мое мнение связано с недостатком опыта

Landstreicher

В целом утверждение разумно.
IMHO, если человек имеет мало опыта, то он просто не поймет паттерны. Как следствие, не поймет когда их применять, зачем их применять. Поэтому применять он их не будет. Описанный вариант с применением шаблонов без их понимания я считаю маловероятным.

6yrop

IMHO, если человек имеет мало опыта, то он просто не поймет паттерны. Как следствие, не поймет когда их применять, зачем их применять.
К сожалению. не всегда дело только в опыте. Многие программисты, с которыми я имею дело, уже имею некоторый опыт, но не стремятся использовать патерны (в первую очередь для общения) или используют малую толику. Поэтому я и спросил многие ли из участников programming.forum.local "доросли" до восприятия патернов.

Helga87

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

6yrop

ты реально сталкивался с такой ситуацией (с таким кодом) или это теоретическое рассуждение?

Helga87

реально. Два с половиной года назад был в такой ситуации — из-за чрезмерного применения паттернов писать пришлось раза в два больше, чем надо. Потом на некоторое время забил на паттерны и стал стараться писать так, как проще, а не как "правильнее". Сейчас отношусь к паттернам с двойной точки зрения: во-первых, они являются примерами удачных идей и могут подсказать простое решение, во-вторых, они интересны с точки зрения адаптации кода к чтению другими людьми.

6yrop

из-за чрезмерного применения паттернов писать пришлось раза в два больше, чем надо.
в два раза по времени или по количеству кода?
главная оценка это суммарное время, иногда большая часть времени тратиться на развитие и сопровождение систем написанных по принципу "как проще". И потом для кого проще? для новичка, который первый раз написал слово class?

Hastya

Бред какой-то. То есть существует два пути - применять паттерны и не применять? Паттерн - сугубо прагматическая вещь, там же в описании всегда указывается содержание решаемой проблемы.

Helga87

в два раза по времени или по количеству кода?
В той ситуации достаточно быстро код вышел на горизонтальное развитие (необходимо было добавить ряд возможностей из списка поэтому излишнее применение паттернов привело к тому, что добавление новой возможности требовало в два раза больше кода, чем это можно было бы сделать, если не подгонять под паттерны. В результате: времени потрачено в два раза больше, кода — в два раза больше.
Правда, к сожалению, на похожие грабли я потом наступал не раз. Как говорит

6yrop

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

Helga87

Правильными в том смысле, что по сравнению с ними конструкции, написанные по принципу "как проще", обладают недостатками.
Если конкретные потребности меньше, чем дает паттерн, то и записать это можно более коротко. А в случае возрастания потребностей тот зачаток паттерна, что у нас был построен по принципу "ничего лишнего" превратится в полноценный паттерн.
Причем, как показывает практика, если идти от потребностей, стараясь не писать ничего лишнего, в коде паттерны появляются сами. И тогда книжка по паттернам лишь поможет назвать эти идеи единообразным способом при объяснении кода другому человеку.

6yrop

не писать ничего лишнего
несомненно это Главный принцип
про появления патернов тоже согласен.

sbs-66

Паттерны - это хуйня, которую придумали умные программисты для индусов.

enochka1145

Голова на плечах и опыт - это всегда полезно, а не только в случае с паттернами. Кстати, антипаттерны (это как не надо) знать (ИМХО!) едва ли не полезнее, чем паттерны.
Если хотите побольше хороших примеров паттернов - могу посоветовать исходный код Eclipse - его делают под общим руководством парней, которые впервые громко заявили про паттерны. Читать приятно.

vijrel7878

согласен на все сто.
начитаются люди и начинают, к примеру, стратегии стряпать, в то время когда можно было наследованием вполне обойтись, либо захерачут mvc на нотификациях построенный, хрен потом поотлаживаешь эту х..ю.
Так что излишнее использование паттернов, там где не нужно - это зло!
Код должен быть простым и понятным в первую очередь.

Ivan8209

> начитаются люди и начинают, к примеру, стратегии стряпать
Ерунда всё это, здесь совсем другое, это никак не связано
с "доросли --- не доросли".
---
"Верь сводке погоды, но доверяй --- интуиции..."

vijrel7878

вполне возможно

enochka1145

цитата из wikipedia...
цитата из "Thinking in C++, Volume 2, Design Patterns, Summary":
The point of design patterns, like the point of any abstraction, is to make your life easier. Usually something in your system is changing—this could be code during the lifetime of the project, or objects during the lifetime of one program execution. Discover what is changing, and a design pattern may help you encapsulate that change, and thus bring it under control.
It’s easy to get infatuated with a particular design, and to create trouble for yourself by applying it just because you know how. What’s hard, ironically, is to follow the XP maxim of “do the simplest thing that could possibly work.” But by doing the simplest thing, you not only get a design that’s faster to implement, but also easier to maintain. And if the simplest thing doesn’t do the job, you’ll find out a lot sooner than if you spend the time implementing something complex, and then find out that doesn’t work.
---
Другими словами, голову надо иметь на плечах, делать всё попроще и швыряться design pattern-ами, только когда это действительно необходимо.

olga1969

Другими словами, голову надо иметь на плечах, делать всё попроще и швыряться design pattern-ами, только когда это действительно необходимо.
Ну это-то понятно.
Но тут речь идет о том, что швыряться паттернами и решать, когда они необходимы, а когда нет, можно только тогда, когда уже "обладаешь опытом". Про критерии опытности судить не берусь.
Более того, даже если и есть опыт, все равно паттерн предполагает творческий подход, то есть надо будет мозгами пошевелить, чтоб понять, что там и как. Потому что, например, у Гаммы и Ко для каждого паттерна есть раздел "Реализация", где иногда столько деталей обсуждается, что все это путается в голове и сразу так это все не поднять. По идее, с паттерном надо знакомиться итеративно - от основной идеи решения к деталям и подводным камням - и сопоставлять это все со своим опытом. Поэтому и получается, что слепое использование паттерна из справочника неверно и вредно.
Но проблема слепого использования паттернов наверно действительно существует, и я бы даже как-то связал это с утверждением выше
 
Паттерны - это х...я, которую придумали умные программисты для индусов.

Я бы сказал, что из паттернов сделали хайповое слово, типа SOA и все такое. То есть народ стал воспринимать паттерны отчасти как некую панацею и silver bullet. Поэтому все сразу стали кидаться этим словом, по делу и без. Это такой бренд теперь. Уйма книг и статей содержат в названии слово "паттерн". Паттерны в ИТ уже давно не только дизайн, но везде и всюду, Отсюда и все эти проблемы со использованием паттернов из справочника.
В общем, идея неплохая, но ее уже опошлили

Marinavo_0507

silver bullit
две буквы пропустил

olga1969

две буквы пропустил
пардон, исправил
Оставить комментарий
Имя или ник:
Комментарий: