Блог Digitalstage

ОТ МОНОЛИТА К МОДУЛЬНОСТИ

Совсем недавно у нас пошла новая волна WiFi проектов, которая сразу начала приносить свои сюрпризы. Первый проект включал в себя голосование. При этом надо было предоставить пользователю доступ к интернету только после того, как тот отдал свой голос за конкретного номинанта. Все требования были выполнены, заказчик остался доволен, но у меня, по результатам проекта, накопились некоторые мысли относительно страницы авторизации.

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

Сейчас наступает вторая волна разделения кода, хочется сделать authentication chain с событиями, чтобы можно было встраивать в процесс отдельные модули. И включать, и отключать их по одному клику, шаблонизировать общую часть HTML, создать отдельные шаблоны и валидаторы для каждого модуля, написать админку, в общем… перейти на фреймворк.

Модульность и отделение кода – это своего рода наркотик. Когда первый раз видишь, как мультисвязное монолитное нечто внезапно становится легкоуправляемым набором блоков с интерфейсами и хорошо очерченной областью применения, предсказуемым поведением и универсальной реализацией, тебе кажется, что ничего круче этого просто не может быть. Появляется желание все расколбасить на блоки, из них собрать блоки крупнее, потом еще крупнее, потом все это сложить в singletonи рай в отдельно взятом приложении вот он – в двух шагах. Эйфория окрыляет.

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

Но в остальном за модульностью будущее. И даже такой старпер-функциональщик, как я, это прекрасно понимаю.
Записки инженера