Skip to content

Instantly share code, notes, and snippets.

@david-shiko
Last active January 26, 2022 17:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save david-shiko/55048a2e067d3183fae037c0ac4e4ff8 to your computer and use it in GitHub Desktop.
Save david-shiko/55048a2e067d3183fae037c0ac4e4ff8 to your computer and use it in GitHub Desktop.
Заметки чистая архитектура (Роберт Мартин)
математика — это дисциплина доказательства истинности утверждений, требующих доказательства.
Наука, напротив, — дисциплина доказательства ложности утверждений, требующих доказательства
Структурное программирование накладывает ограничение на прямую передачу управления
Объектно-ориентированное программирование накладывает ограничение на косвенную передачу управления.
Функциональное программирование накладывает ограничение на присваивание.
тестированием можно доказать неправильность программы, но нельзя доказать ее правильность.
SOLID:
1. SRP: Single Responsibility Principle
2. OCP: Open-Closed Principle
3. LSP: Liskov Substitution Principle
4. ISP: Interface Segregation Principle
5. DIP: Dependency Inversion Principle
1. Модуль должен отвечать за одного и только за одного актора.
2. Программные сущности должны быть открыты для расширения и закрыты
для изменения.
Собирайте вместе все, что изменяется по одной причине и в одно время. Разделяйте все, что изменяется в разное время и по разным причинам
Не создавайте зависимостей от чего-либо неиспользуемого.
(?)
I: неустойчивость: I = Fan-out ÷ (Fan-in + Fan-out). Значение этой метрики
изменяется в диапазоне [0, 1]. I = 0 соответствует максимальной устойчивости компонента, I = 1 — максимальной неустойчивости.
Устойчивость компонента пропорциональна его абстрактности.
Nc: число классов в компоненте.
Na: число абстрактных классов и интерфейсов в компоненте.
A: абстрактность. A = Na ÷ Nc.
Любая организация, разрабатывающая систему, невольно будет формировать
дизайн, структура которого повторяет структуру взаимодействий внутри
этой организации.
Что еще меняется по разным причинам? Сами варианты использования!
Мы должны отделить зависимости в исходном коде от потоков данных и связать с уровнем
Нельзя создать универсальную инфраструктуру, не создав прежде работающую инфраструктуру.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment