«Главная цель программирования – управление сложностью» Стивен Макконнелл, «Совершенный код».
Принципы SOLID: 1. Принцип единой ответственности (Single Responsibility Principle) 2. Принцип открытия/закрытия (Open/Closed Principle) 3. Принцип подстановки Лискоу (Liskov Substitution Principle) 4. Принцип отделения интерфейса (Interface Segregation Principle) 5. Принцип инверсии зависимостей (Dependency Inversion Principle)
SPOT (single point of truth) - единая точка правды.  Иная формулировка — DRY (don't repeat yourself, не делай одну и ту же вещь дважды) Означает, что любое изменение по какому-либо направлению должно производиться из одного места. И нужно всячески стремиться это организовывать в своем коде.
N (атомарные изменения) K (итерации) График изменений существующего кода  без рефакторинга и соблюдения принципов SOLID Nmin K dead —  точка невозврата
N (атомарные изменения) K (итерации) График изменений существующего кода  при соблюдении принципа Open-Closed, с регулярным рефакторингом  Nmin идеал реальная жизнь
Идеальный случай схемы зависимостей  — ациклический направленный граф. Направленный ациклический граф -- случай направленного графа, в котором отсутствуют направленные циклы, то есть пути, начинающиеся и кончающиеся в одной и той же вершине «Граф зависимостей между компонентами ПО (классы, пакеты, методы) должен быть ациклическим» - Роберт Мартин, 1996
Быстрое решение — копи-пастом создается функционал Быстро растет число мест, где нужно менять уже написанный код при внесении нового функционала - Становится понятно, какие есть сущности, оси ответственности. - Видно, как можно выделить высокоуровневый слой. - И виден низкоуровневый слой, слой реализации. Выделение единых точек изменения функционала Инкапсуляция деталей реализации в единых точках Типовая схема рефакторинга
Спасибо за внимание :)

Dependencies Management

  • 1.
    «Главная цель программирования– управление сложностью» Стивен Макконнелл, «Совершенный код».
  • 2.
    Принципы SOLID: 1.Принцип единой ответственности (Single Responsibility Principle) 2. Принцип открытия/закрытия (Open/Closed Principle) 3. Принцип подстановки Лискоу (Liskov Substitution Principle) 4. Принцип отделения интерфейса (Interface Segregation Principle) 5. Принцип инверсии зависимостей (Dependency Inversion Principle)
  • 3.
    SPOT (single pointof truth) - единая точка правды. Иная формулировка — DRY (don't repeat yourself, не делай одну и ту же вещь дважды) Означает, что любое изменение по какому-либо направлению должно производиться из одного места. И нужно всячески стремиться это организовывать в своем коде.
  • 4.
    N (атомарные изменения)K (итерации) График изменений существующего кода без рефакторинга и соблюдения принципов SOLID Nmin K dead — точка невозврата
  • 5.
    N (атомарные изменения)K (итерации) График изменений существующего кода при соблюдении принципа Open-Closed, с регулярным рефакторингом Nmin идеал реальная жизнь
  • 6.
    Идеальный случай схемызависимостей — ациклический направленный граф. Направленный ациклический граф -- случай направленного графа, в котором отсутствуют направленные циклы, то есть пути, начинающиеся и кончающиеся в одной и той же вершине «Граф зависимостей между компонентами ПО (классы, пакеты, методы) должен быть ациклическим» - Роберт Мартин, 1996
  • 7.
    Быстрое решение —копи-пастом создается функционал Быстро растет число мест, где нужно менять уже написанный код при внесении нового функционала - Становится понятно, какие есть сущности, оси ответственности. - Видно, как можно выделить высокоуровневый слой. - И виден низкоуровневый слой, слой реализации. Выделение единых точек изменения функционала Инкапсуляция деталей реализации в единых точках Типовая схема рефакторинга
  • 8.