Статьи



SOLID - Просто о D - Принцип инверсии зависимостей

SOLID - Просто о D - Принцип инверсии зависимостей
Depend on abstractions, not on concretions. Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от...
Посмотреть всю статью

Depend on abstractions, not on concretions.

  • Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.
  • Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Что такое модули верхних уровней? Как определить этот уровень? Как оказалось, все очень просто. Чем ближе модуль к вводу/выводу, тем ниже уровень модуля. Т.е. модули, работающие с BD, интерфейсом пользователя, низкого уровня. А модули, реализующие бизнес-логику — высокого уровня.


Что такое зависимость модулей? Это ссылка на модуль в исходном коде, т.е. import, require и т.п. С помощью динамического полиморфизма в runtime можно обратить эту зависимость.

Источник

Показать только превью
Оставить комментарий




Bob Martin SOLID Principles of Object Oriented and Agile Design

Bob Martin SOLID Principles of Object Oriented and Agile Design
Представьте себя воспарившим духом над своим телом на операционном столе. Вы видите как хирург работает над вашим сердцем. У хирурга понятное дело что "сроки горят" и...
Посмотреть всю статью

Представьте себя воспарившим духом над своим телом на операционном столе. Вы видите как хирург работает над вашим сердцем. У хирурга понятное дело что "сроки горят" и он должен быть как можно скорым. Но скажите теперь - как вы хотели бы что бы хирург, доделывал свою работу? wink

Вот вот. Мало кто хочет чтоб в его груди лежало "кое как, собранное в кучу" и так же подшитое сердце. То же самое с кодом вашего проекта. Сроки поджимают, да, нужно смириться с этим. Но бросать шлепки говна в документы - не лучший вариант.

Мне просто нравиться как дядя Боб чётко показывает нужду в хорошем коде. Отличное сравнение с раотой хирурга.

Показать только превью
Оставить комментарий