GRASP: почему настоящая архитектура начинается не с SOLID 🧑‍🎓 Читаем статью в которой пропагандируется не просто думать об архитектуре, а задумываться.

Тот, кто понимает принципы, сам найдет нужные методы. А тот, кто пробует методы, игнорируя принципы, неминуемо столкнется с проблемами.

  • Ральф Уолдо Эмерсон

Статья посвящена разбору паттернов GRASP (General Responsibility Assignment Software Patterns) в контексте объектно-ориентированного проектирования и объясняет, почему знакомство с архитектурой не следует начинать с SOLID-принципов или GoF-паттернов, а с более фундаментальных вещей — распределения ответственности между объектами.

Автор говорит о разнице между «кодом на ООП-языке» и настоящим ООП-мышлением. Через аналогию с обучением сноубордингу он рассказывает, что внешне оптимальные решения без архитектурного мышления часто лишены структуры, понятности, и системности. Главная претензия — многие разработчики используют отдельные элементы ООП, но не понимают, почему именно так их стоит применять — и как это строит архитектуру приложения.

Статья раскрывает суть ключевых паттернов GRASP, такие как Information Expert (объект выполняет задачу, если располагает всей необходимой информацией), Creator (ответственность за создание объекта лежит на том, кто им владеет и использует), Pure Fabrication (искусственные абстракции ради архитектурной чистоты) и Controller (первое звено координации во входном потоке данных). Автор указывает на важность принципа высокой связанности данных и поведения объекта, перехода к rich-домену, а не анемичным моделям.

Однако в комментах отмечают, что статье не хватает целостности подачи: описаны тактические решения, но мало сказано о процессе формирования самой модели, анализе предметной области, стадиях выделения сущностей и связи требований с архитектурией — то есть о том, как появляется то, над чем потом «GRASP-ить». Упоминается нехватка четких определений некоторых терминов (сам по ходу прочтения путался), местами материал кажется рефлексивным, предполагающим погружённость читателя в предмет и опыт проектирования сложных систем.

😉 Уверен статья будет полезна не только начинающим разрабам, которые застряли на уровне геттеров-сеттеров и SOLID, но и более опытным разработчикам, которые давно ищут системный вдумчивый подход вместо «архитектуры как чувствую». При этом для полноты и системности восприятия будет полезно изучить дополнительную литературой приведенную в статье, чтобы не свести понимание архитектуры только к методическим приёмам ООП, а понимать, как встроить их в общий процесс разработки.

Немыкин.Продакшн


В этом посте были ссылки, но мы их удалили по правилам Сетки