Паттерны и архитектура веб-приложений

Относительно недавно для себя открыл, что помимо, собственно написания кода, изучения новых технологий/ использования внешних API, есть вещи и намного сложнее.

Вещи, необходимость понимания которых возникает при разработке средних и больших проектов. Но даже для относительно небольших проектов это важно.

Во-первых, потому что нельзя точно определить границу, когда проект перерастает из небольшого в средний/большой.

Во вторых, читаемость и понятность важна для проектов любых размеров.

Речь, как вы уже, наверное, догадались, пойдет об архитектуре и паттернах проектирования.

Паттерн проектирования (или шаблон проектирования) - это повторимое архитектурное решение. В разных местах приложения могут (и будут) использоваться разные паттерны.

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

В таком случае это позволит:

1. Улучшить общее качество и читаемость кода.

2. Оптимизировать код.

3. Сэкономить время разработки.

4. Уменьшить количество ошибок.

5. Упростить поддержку и расширение.

Несмотря на то, что программирование - огромный необитаемый остров для творчества, все равно можно выделить некоторые закономерности. Существует большая вероятность того, что вашу (или подобную) задачу уже кто-то решал. И затратил на это времени больше, чем вы сейчас можете позволить. И опыта было побольше. И не нужно повторять то, что уже было создано до вас, если можно остановится на действительно новых/неисследованных вещах.

Так же вам будет проще объяснить другому программисту работу своего приложения.

Возможных негативных последствий использования - не так уж и много. Основная проблема - неудачно подобранный паттерн. Также возможно ухудшение производительности за счет увеличения количества уровней абстракции - но при современной разработке не будем считать это большим минусом.

О многих паттернах проектирования в веб-разработке вы, возможно, уже слышали - например, тот же MVC, Front Controller, Data Mapper, Active Record, DAO и т.д.

Несмотря на то, что паттерны - довольно общее для программирования понятие, так же существуют и некие особые, применяемые (на практике) лишь в некоторых языках программирования.

Знание и понимание паттернов - важный показатель опыта разработчика.

Ознакомится подробно с паттернами можно в книге "Паттерны проектирования" Эрика Фримена  и пр. - больше напоминает не книгу по программированию, а сборник анекдотов - легко читается).