Articles



SOLID - Simply about D - Dependency Inversion Principle

SOLID - Simply about D - Dependency Inversion Principle
Depend on abstractions, not on concretions. Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от...
Show full article

Depend on abstractions, not on concretions.

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

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


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

Источник

Show preview
Leave a comment




Bob Martin SOLID Principles of Object Oriented and Agile Design

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

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

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

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

Show preview
Leave a comment