[flood] Доросли ли вы до design patterns?
с утверждением согласен. правда, возможно, мое мнение связано с недостатком опыта
IMHO, если человек имеет мало опыта, то он просто не поймет паттерны. Как следствие, не поймет когда их применять, зачем их применять. Поэтому применять он их не будет. Описанный вариант с применением шаблонов без их понимания я считаю маловероятным.
IMHO, если человек имеет мало опыта, то он просто не поймет паттерны. Как следствие, не поймет когда их применять, зачем их применять.К сожалению. не всегда дело только в опыте. Многие программисты, с которыми я имею дело, уже имею некоторый опыт, но не стремятся использовать патерны (в первую очередь для общения)
![](/images/graemlins/frown.gif)
есть и другой вред от паттернов: зачастую человек, только узнавший о них, старается применить их везде и в результате его код усложняется больше, чем нужно.
ты реально сталкивался с такой ситуацией (с таким кодом) или это теоретическое рассуждение?
реально. Два с половиной года назад был в такой ситуации — из-за чрезмерного применения паттернов писать пришлось раза в два больше, чем надо. Потом на некоторое время забил на паттерны и стал стараться писать так, как проще, а не как "правильнее". Сейчас отношусь к паттернам с двойной точки зрения: во-первых, они являются примерами удачных идей и могут подсказать простое решение, во-вторых, они интересны с точки зрения адаптации кода к чтению другими людьми.
из-за чрезмерного применения паттернов писать пришлось раза в два больше, чем надо.в два раза по времени или по количеству кода?
главная оценка это суммарное время, иногда большая часть времени тратиться на развитие и сопровождение систем написанных по принципу "как проще". И потом для кого проще? для новичка, который первый раз написал слово class?
Бред какой-то. То есть существует два пути - применять паттерны и не применять? Паттерн - сугубо прагматическая вещь, там же в описании всегда указывается содержание решаемой проблемы.
в два раза по времени или по количеству кода?В той ситуации достаточно быстро код вышел на горизонтальное развитие (необходимо было добавить ряд возможностей из списка поэтому излишнее применение паттернов привело к тому, что добавление новой возможности требовало в два раза больше кода, чем это можно было бы сделать, если не подгонять под паттерны. В результате: времени потрачено в два раза больше, кода — в два раза больше.
Правда, к сожалению, на похожие грабли я потом наступал не раз. Как говорит
во-первых, они являются примерами удачных идей и могут подсказать простое решениея бы сказал, они являются удачными (или правильными) конструкциями языка. Правильными в том смысле, что по сравнению с ними конструкции, написанные по принципу "как проще", обладают недостатками.
Правильными в том смысле, что по сравнению с ними конструкции, написанные по принципу "как проще", обладают недостатками.Если конкретные потребности меньше, чем дает паттерн, то и записать это можно более коротко. А в случае возрастания потребностей тот зачаток паттерна, что у нас был построен по принципу "ничего лишнего" превратится в полноценный паттерн.
Причем, как показывает практика, если идти от потребностей, стараясь не писать ничего лишнего, в коде паттерны появляются сами. И тогда книжка по паттернам лишь поможет назвать эти идеи единообразным способом при объяснении кода другому человеку.
не писать ничего лишнегонесомненно это Главный принцип
![](/images/graemlins/laugh.gif)
про появления патернов тоже согласен.
Паттерны - это хуйня, которую придумали умные программисты для индусов.
Если хотите побольше хороших примеров паттернов - могу посоветовать исходный код Eclipse - его делают под общим руководством парней, которые впервые громко заявили про паттерны. Читать приятно.
начитаются люди и начинают, к примеру, стратегии стряпать, в то время когда можно было наследованием вполне обойтись, либо захерачут mvc на нотификациях построенный, хрен потом поотлаживаешь эту х..ю.
Так что излишнее использование паттернов, там где не нужно - это зло!
Код должен быть простым и понятным в первую очередь.
Ерунда всё это, здесь совсем другое, это никак не связано
с "доросли --- не доросли".
---
"Верь сводке погоды, но доверяй --- интуиции..."
вполне возможно
цитата из 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-ами, только когда это действительно необходимо.
Другими словами, голову надо иметь на плечах, делать всё попроще и швыряться design pattern-ами, только когда это действительно необходимо.Ну это-то понятно.
Но тут речь идет о том, что швыряться паттернами и решать, когда они необходимы, а когда нет, можно только тогда, когда уже "обладаешь опытом". Про критерии опытности судить не берусь.
Более того, даже если и есть опыт, все равно паттерн предполагает творческий подход, то есть надо будет мозгами пошевелить, чтоб понять, что там и как. Потому что, например, у Гаммы и Ко для каждого паттерна есть раздел "Реализация", где иногда столько деталей обсуждается, что все это путается в голове и сразу так это все не поднять. По идее, с паттерном надо знакомиться итеративно - от основной идеи решения к деталям и подводным камням - и сопоставлять это все со своим опытом. Поэтому и получается, что слепое использование паттерна из справочника неверно и вредно.
Но проблема слепого использования паттернов наверно действительно существует, и я бы даже как-то связал это с утверждением выше
![](/images/graemlins/smile.gif)
Паттерны - это х...я, которую придумали умные программисты для индусов.
Я бы сказал, что из паттернов сделали хайповое слово, типа SOA и все такое. То есть народ стал воспринимать паттерны отчасти как некую панацею и silver bullet. Поэтому все сразу стали кидаться этим словом, по делу и без. Это такой бренд теперь. Уйма книг и статей содержат в названии слово "паттерн". Паттерны в ИТ уже давно не только дизайн, но везде и всюду, Отсюда и все эти проблемы со использованием паттернов из справочника.
В общем, идея неплохая, но ее уже опошлили
![](/images/graemlins/smile.gif)
silver bullitдве буквы пропустил
две буквы пропустилпардон, исправил
Оставить комментарий
6yrop
цитата из wikipediaА вы доросли?