Вступление — «JavaScript Design Patterns, 2017» Эдди Османи. Перевод: часть 1

Оригинальный текст — https://addyosmani.com/


К сожалению в сети отсутсвует актуальный перевод этой замечательной книги (есть 2 летней давности — http://largescalejs.ru/). Поэтому я решил достать из неё все важные вещи, перевести и адаптировать под нас. Если вы желаете прочитать оригинал, то вот ссылка.

Что такое шаблон / паттерн?

Шаблон — это многоразовое решение, которое может быть применено к часто встречающимся проблемам в работе с программныем обеспечением — в нашем случае — при написании веб-приложений на JavaScript.

Итак, почему важно понимать шаблоны и быть знакомыми с ними? Шаблоны проектирования имеют три основных преимущества:

  1. Шаблоны — это проверенные решения: они обеспечивают надежные подходы к решению проблем в разработке программного обеспечения с использованием проверенных методов, которые отражают опыт и знания разработчиков, которые помогли определить их, и реализовать в виде шаблона.
  2. Шаблоны можно легко использовать повторно: шаблон обычно отражает решение из коробки, которое можно адаптировать в соответствии с нашими собственными потребностями. Эта особенность говорит о их силе.
  3. Шаблоны могут быть выразительными: если мы посмотрим на шаблон, то  увидим определенную структуру и лексику, которые могут довольно выразительно решить довольно большие проблемы.

 

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

  • Повторное использование шаблонов помогает предотвратить мелкие проблемы, которые могут вызвать серьезные проблемы в процессе разработки приложений. Это означает, что когда код построен на проверенных шаблонах, мы можем позволить себе меньше времени беспокоиться о структуре нашего кода и уделять больше времени качеству нашего общего решения.
  • Шаблоны могут предоставлять обобщенные решения, которые реализованы таким образом, что они не требуют привязки к конкретной проблеме. Этот обобщенный подход означает, что независимо от приложения (и во многих случаях языка программирования), с которым мы работаем, шаблоны проектирования могут применяться для улучшения структуры нашего кода.
  • Некоторые шаблоны могут фактически уменьшить общий размер размера файла нашего кода, т.к. мы будем избегать повторений.
  • Шаблоны увеличивают словарь разработчика, что упрощает работу в команде.
  • Шаблоны, которые часто используются, могут быть улучшены другими разработчики. В некоторых случаях это приводит к созданию совершенно новых шаблонов проектирования, в то время как в других он может привести к простому улучшеннию уже существующего шаблона. Это гарантирует, что решения на основе шаблонов продолжают становиться более надежными.

 

«Pattern»-ity Testing, Proto-Patterns & The Rule Of Three

Данная часть не переведена и вряд ли будет переведена. Перейти к оригиналу

The Structure Of A Design Pattern.

Данная часть не переведена и вряд ли будет переведена. Перейти к оригиналу

Writing Design Patterns.

Данная часть не переведена и вряд ли будет переведена. Перейти к оригиналу

 

Что такое анти-паттерн?

Термин анти-паттерн был придуман в ноябре 1995 года Эндрю Кенигом в «C++ Report»,  который был вдохновлен книгой «GoF’s Design Patterns» (Позднее издание — «http://edeleastar.gith…«. В докладе Кенига есть два представления об анти-шаблонах:

  • Опишите плохое решение проблемы, которая привела к возникновению плохой ситуации.
  • Опишите, как выйти из указанной ситуации, создав хорошее решение.

 

Прим.переводчика: определение из википедии — Анти-паттерн (англ. anti-pattern) — это распространённый подход к решению класса часто встречающихся проблем, являющийся неэффективным, рискованным или непродуктивным. В отличие от шаблона проектирования, рассмотрение антипаттерна включает в себя как неправильное решение проблемы с его признаками и последствиями, так и выход из ситуации.

 

Примеры анти-паттернов в Javascript:

  • Загрязнение глобального пространства имен путем определения большого числа переменных в глобальном контексте
  • Передача строк, а не функций в качестве первого аргумента у setTimeout / setInterval, поскольку внутри будет задействован eval().
  • Изменение Objectпрототипа класса (это особенно плохой анти-паттерн)
  • Использование document.write, где родные альтернативы DOM, такие как document.createElement, более уместны.

 

Categories Of Design Pattern

Данная часть не переведена и вряд ли будет переведена. Перейти к оригиналу

Summary Table Of Design Pattern Categorization

Данная часть не переведена и вряд ли будет переведена. Перейти к оригиналу