Связать и развязать
Видео доклада
- Что такое архитектура приложений и зачем нам вообще о ней париться
- Архитектура - это то, что дорого менять
- Архитектура - это общее понимание команды того, как все работает
- Если у команды нет целой картины в голове - то и архитектуры нет
- Мы должны строить систему так, чтобы можно было быстро понять что к чему. Управление сложностью, введение новых людей в команду
- Внутренняя и внешняя связанность как одни из основных "движителей" архитектуры
- Внутренняя связанность
- Что это такое и какие виды есть
- Плохое и хорошее внутренней связанности. Чем плох или хорош тот или иной вид связанности
- Связь с SOLID, а конкретно: принципом единой ответственности
- Маленькие приемы для определения, нуждается ли объект в повышении внутренней связанности, в частности именования и комментарии перед классом
- Классы Manager-ы, как пример объектов со слабой внутренней связанностью, хотя по их названию и может казаться что все там хорошо
- Здравый смысл
- Много маленьких объектов с высокой внутренней связанностью = легко рефакторить систему, проще заменить, нежели менять. А изменения - источник регрессий
- Внешняя связанность
- Поскольку в системе теперь не пара десятков, а сотни и тысячи объектов... у нас новая проблема - высокая внешняя связанность
- Что это такое и к чему приводит. Приведу на примерах затруднения рефакторинга и внедрения новых фич
- Виды внешнего связывания
- Ассоциации между объектами, двусторонние ассоциации и почему их следует по возможности избегать
- Инверсия зависимости, как способ снижения связанности
- Коварная внешняя связанность по данным: как с ней бороться и почему оно коварно
- Связь с GRASP:
* Protected Variations, как способ снижения риска регрессий. А-ля: "работает - не трогай"
* Информационный эксперт, как пример высокой внутренней связанности и немного снижения внешней связанности
* Фабрики полезны
- MVC, как пример снижения внешней связанности и повышения внутренней связанности
- Гексагональная архитектура, как пример крайности в снижении внешней связанности от инфраструктуры
- Вопрос масштабов: влияние связанности на отдельные методы и целые компоненты/микросервисы
- Статический анализ, как способ выяснять гипотетически проблемные места в контексте связанности
Sergey Protko
InTouch Health
- Full stack developer at InTouch Health
- He likes self-education and tries to help others with this in free time
- Enjoys complicated tasks and hard music
- GitHub