Не сотвори себе кумира.

сентября 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 Без рубрики |

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.