SOLID принципы / # 2 SRP - Single Responsibility Principle / Принцип единственной ответственности

  Рет қаралды 5,281

EngineerSpock - IT & программирование

EngineerSpock - IT & программирование

Күн бұрын

Подписка на Boosty: boosty.to/engineerspock
----------------------------------------------------------------------------------------
Курсы от EngineerSpock: offer.engineerspock.com/
Донаты на развитие: pay.cloudtips.ru/p/1f080f72
SOLID принципы - это большАя часть современной теории ООП (объектно-ориентированного программирования). Впервые сам термин предложил дядя Боб (Uncle Bob), хотя основы для выведения принципов были известны до него и разбирались, например, в известном труде Бертрана Мейера ("Объектно-ориентированное конструирование программных систем").
SOLID расшифровывается так:
S - Single Responsibility Principle (SRP) - Принцип единственной ответственности
O - Open Closed Principle (OCP) - Принцип открытости/закрытости
L - Liskov Substitution Principles (LSP) - Принцип подстановки Барбары Лисков
I - Interface Segregation Principle (ISP) - Принцип разделения интерфейса
D - Dependency Inversion Principle (DIP) - Принцип инверсии зависимости
Следование принципам SOLID в программировании имеет огромную роль с точки зрения написания чистого кода и как следствие максимизации простоты поддержки кода.
Во втором выпуске мы поговорим об SRP - Single Responsibility Principle или Принцип единственной ответственности. Обсудим частые запахи нарушения SRP и посмотрим на относительно сложный пример нарушения и на то как провести рефакторинг, исправляющий нарушение принципа.
00:00 Начало выпуска о SRP
00:29 Определение SRP из википедии и от Роберта Мартина (aka дядя Боб)
01:11 Подсчёт обязанностей класса. Уровни применения SRP
02:40 Нарушение SRP на практике
05:48 Связанность (coupling) и связность (cohesion)
07:01 Сложный пример нарушения SRP на C# и Python
09:58 Рефакторинг примера для устранения нарушения SRP
14:12 Обсуждение результатов рефакторинга
14:46 Частые случаи нарушения SRP
17:50 Заключение по SRP
Ссылка на репозиторий: github.com/EngineerSpock/yout...
#solid #srp #ocp #lsp #isp #dip #oop #cleancode
Курсы релевантные данному видео:
Архитектура ПО: Meta и SOLID принципы в ООП с примерами на C# bit.ly/2UiuoeY
Архитектура ПО: внедрение зависимостей на C# bit.ly/368zugi
Лучшие практики проектирования и реализации API на C# bit.ly/3qICNEr
Также можно рассмотреть курс "Изучаем юнит-тестирование с NUnit на C#" bit.ly/3dxP9tX

