Паттерны и методологии
Тема «Паттерны»
Методологии
- Шпаргалка по шаблонам проектирования;
- Доклад Антона Немцева про «Паттерны JavaScript»;
- DRY — don't repeat yourself («не повторяйте себя»);
- KISS — keep it simple stupid («делайте вещи проще»);
- SOLID — пять основных принципов объектно-ориентированного программирования и проектирования;
- YAGNI — you ain't gonna need it («вам это не понадобится»);
- GRASP — документированные и стандартизированные принципы объектно-ориентированного анализа;
- Package Principles — package cohesion (REP, CRP, CCP) и package coupling (ADP, SDP, SAP).
- Архитектура современных FRONTEND приложений. 5 видов. Преимущества и недостатки
Декомпозиция
- Отличная статья про «Эволюцию модульного JavaScript»;
- Паттерн «Наблюдатель»;
- Почитать подробнее про примеси можно на Хабре или в «Современном учебнике JavaScript»;
- Event driven development;
- Inversion of Control и Dependency Injection.
Полезные ссылки
- MV-паттерны;
- Создание хорошей архитектуры;
- Создание системы для управления состояниями на чистом JS.
Еще про архитектуру
Строительство дома начинается с плана. Можно, конечно, сразу перейти к делу и начать заливать фундамент (а дальше как пойдёт), но насколько такая конструкция будет надёжной — большой вопрос. Да и в процессе может оказаться, что стены не там, пол кривой, а окон не хватает. Аналогично с разработкой приложения. Хороший проект, который будет «жить» долго, начинается с архитектуры.
Начнём с обозначения — что такое архитектура с точки зрения различных определений.
Если рассматривать приложение как систему, то есть набор элементов или компонентов, объединённых для выполнения конкретной функции, можно выделить следующие определения:
Архитектура идентифицирует главные элементы (компоненты) системы и способы их взаимодействия.
Архитектура — это организация системы, воплощённая в её компонентах, их отношениях между собой и с внешним окружением.
Архитектурными можно назвать такие решения, которые распределены по всему приложению, а стоимость их изменения будет огромной. Критерии качественной и хорошей архитектуры системы (или дизайна системы):
- эффективность,
- масштабируемость процесса разработки,
- гибкость и возможность расширения,
- тестируемость и другие способы обеспечения качества системы,
- возможность повторно использовать элементы.
Критерии хорошего дизайна упрощают разработку, но иногда для принятия решений важнее понимать, как лучше не делать. Архитектуру с такими качествами точно делать не стоит:
- дизайн системы сложно изменить, так как это влечёт за собой большое количество изменений в других её частях,
- после внесения изменений ломаются другие части приложения,
- сложно или невозможно повторно использовать элемент системы в другом приложении (например, из-за сложности «выпутывания» из текущего приложения).