🔥

Тред (Сергей Сова)


Давайте начнем с вопроса. Что такое архитектура фронтенда? Это как директории называются? Правила взаимного импорта? Какой стек используется?

Почему меня вообще беспокоит архитектура и структура проекта? Начну с того, что "хорошая" структура вносит ясность. Где искать конкретный код. Куда положить новый. Как писать код командой не внося изменения одновременно в один файл.

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

Если со структурой все примерно понятно — описал конвенции в README, накинул правила в eslint и dependency-cruiser, а CI поможет команде соблюдать правила. С архитектурой такой финт уже не прокатит. Пока не существует линтеров, позволяющих отслеживать связи сущностей

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

Мне это напоминает стопку сбалансированных камней. Только архитектор может удерживать проект в устойчивом положении. А разработчики как муравьи на поверхности камней, могут лишь перемещать отдельные камушки так, чтобы при взгляде сверху появилась какая-то структура
notion image