Готовый перевод Learning JavaScript Design Patterns / Шаблоны проектирования JavaScript: Антипаттерны
Если паттерн это пример хорошего тона, то антипаттерн - это урок который должен быть выучен. Термин "антипаттерн" был придуман в 1995 году Эндрю Кёнигом (Andrew Koenig) в Novermber C++ Report того года. В отчете Кёнига было два определения антипаттернов. Антипаттерны:
Описывают плохое решение конкретной проблемы, которое приводит к нежелательным результатам.
Описывают, как перейти от данного решения к более правильному.
На эту же тему Александер пишет о трудностях в достижении баланса между хорошим проектом структуры и хорошим контекстом:
Важно знать как о шаблонах проектирования, так и понимать антипаттерны. Укажем причину. При создании приложения, жизненный цикл проекта начинается с написания кода, однако, как только первый релиз выпущен, его необходимо поддерживать. Качество конечного решения будет хорошим или плохим. в зависимости от навыков команды и потраченного времени на проект. Являются ли те или иные решения хорошими, зависит от контекста: "идеальный" замысел может оказаться антипаттерном, если применить его в несоответствующем контексте.
Подводя итог, антипаттерны являются настольно плохим примером проектирования, что их стоит задокументировать. Примеры антипаттернов:
Засорение глобального пространства имен через определение большого количества переменных в глобальном контексте.
Передача строк вместо функций в setTimeout или setInterval. В результате неявно вызывается eval().
Изменение прототипа класса Object (это особенно опасный антипаттерн)
Использование встроенного JavaScript. Такой код сложнее менять.
Использование document.write вместо операций с DOM, таких как document.createElement. Многие годы document.write использовался не по назначению. Он имеет множество недостатков. Например, если страница с ним успела загрузится перед его выполнением, document.write может перезаписать всю страницу. document.createElement лишен такой проблемы. Мы можем увидеть здесь живой пример в действии. Также document.write не работает в XHTML коде. И это еще одна причина посмотреть в сторону более близких к DOM методов, в частности, document.createElement.
Знание антипаттернов важно для успеха. Распознавая и устраняя антипаттерны, мы мнгновенно улучшим общее качество наших решений.
Переведено на Нотабеноиде
http://notabenoid.org/book/42061/161337
Переводчики: Agnis, turkeevm
Настройки
Готово:
