Связать и развязать

Видео доклада


Презентация доклада

- Что такое архитектура приложений и зачем нам вообще о ней париться

  • Архитектура - это то, что дорого менять
  • Архитектура - это общее понимание команды того, как все работает
  • Если у команды нет целой картины в голове - то и архитектуры нет
  • Мы должны строить систему так, чтобы можно было быстро понять что к чему. Управление сложностью, введение новых людей в команду

- Внутренняя и внешняя связанность как одни из основных "движителей" архитектуры

- Внутренняя связанность

  • Что это такое и какие виды есть
  • Плохое и хорошее внутренней связанности. Чем плох или хорош тот или иной вид связанности
  • Связь с 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
Sign in
Or by mail
Sign in
Or by mail
Register with email
Register with email
Forgot password?

Pay for other participants Cancel
Tickets will be sent on users emails
Add promo code to get discount Cancel