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

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


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

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

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

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

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

  • Что это такое и какие виды есть
  • Плохое и хорошее внутренней связанности. Чем плох или хорош тот или иной вид связанности
  • Связь с SOLID, а конкретно: принципом единой ответственности
  • Маленькие приемы для определения, нуждается ли объект в повышении внутренней связанности, в частности именования и комментарии перед классом
  • Классы Manager-ы, как пример объектов со слабой внутренней связанностью, хотя по их названию и может казаться что все там хорошо
  • Здравый смысл
  • Много маленьких объектов с высокой внутренней связанностью = легко рефакторить систему, проще заменить, нежели менять. А изменения - источник регрессий

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

  • Поскольку в системе теперь не пара десятков, а сотни и тысячи объектов... у нас новая проблема - высокая внешняя связанность
  • Что это такое и к чему приводит. Приведу на примерах затруднения рефакторинга и внедрения новых фич
  • Виды внешнего связывания
  • Ассоциации между объектами, двусторонние ассоциации и почему их следует по возможности избегать
  • Инверсия зависимости, как способ снижения связанности
  • Коварная внешняя связанность по данным: как с ней бороться и почему оно коварно
  • Связь с GRASP:
    * Protected Variations, как способ снижения риска регрессий. А-ля: "работает - не трогай"
    * Информационный эксперт, как пример высокой внутренней связанности и немного снижения внешней связанности
    * Фабрики полезны

- MVC, как пример снижения внешней связанности и повышения внутренней связанности

- Гексагональная архитектура, как пример крайности в снижении внешней связанности от инфраструктуры

- Вопрос масштабов: влияние связанности на отдельные методы и целые компоненты/микросервисы

- Статический анализ, как способ выяснять гипотетически проблемные места в контексте связанности

Сергей Протько
IntellectSoft
  • PHP Tech Lead в IntellectSoft
  • Full-stack разработчик с 8-ми летним опытом
  • В свободное время занимаюсь самообразованием, стараюсь помогать в этом другим
  • Люблю сложные задачи и тяжелую музыку
  • GitHub
Увійти
Або поштою
Увійти
Або поштою
Реєстрація через e-mail
Реєстрація через e-mail
Забули пароль?

Оплатити інших учасників Відміна
Введіть промокод для отримання знижки Відміна