Пікірлер: 25
@suffocateforfucksake
@suffocateforfucksake Жыл бұрын
Пожалуй, лучшее, что я видел по SRP на ютубе. Тут и правильные определения терминов, и про low coupling и high cohesion, и про оркестровку, и не высосанные из пальца примеры. А еще очень грамотное использование абстракций и скрытая отсылочка к Reused Abstraction Principle.
@user-ew2pd6fq8j
@user-ew2pd6fq8j 2 жыл бұрын
Вижу Донателло :)), моя любимая черепашка, потому что он ученый..., я его обожал в детстве :) P.S. Ролики все лучше и лучше, очень доходчиво получилось с банковскими операциями!
@user-tw6ps2ro7k
@user-tw6ps2ro7k 2 жыл бұрын
Очень интересно! И прекрасное качество видео! Спасибо!
@MrTemperator
@MrTemperator Жыл бұрын
Спасибо за видео, классная подача материала с понятными примерами
@romanryaboshtan9270
@romanryaboshtan9270 2 жыл бұрын
ждём следующих видео по SOLID
@EngineerSpock
@EngineerSpock 2 жыл бұрын
питонический код завтра добавлю, сорян!
@user-ew2pd6fq8j
@user-ew2pd6fq8j 2 жыл бұрын
А как вы относитесь к языку Go ?
@EngineerSpock
@EngineerSpock 2 жыл бұрын
@@user-ew2pd6fq8j из того что мне о нём известно - не очень позитивно. Но высказываться не буду.
@user-yl8tj3jm9j
@user-yl8tj3jm9j 2 жыл бұрын
@@user-ew2pd6fq8j гугл может забросить этот язык как и многие свои проекты, хотя вряд ли конечно, Go все-таки решает свои задачи. Но, если брать что-то мощьное, то лучше C++ для производительности, а для скорости разработки Python как оболочку. Хотя для быстрой и надежной синхронной многопоточной или асинхронной разработки Go очень силен! Да и с производительностью в Go все ок, единственное - маленькое комьюнити, мало вакансий, много плохих практик написания кода…, короче язык вроде новый, я к тому что развитие языка зависит от того на сколько хорошо он справился и какая у него финансовая и человека-сила-часы поддержка, так вот у Go с этим пока не очень ясно, Google вроде занимается им, да и Яндекс где-то у себя говорят пробует его, но C++ он не заменит потому что сборщик мусора, да и C# есть, этим все сказанно…, как ни крути, а C и C++ остаются самыми быстрыми языками высокого уровня…!
@user-ew2pd6fq8j
@user-ew2pd6fq8j 2 жыл бұрын
​@@user-yl8tj3jm9j спасибо за мнение, очень интересно, кстати видел возможность интеграции Go с Python, затем ее забросили вроде, видимо посчитали, что лучше конкурировать c Python чем стать одной из технологий ускорения питона. Вот тут эта возможность описана blog.filippo.io/building-python-modules-with-go-1-5/, типа можно скомпилировать .so файл и дальше "волшебство".
@user-yl8tj3jm9j
@user-yl8tj3jm9j 2 жыл бұрын
@@user-ew2pd6fq8j хз друг, сомневаюсь я что там буду развивать прям интеграцию с пайтоном 🤷‍♂️, может и будут конечно, но в чем смысл? Типа быстро разрабатывать? Окей, если очень быстро разрабатывать и чтобы хорошая производительность, то да, но где? Сколько лет прошло…, где интеграция эта? 🤷‍♂️
@user-yl8tj3jm9j
@user-yl8tj3jm9j 2 жыл бұрын
Связанность, связанность - БДСМ какой-то 😂👍. В общем не связывайся со связанностью связанной связанностью со связанностью 🤯🥳🎊
@EngineerSpock
@EngineerSpock 2 жыл бұрын
Связанность она такая) Сильная связанность проводит к БДСМу)
@user-yl8tj3jm9j
@user-yl8tj3jm9j 2 жыл бұрын
@@EngineerSpock вы классный 😁👍
@EngineerSpock
@EngineerSpock 2 жыл бұрын
Добавил ссылку на репозиторий. Если что здесь тоже дублирую: github.com/EngineerSpock/youtube-solid
@sashakopiika
@sashakopiika 2 жыл бұрын
А про остальные принципы будут видео?
@EngineerSpock
@EngineerSpock 2 жыл бұрын
Будут
@user-xu5po3rk5t
@user-xu5po3rk5t 2 жыл бұрын
Класс User надо разбить на два класса: UserLoginator и UserRegistrator?
@YourRets
@YourRets 2 жыл бұрын
Юджин из ходячих мертвецов)
@user-zd3qw7le5c
@user-zd3qw7le5c 7 ай бұрын
3:36 . . . ЦИТАТА: "извлекая класс фабрику" . . . а где эта фабрика у вас в коде ?
SOLID принципы / # 3 OCP - Open Closed Principle / Принцип открытости закрытости
17:57
EngineerSpock - IT & программирование
Рет қаралды 3,2 М.
SOLID принципы на Python: OCP - Принцип открытости / закрытости
21:15
EngineerSpock - IT & программирование
Рет қаралды 9 М.
Ну Лилит))) прода в онк: завидные котики
00:51
I Was Wrong About Single Responsibility Principle | Prime Reacts
8:14
Чистый код / Clean Code #6: SoC, CQS, PoLA
12:36
EngineerSpock - IT & программирование
Рет қаралды 4,3 М.
Ну Лилит))) прода в онк: завидные котики
00:51