SOLID принципы / # 2 SRP - Single Responsibility Principle / Принцип единственной ответственности
Vložit
- čas přidán 3. 08. 2024
- Подписка на 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
Пожалуй, лучшее, что я видел по SRP на ютубе. Тут и правильные определения терминов, и про low coupling и high cohesion, и про оркестровку, и не высосанные из пальца примеры. А еще очень грамотное использование абстракций и скрытая отсылочка к Reused Abstraction Principle.
Вижу Донателло :)), моя любимая черепашка, потому что он ученый..., я его обожал в детстве :)
P.S. Ролики все лучше и лучше, очень доходчиво получилось с банковскими операциями!
Спасибо за видео, классная подача материала с понятными примерами
Очень интересно! И прекрасное качество видео! Спасибо!
ждём следующих видео по SOLID
Добавил ссылку на репозиторий. Если что здесь тоже дублирую: github.com/EngineerSpock/youtube-solid
Связанность, связанность - БДСМ какой-то 😂👍. В общем не связывайся со связанностью связанной связанностью со связанностью 🤯🥳🎊
Связанность она такая) Сильная связанность проводит к БДСМу)
@@EngineerSpock вы классный 😁👍
питонический код завтра добавлю, сорян!
А как вы относитесь к языку Go ?
@@user-ew2pd6fq8j из того что мне о нём известно - не очень позитивно. Но высказываться не буду.
@@user-ew2pd6fq8j гугл может забросить этот язык как и многие свои проекты, хотя вряд ли конечно, Go все-таки решает свои задачи. Но, если брать что-то мощьное, то лучше C++ для производительности, а для скорости разработки Python как оболочку. Хотя для быстрой и надежной синхронной многопоточной или асинхронной разработки Go очень силен! Да и с производительностью в Go все ок, единственное - маленькое комьюнити, мало вакансий, много плохих практик написания кода…, короче язык вроде новый, я к тому что развитие языка зависит от того на сколько хорошо он справился и какая у него финансовая и человека-сила-часы поддержка, так вот у Go с этим пока не очень ясно, Google вроде занимается им, да и Яндекс где-то у себя говорят пробует его, но C++ он не заменит потому что сборщик мусора, да и C# есть, этим все сказанно…, как ни крути, а C и C++ остаются самыми быстрыми языками высокого уровня…!
@@user-yl8tj3jm9j спасибо за мнение, очень интересно, кстати видел возможность интеграции Go с Python, затем ее забросили вроде, видимо посчитали, что лучше конкурировать c Python чем стать одной из технологий ускорения питона. Вот тут эта возможность описана blog.filippo.io/building-python-modules-with-go-1-5/, типа можно скомпилировать .so файл и дальше "волшебство".
@@user-ew2pd6fq8j хз друг, сомневаюсь я что там буду развивать прям интеграцию с пайтоном 🤷♂️, может и будут конечно, но в чем смысл? Типа быстро разрабатывать? Окей, если очень быстро разрабатывать и чтобы хорошая производительность, то да, но где? Сколько лет прошло…, где интеграция эта? 🤷♂️
А про остальные принципы будут видео?
Будут
Класс User надо разбить на два класса: UserLoginator и UserRegistrator?
Юджин из ходячих мертвецов)
3:36 . . . ЦИТАТА: "извлекая класс фабрику" . . . а где эта фабрика у вас в коде ?