Не сотвори себе кумира.
сентября 10, 2007 by adminСегодня случайно натолкнулся на старую статью Dagfinn Reiers “Design Patterns Berserk“, вот ее предисловие:
“Have you every considered how many times “Hello World” has been re-implemented? It’s the ultimate missed opportunity for re-use! A cautionary tale about design patterns…”
В самой статье приводится пример php-приложения, состоящего из 160 строк, которое выводит, любимую всеми, надпись “Hello world”. Код ужасен с точки зрения сопровождения и рефакторинга, но зато гибок до ужаса. KISS и YAGNI.
Я оптимист, как и большинство живущих на этой планетке. Поэтому во всем новом нам очень не хочется замечать очевидных минусов. Это касается всего: девушки, с которой познакомился вчера, новенькой машинкой или технологии, о которой вчера прочитал в чьей-то RSS.
И это хорошо! Уж лучше, чем бояться всего нового, особенно девушек ;) Просто у всего есть обратная сторона…
Например, программисты ругаются на оператор GOTO, хотя и ему можно найти элегантное применение, например, для организации единой точки выхода, когда не хочется излишне применять другие технологии. Например, вместо Consolidate Conditional Expression, если проверки логически независимы. Я хочу иметь возможность сделать что-то, даже если я этого никогда делать не буду.
Или prototype. Как уж все радуются, выдавая “на гора” кучи скриптов, не понимая разницы, между объектно-ориентированными, и прототипо-ориентированными языками, и организовывая какие-то суицидальные замыкания.
Возьмем из немного другой оперы - AJAX. Во уж где все с ума посходили, в стремлении все и вся “обаяксить”. Пожалуйста, не пытайтесь сделать полную загрузку страниц, если не можете обеспечить работу кнопки “back” в браузере! Мы любим эту кнопку. Мы так ее любим, что даже пользуемся ей.
Совсем отойдем в сторону - Лада-Калина. Хотя нет, тут я погорячился, нет у нее “передней” стороны, сплошная задняя :)
Ради хохмы подумал о минусах domain model. Вот:
- снижение быстродействия и увеличение расходуемой памяти, из-за увеличения уровней абстракции;
- сложность организации связи с реляционными БД;
- “высокая цена” ошибок проектирования;
Но рефакторинг доменной модели мне приятнее, чем постоянная слежка за дублированием в transaction script.
Posted in Без рубрики |