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 point of truth) - единая точка правды. Иная формулировка — DRY (don't repeat yourself, не делай одну и ту же вещь дважды) Означает, что любое изменение по какому-либо направлению должно производиться из одного места. И нужно всячески стремиться это организовывать в своем коде.
4. N (атомарные изменения) K (итерации) График изменений существующего кода без рефакторинга и соблюдения принципов SOLID Nmin K dead — точка невозврата
5. N (атомарные изменения) K (итерации) График изменений существующего кода при соблюдении принципа Open-Closed, с регулярным рефакторингом Nmin идеал реальная жизнь
6. Идеальный случай схемы зависимостей — ациклический направленный граф. Направленный ациклический граф -- случай направленного графа, в котором отсутствуют направленные циклы, то есть пути, начинающиеся и кончающиеся в одной и той же вершине «Граф зависимостей между компонентами ПО (классы, пакеты, методы) должен быть ациклическим» - Роберт Мартин, 1996
7. Быстрое решение — копи-пастом создается функционал Быстро растет число мест, где нужно менять уже написанный код при внесении нового функционала - Становится понятно, какие есть сущности, оси ответственности. - Видно, как можно выделить высокоуровневый слой. - И виден низкоуровневый слой, слой реализации. Выделение единых точек изменения функционала Инкапсуляция деталей реализации в единых точках Типовая схема рефакторинга