SOLID принципы: SRP (Принцип единственной ответственности, Single Responsibility Principle)

  Рет қаралды 213,081

Sergey Nemchinskiy

Sergey Nemchinskiy

Күн бұрын

🔥 Новый поток моего авторского тренинга GRASP and GoF Design patterns стартует уже 01.02.2024
Регистрация 👉 go.foxminded.ua/3Uep1dr
1. На основе работы Роберта Мартина (дяди Боба). Акроним SOLID предложен Michael Feathers
2. SOLID (сокр. от англ. single responsibility, open-closed, Liskov substitution, interface segregation и dependency inversion)
1. SRP Принцип единственной ответственности (The Single Responsibility Principle) - Каждый класс должен иметь одну и только одну причину для изменений.
2. OCP Принцип открытости/закрытости (The Open Closed Principle) - программные сущности … должны быть открыты для расширения, но закрыты для модификации
3. LSP Принцип подстановки Барбары Лисков (The Liskov Substitution Principle) объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения правильности выполнения программы
4. ISP Принцип разделения интерфейса (The Interface Segregation Principle) много интерфейсов, специально предназначенных для клиентов, лучше, чем один интерфейс общего назначения
5. DIP Принцип инверсии зависимостей (The Dependency Inversion Principle) Зависимость на Абстракциях. Нет зависимости на что-то конкретное
3. Для чего нужны принципы SOLID
4. Запахи кода (Code smells) и антипаттерны
5. Собственный тренинг по паттернам и антипаттернам
6. Принцип единственной ответственности (SRP) каждый объект должен иметь одну обязанность и эта обязанность должна быть полностью инкапсулирована в класс
7. Следование принципу:
1. Разделение больших классов, делающих многое
2. Слияние мелких классов и объединение в одном классе однотипоной функциональности
8. Упрощает поддержку и расширение классов
9. Антипаттерны - типа GoD object
10. Требует осмысленного отношения
11. Active Record нарушает SRP
Курсы для новичков:
JAVA - bit.ly/3gti9lR
JAVA Start - bit.ly/3fnwLSp
Инструментарий JAVA - bit.ly/2PpjldW
Automation QA (Java) - bit.ly/3fkMr92
ANDROID - bit.ly/3k7ejRv
C#/.NET - bit.ly/3glCdXg
C# START - bit.ly/3i70As2
PYTHON - bit.ly/33oYmAw
FRONT-END - bit.ly/39SKQpL
SALESFORCE Developer - bit.ly/2Xn2L2S
UI/UX дизайн - bit.ly/3i13HBW
Project management - bit.ly/30oGFyO
Обучение на проекте - bit.ly/3i74yRs
Продвинутые курсы для состоявшихся девелоперов:
GRASP and GoF Design patterns -
Enterprise patterns - bit.ly/3fmUnGZ
Сайт Foxminded: bit.ly/2BTPPKk
Foxminded в ФБ: / foxmindedco
FoxmindEd в Instagram: / foxminded.ua
Foxminded в VK: foxminded
Мой Telegram: t.me/nemchinskiyOnBusiness
Мой блог: www.nemchinsky.me
0:00 - вступление Сергея Немчинского
0:50 - все принципы SOLID вкратце
4:02 - для чего нужны принципы SOLID
5:42 - формулировка принципа SRP
6:47 - SRP на картинке
10:23 - как следовать SRP
11:35 - антипаттерн GoD object
12:15 - любые SOLID принципы требуют критического осмысления
13:20 - Active Record нарушает SRP

Пікірлер: 464
@SergeyNemchinskiy
@SergeyNemchinskiy Ай бұрын
👨‍💻 После Senior ВСЕ? Как программисту развиваться после Senior и куда двигаться в айти? 👉 kzfaq.info/get/bejne/hNR9ZLKVlrqvlHU.html
@Mr43046721
@Mr43046721 3 жыл бұрын
Ждём видео про "запахи кода".
@furevors
@furevors 3 жыл бұрын
Поддерживаю, ждём!
@meduzka
@meduzka 3 жыл бұрын
Очень
@pshavykin
@pshavykin 3 жыл бұрын
да!
@kspshnik
@kspshnik 3 жыл бұрын
плюс стопицот! очень-очень интересно :)
@alexxEquinox
@alexxEquinox 3 жыл бұрын
Smells like teen spirit. It stinks of beer and drugs.
@sicknature0717
@sicknature0717 3 жыл бұрын
Про code smell очень интересно было бы послушать. А так, спасибо за видео.
@justdeveloper3939
@justdeveloper3939 3 жыл бұрын
+
@borokopshi
@borokopshi 3 жыл бұрын
+
@aerahtv0000
@aerahtv0000 3 жыл бұрын
+. хочется понять степень говенности моего кода)), так как самоучка
@aerahtv0000
@aerahtv0000 3 жыл бұрын
@@alexlightweight Я просто недавно столкнулся с тем, что мой код разросся и стало сложно его модифицировать, а раз его сложно поддерживать, значит он -говно, я конечно сейчас перепаковываю всё в отдельные классы и функции, но интересно было бы знать, что ещё предпринимают для улучшения кода специалисты, такие как Сергей.
@AVENGER4565
@AVENGER4565 3 жыл бұрын
@@alexlightweight ваши слова словно бальзам на душу. А то сидишь такой и думаешь "хоть бы мой код никто никогда не увидел, а то сразу скажут "что за дурак это проектировал"".
@Nikita04111991
@Nikita04111991 3 жыл бұрын
Спасибо за видео!) P.S. Возьмите черный маркер, нечего не видно
@VITALIIBILYK
@VITALIIBILYK 3 жыл бұрын
Спасибо за видео. Да, интересно и про SOLID и про ошибки.
@user-sh4wz1zn4r
@user-sh4wz1zn4r 3 жыл бұрын
Видео топ. Обращу ваше внимание, товарищи, что мы с вами живём в тот день, когда стаж нашего слуги стал не большим, а ОЧЕНЬ большим!
@tonymax7503
@tonymax7503 3 жыл бұрын
10/10. Для меня первый не нудный и не убитый жизнью автор, который так позитивно и интересно доносит тему. Всегда приятно освежить свои знания, и полезно услышать мнение человека с опытом. Лайк подпеска
@wodzimierzletov2990
@wodzimierzletov2990 3 жыл бұрын
Всё интересно! Всё делайте!
@yersinbizak3592
@yersinbizak3592 3 күн бұрын
круто
@UserUser-yk9bt
@UserUser-yk9bt 4 ай бұрын
Спасибо большое за видео)
@user-dp6dh3cx5k
@user-dp6dh3cx5k 3 жыл бұрын
Однозначно один из лучших канонов по java и ООП в целом! Полезны любые видео по лучшим практикам написания кода, синтаксис выучить легко, а научиться правильно писать гораздо сложнее...
@OlegPetrow-dp1vp
@OlegPetrow-dp1vp Жыл бұрын
Сергей, огромное спасибо за видео! Очень подробно и понятно! Вы отлично умеете объяснять
@user-qv4hn6qq4n
@user-qv4hn6qq4n 3 жыл бұрын
Сергей, смотрел ваши ролики раньше только потому что вы такой жизнерадостный пирожочек, но редко было такое, что тема была настолько понятно раскрыта чтобы я мог скидывать видео коллегам которые что-то не поняли, но в этот раз это прямо шедевр, самое главное что понятны жизненные ситуации, когда соблюдение такого принципе предотвратит серию катастроф.
@romanmotovilov129
@romanmotovilov129 3 жыл бұрын
Спасибо! Очень интересно! Продолжайте про все принципы!
@user-td1ny2mg8q
@user-td1ny2mg8q 3 жыл бұрын
Спасибо огромное за видео по SOLID, сейчас прохожу обучение и надо во всем этом разобраться.
@nicolas267s
@nicolas267s 3 жыл бұрын
Мне хоть уже и знакомы SOLID принципы, все равно с удовольствием прослушал. Повторение - мать учения.
@Epenckorn
@Epenckorn 2 жыл бұрын
Ну наконец-то. Хоть кто-то использует адекватные примеры. А то везде натыкаюсь на примеры, от которых возникает только один вопрос: "как про такую чушь бесполезную столько книг понаписали?" Теперь хоть понятно, что и так всегда его использовал) Спасибо
@user-bt9hx3ik6e
@user-bt9hx3ik6e 3 жыл бұрын
спасибо за разжевывание SOLID. очень нужная тема и простым языком.
@zcbesaba
@zcbesaba 3 жыл бұрын
круто, продолжайте эту серию, и делайте про другие принципы, наконец-то качественный контент, а не жевание одного и того же много раз.
@at0m1x191919
@at0m1x191919 3 жыл бұрын
Это любимая тематика видео
@andyvoice
@andyvoice 3 жыл бұрын
Спасибо! КОнечно ДА! п.с. спасибо что всё так подробно объясняете вплоть до "это ромбик", чтобы мы не додумывали и не тупили)
@RusIvan2022
@RusIvan2022 3 жыл бұрын
Хотя это и самореклама, но. Очень приятный грамотный человек. Спасибо за труды. Не сомневаюсь что автор прекрасный преподаватель!
@artmos6148
@artmos6148 3 жыл бұрын
Сергей, разъясняете очень интересные и актуальные вопросы, продолжайте делиться знаниями по SOLID. Спасибо Вам за то, что делаете!
@bashconsole
@bashconsole 2 жыл бұрын
Сергей, ваше видео просмотрело и пролайкало больше людей, чем лекцию самого Дяди Боба. Это же нонсенс!!! Вайти-вайти...
@user-rr1mw2lz1u
@user-rr1mw2lz1u 3 жыл бұрын
Крутой формат, и видео как раз оптимальной длины
@turalinov
@turalinov 2 жыл бұрын
Спасибо за такое подробное объяснение принципов SOLID!
@alexramov4165
@alexramov4165 2 жыл бұрын
Огромное спасибо, что записали это видео. Программирование - это великая наука. А интересная просто ЖУТЬ как)))))))))))))))))) Однажды создав маленькую программу данный процесс уже не остановить!!!
@z.389
@z.389 3 жыл бұрын
Спасибо за ваше время, если можно больше про принципов.
@wandos777
@wandos777 2 жыл бұрын
Спасибо Вам большое) Очень интересно Вас слушать на эти темы. Примерно год назад слушал это видео, но был, как я сейчас понял, даже еще не новичком, а пересматривая сейчас, понимаю, что эти принципы очень даже логичны и даже не осознанно сам так делаю) еще раз спасибо Вам за такие видео, однозначно лайк )
@akiloci2198
@akiloci2198 3 жыл бұрын
Хорошо, что перешли к техническим видео, не помешает.
@ykrupitskiy
@ykrupitskiy 2 жыл бұрын
обожаю такие видео, где ты смотришь про то, что используешь - но при этом не знаешь как оно в мире зовется :) то что здесь рассказывает человек - ну это же "естественные" вещи, ну или меня так учили в 2000-х годах
@antondavinchi1533
@antondavinchi1533 3 жыл бұрын
Определённо нужно больше таких видео!
@Brick87Game87
@Brick87Game87 3 жыл бұрын
Идеальный формат, быстро и доходчиво!
@ivankobyuk8385
@ivankobyuk8385 Жыл бұрын
Дякую шановний ! Дуже цікавий приклад Ви розглянули. Геть по іншому сприймав цей принцип. Насправді, тут можна багато прикладів різних типів класів. Тонна корисної інфи, варто це обережно пробувати ручками 🤝
@lexaznaurov5205
@lexaznaurov5205 3 жыл бұрын
Сергей сказал в августе про SOLID, значит в августе про SOLID! )) Спасибо!
@xmafioza
@xmafioza 3 жыл бұрын
Отличное видео, продолжайте. И да, не стесняйтесь длинных видео.
@dijee678
@dijee678 3 жыл бұрын
Спасибо за видио! Интересное тема, жду продолжения
@dmitriyobidin6049
@dmitriyobidin6049 3 жыл бұрын
Касательно самого принципа, ну я бы немного придрался :) Все таки SRP также должен учитывать и функциональные требования, особенно это касается когда люди еще любят DRY применять всегда и везде. То что в данный момент некоторые куски кода или некоторые классы у вас выглядят одинаково совсем не значит, что в дальнейшем они будут одинаковы. SRP больше говорит о том, что причины для изменения одного класса должны лежать только в одной функциональной области. Например, не должно быть так, что один и тот же класс у вас правится, если вам необходимо поменять формат вывода счет фактуры в pdf и правило расчета цен для этой же фактуры. Расчет цен условий - одна функциональная область, вывод документа на печать - другая. Менять один и тот же класс(а тем более метод) в обоих этих случаях - чет хрень какая-то :) То что вы описали, все таки ближе именно к DRY(ну или очень сильно с ним пересекается), но тут опять такая загвоздка - не всегда код который выглядит одинаково - отвечает за один и тот же функционал с точки зрения бизнес логики. Тогда переиспользование таких классов - это только вред, т.к. рано или поздно(и с очень большой попаболью) придётся эти зависимости разрывать. Да и вообще SRP может быть(и должен) обоснован без упоминания переиспользования как такового, т.к. решает другую проблему - проблему раздутых и god классов. Упоминание переиспользования только добавляет каши и может привести к неверному выводу, что если я не хочу переиспользовать этот функционал где-то еще, то можно его в принципе и не выносить. Clean Code у Мартина очень спорная книга, большинство пунктов полезные, но есть и прям вредные моменты. Намного более нейтрально и основательно практически 90% пунктов(если не 100) из чистого кода также описаны в Совершенном коде Макконнелла. Не категорично, не безусловно, а скорее как раз так просто описательно. Что они дают и чего помогают достичь. Именно из-за того, что сначала читал Совершенный код, чистый код во многом казался уже вторичным продуктом. При этом намного более грубым в подаче, с невразумительными примерами. При этом в Совершенном коде кроме того что есть у Мартина дана еще куча полезной инфы. Так что я бы брал её и можно, в принципе, больше не читать книг именно касательно качества кодовой базы с точки зрения её организации. При этом обе книги я бы рекомендовал не сразу прям, а лучше где-то после нескольких месяцев(может даже полгода) работы. Чтобы уже была база и был опыт работы с большими кодовыми базами. Только тогда многие моменты будут понятны, иначе многие пункты просто ни за что не зацепятся(не будет опыта, на основе которого постоянно будет кликать в голове "а вот как это делается" или "блин, и так можно было"). Т.е. сначала немного покопаться, набить пару шишек и потом уже всё это разложить по полочкам. Читать эти книги при прохождении каких-то курсов, когда у вас опыта особо еще нет - трата времени, имхо конечно же. С паттернами "банды 4х" та же история, вообще не понимаю людей, которые эту книгу советуют новичкам. Обычно, когда человек "дорос" до этой книги, он о ней уже сам прекрасно знает :)
@grishaumov7864
@grishaumov7864 3 жыл бұрын
А с чем именно не согласны с Мартином, не могли бы в двух словах рассказать?
@igorsmart8078
@igorsmart8078 3 жыл бұрын
clean code довольно таки широко принятый подход...вполне можно сказать даже стандарт де факто, по крайней мере когда речь идет об современных ооп языках.
@naicumo2150
@naicumo2150 3 жыл бұрын
Интересная точка зрения, спасибо за советы!
@dmitriyobidin6049
@dmitriyobidin6049 3 жыл бұрын
@@ergo_____3491 Волне возможно, только вот у Матрина такой же перекос, только в сторону длины методов, лишних . Не дай бог метод будет длинным! "Первое правило: Функции должны быть компактными. Второе правило: функции должны быть еще компактнее. Желательно, чтобы длина функции не превышала 20 строк". Не, я не спорю, может на основе его опыта это и так, но возводить это в правило? Или то что заголовочные комментарии javadoc к каждому методу - это трата времени. Абсолютно не упоминая контекст, когда это может быть необходимо для банальной сдачи проекта на поддержку, т.к. это требование было прописано в договоре, что все интерфейсы должны быть задокументированы. Да и по примерам с кодом есть вопросы. У вас наверняка есть эта книга, посмотрите примеры 6.1 и 6.2. Почему Мартин считает, что пример 6.2 лучше, без вопросов. Что он не раскрывает реализации(хотя это не так, геттеры без проблем раскрывают реализацию. При этом это интерфейс, и мы должны его реализовать, чтобы получить возможность использовать точки. А чтобы его реализовать, нам надо реализовать все методы, а что если они нам не нужны? Тут уже идет явное нарушение принципе YAGNI, зачем в интерфейс зашивать полярные координаты, если в требовании явно говорится что мы будем хранить координаты точки на декартовой плоскости? В каждой из этих книг есть перекосы, просто в книге Макконнелла они более нейтральны. Там меньше "правил" и "требований" в жестких формулировках. Ну и конечно когда читаешь эти книги надо понимать, что информатику может и можно отнести к точным наукам, но уж не в разрезе прикладного программирования с точки зрения структуры кода. Тут мы ближе к лингвистике. Так что любые советы надо не просто принимать, а анализировать и пропускать через себя и свой опыт. Именно поэтому я читал обе книги, именно поэтому и посоветовал эти книги(какую бы вы ни выбрали) читать уже получив какой-то свой, собственный опыт. Иначе это может превратится в слепое поклонение принципам. Я все эти книги воспринимаю больше как мнение старших товарищей, нежели как правила или требования, которые являются для меня отправной точкой, чтобы не пришлось самому набивать некоторые шишки. Но если в какой-то момент я решу написать метод длиннее 20 строк и мне это будет казаться более разумной идеей, нежели дробление его на 5 других методов - то почему нет?
@alexeymezenin
@alexeymezenin 3 жыл бұрын
@@dmitriyobidin6049 Методы должны быть максимально короткими, 1-5 строк идеально. Все остальное - рассадник багов, боль для тех, кто пишет тесты и тех, кто работает с этим кодом в будущем.
@DI-xs3kh
@DI-xs3kh 2 жыл бұрын
Сергей, с Новым Годом! Желаю Вам и всей команде успеха и гармоничного развития. Сберегайте и приумножайте! Вас всегда полезно и интересно слушать.
@sancho2238
@sancho2238 3 жыл бұрын
Очень интересно про SOLID, продолжайте)
@user-bp7zt9sn2w
@user-bp7zt9sn2w 3 жыл бұрын
Тема супер, решил посмотреть сразу не смотря на то что опаздываю на работу. code smell тоже очень интересно
@Vlad_Gromov_1992
@Vlad_Gromov_1992 3 жыл бұрын
Спасибо Сергей, еще не смотрел,но я думаю это будет отличное объяснение👍🏻👍🏻👍🏻👍🏻👍🏻
@denisovilya1888
@denisovilya1888 3 жыл бұрын
тема определенно интересна, хотелось бы побольше таких видео - коротенько, суть, так сказать. Ведь самое сложное - дойти до простого. Когда большой тутор новичок теряется. Важно сначала понять суть, а потом уже можно вникать в детали. А у Сергея очень хорошая подача, что тоже очень важно
@pavelsamsonenka3155
@pavelsamsonenka3155 3 жыл бұрын
Супер! Продолжайте
@alexbendler943
@alexbendler943 2 жыл бұрын
Спасибо, Сергей. Замечательное дополнение к книге дяди Боба.
@inglevir
@inglevir 3 жыл бұрын
Спасибо! Я тоже программист с большим опытом (вероятно, не меньшим, чем у автора), и не то, чтобы меня настигло откровение в этом видео, но ещё разок вспомнить основы, рассказанные с чуть нового угла - всегда полезно и приятно.
@coder3381
@coder3381 3 жыл бұрын
Побольше таких видео. Здорово получается.
@eugenstakhursky9604
@eugenstakhursky9604 3 жыл бұрын
13:10 - не, ну чё сразу котики, я вот Немчинского смотрю)
@Mr43046721
@Mr43046721 3 жыл бұрын
а вдруг он тоже котик?
@goodvin8554
@goodvin8554 3 жыл бұрын
@@Mr43046721 он лиса
@dark_evil77
@dark_evil77 3 жыл бұрын
Denis ору)
@user-hc5mg6zz7h
@user-hc5mg6zz7h 3 жыл бұрын
Очень круто! Спасибо за видео.
@shkippitor1895
@shkippitor1895 3 жыл бұрын
ооо, вот это действительно классная тема ))))) спасибо, за Ваши видео ))))))
@NummeSpnet
@NummeSpnet 3 жыл бұрын
зеленый маркер, на белом фоне, и освещением. почему сразу желтый или белый не взять?
@AndreyDelay
@AndreyDelay 3 жыл бұрын
🤣
@furrai
@furrai 3 жыл бұрын
Это фишка Немчинского, так сказатб. Постоянно жалуются, что текст не видно. К чему изменять традициям)
@another4629
@another4629 3 жыл бұрын
@@furrai Не фишка, а принцип ))
@user-em8ns3nw7n
@user-em8ns3nw7n 3 жыл бұрын
Спасибо. Очень познавательно и, главное, понятно.
@user-zv4kq8ly2n
@user-zv4kq8ly2n 3 жыл бұрын
конечно интересно про code smells.Спасибо за видео
@EnjoykinPlay
@EnjoykinPlay 3 жыл бұрын
Ждём продолжения. Молодец Серёга.
@MaceUA
@MaceUA 3 жыл бұрын
Отличный формат видео!
@eugenstakhursky9604
@eugenstakhursky9604 3 жыл бұрын
Интересно, спасибо Сергей!
@andrey12277
@andrey12277 3 жыл бұрын
Огонь тема! Продолжайте!
@demidovmaxim1008
@demidovmaxim1008 3 жыл бұрын
Большое спасибо за выпуск!!!
@channeldsr9983
@channeldsr9983 3 жыл бұрын
Интересно прослушать все затронутые темы
@ntvisigoth
@ntvisigoth 10 ай бұрын
5:45 В книге "Чистая архитектура" дядюшка Боб говорит о том, что обычно этот принцип озвучивают про "одну обязанность", но это не совсем верно! Потом он вводит действующее лицо "Пользователь или группа пользователей. Назовем их авторами" и потом дает точную формулировку принципа: Модуль должен изменяться только из-за одного актора.
@jewgenijmoldawski3306
@jewgenijmoldawski3306 3 жыл бұрын
Хороший принцип. Я часто встречал разработчиков, которые считали, что применение этого принципа усложняет код: грубо говоря, вместо одного класса получаем два. Приходилось долго убеждать.
@MrAlexT92
@MrAlexT92 3 жыл бұрын
Пеннивайз реально годноту делает. Лайк подписка!)
@user-nm8zk4hn4q
@user-nm8zk4hn4q 3 жыл бұрын
Тема отличная!! Побольше таких видео!!
@iuripraporscic9285
@iuripraporscic9285 3 жыл бұрын
Браво 👍❤ жду продолжения
@JohnDoe-tm1rv
@JohnDoe-tm1rv 3 жыл бұрын
Хорошая серия. Интересно про Лисков послушать :)
@OlegIgonin
@OlegIgonin 3 жыл бұрын
Спасибо за видео. Нужно продолжение!))
@user-rl1hs3jf7l
@user-rl1hs3jf7l 3 жыл бұрын
Конечно будет интересно послушать про Code Smells
@bitcampru
@bitcampru 3 жыл бұрын
Отличное объяснение! Видео короткое, 15 минут. Но чтобы реально все из него осмыслить, нужно побольше времени)) Интересно было, хорошие примеры.
@jevgenijbogdasic7165
@jevgenijbogdasic7165 3 жыл бұрын
Спасибо за детальное видео. Видимо придётса смотреть раз 10 что бы запомнить а затем через пол года забыть.
@roman3249
@roman3249 3 жыл бұрын
Да всё интересно, всё записывайте!
@a.d.4418
@a.d.4418 3 жыл бұрын
Ждал это видео от вас, еще не смотрел но уже знаю что все будет на уровне)))
@YuretsUA
@YuretsUA 3 жыл бұрын
Всегда считал себя тормозом, когда несколько часов обдумывал варианты и искал правильный способ реализации того, или иного функционал, перед реализацией "Время не ждет, просто возьми и напиши код". Теперь я более менее спокоен
@user-ms5pc2vj8u
@user-ms5pc2vj8u 2 жыл бұрын
Крутой формат. Спасибо за инфу!
@alexdec2109
@alexdec2109 3 жыл бұрын
Спасибо, ждём продолжения
@timurkleperson4033
@timurkleperson4033 3 жыл бұрын
Ждем про code smells! Спасибо за видео
@AlanSmith2306
@AlanSmith2306 3 жыл бұрын
Всё интересно. И про запахи и про всё остальное! Ждём-с )
@user-le1xf8ul9y
@user-le1xf8ul9y 3 жыл бұрын
Очень интересно. Жду продолжение
@joekerman1114
@joekerman1114 3 жыл бұрын
Супер! Как же дождаться последнего принципа теперь...
@user-pn8vw8rr3m
@user-pn8vw8rr3m 3 жыл бұрын
Сергей, предлагаю новую рубрику: рефакторинг с Сергеем Немчинским. Чтобы на практике увидеть "code smells" и как с ними бороться. У вас охрененный опыт, мне кажется он максимально раскроется в таком формате.
@nemanjasekulic711
@nemanjasekulic711 3 жыл бұрын
Спасибо вам за ваше видео!
@vladkr7396
@vladkr7396 3 жыл бұрын
Супер. Ждем все принципы)..
@Dmitrii-Zhinzhilov
@Dmitrii-Zhinzhilov 2 жыл бұрын
Сергей, благодарю!
@vladislavzubov2818
@vladislavzubov2818 3 жыл бұрын
Круто! Спасибо. Самое главное что в подаче материала нет заумных терминов/слов.
@user-fr5ty2ll2p
@user-fr5ty2ll2p 3 жыл бұрын
Круто, жду продолжения. И про запахи кода тоже жду.
@MichaelAltair
@MichaelAltair 3 жыл бұрын
Очень интересно. Про анти-паттерны прям надо!!!
@azizkudaikulov993
@azizkudaikulov993 2 жыл бұрын
Спасибо, очень интересно и очень нужно!
@andrew_golubev
@andrew_golubev 3 жыл бұрын
про запахи интересно, спасибо за видео - интересно тема очень интересна + к остальным, что нужен чёрный маркер)
@kseniyashamina9322
@kseniyashamina9322 3 жыл бұрын
Тема очень важна и подача хороша.Ждем скорее продолжения)Спасибо) Еще ,если будет время,интересно послушать о ЛЯМБДА-ВЫРАЖЕНИЯХ и ФУНКЦИОНАЛЬНЫХ ИНТЕРФЕЙСАХ. Еще интересно послушать о классах String Builder и String Buffer. Про многомерные массивы и еще куча всего)))
@ivanm71
@ivanm71 3 жыл бұрын
Так спокойно и размеренно все объясняешь. Хоть для медитации включай)
@dzianish6223
@dzianish6223 3 жыл бұрын
Зашёл чтобы лайкнуть серьёзную тему на канале
@zzshek
@zzshek 2 жыл бұрын
спасибо за примеры и видео!
@antonhen23
@antonhen23 3 жыл бұрын
Прекрасно, как всегда!
@dmitrypichugin7449
@dmitrypichugin7449 3 жыл бұрын
Здравствуйте, а вы сами придумали этот пример или из книги взяли? Я просто другие примеры читал, и вот после многочисленных споров по пониманию SRP нашел видео где Мартин 50 минут про него говорит. Линк - kzfaq.info/get/bejne/fdpggMKArbHMgXk.html (с привязкой ко времени, в которое он дает определение). Главное в SRP, на сколько я понял - это то, чтобы модуль обслуживал одного актора (роль, группа пользователей), для решений задач которых и создан модуль. Дело о человеке, о той роли что он выполняет. Этот принцип чуть выше того что один метод должен выполнять что то одно. Например - у нас сайт с продажей видеокасет. По SRP у нас должны быть разные контроллеры, разные сервисы для Админа и Кастомера. Разные модули, для разных ролей. Изменяем Админку, не затрагиваем Кастомера и наоборот. Ну и внутри подроли - просматривающий отчет, ДБ администратор и т.п. Тут я сам не всегда понимаю где отличие от простого разбиение на функции. И получается что общий код (общий сервис, где то в глубине) может быть в общем модуле, но как только появляются отличия, код нужно разносить по разным модулям, каждый под свою роль, этот вопрос не очень раскрыт.
@sc-nt4gr
@sc-nt4gr 3 жыл бұрын
Спасибо) это интересно и про code smells тоже было бы интересно послушать)
@user-ug5kc1dv2o
@user-ug5kc1dv2o 3 жыл бұрын
Спасибо, интересно и доступно.
@serhiirubets6630
@serhiirubets6630 3 жыл бұрын
Спасибо, познавательно, продолжайте :)
@user-bu3uk5zw7o
@user-bu3uk5zw7o 3 жыл бұрын
Спасибо. Данная тематика интересна)
@user-pq4xx4kg1e
@user-pq4xx4kg1e 2 жыл бұрын
Сам я ни сколько не програмист. Но пришлось сделать автоматизацию рутины, которая сберегла кучу времени и нервов целому коллективу преподавателей. Писал в vba. Часть кода записал с помощью рикодера ворда, часть нагуглил в рунете. Вот тогда я интуитивно стал понимать что я столкнулся с проблемой правильной декомпозиции, а также создания правильных "классов". То есть коды на отдельные операции я где-то нагуглил, а где-то записал с помощью рикодера и изначально привязывал их к соответствующим горячим клавишам, с помощью которых их последовательно запускал. Но с увеличением количества таких макросов, запуск этих команд также стала превращаться в рутину. И меня осенило, что я их могу объеденить по определенным блокам, в зависимости от очередности исполнения кода. Я объединял их с помощью другого vba кода. И привязал исполнение всего кода лишь к одной комбинации горячей клавиши. Самое главное, этот макрос я мог переносить на любой пк, где после минутной настройки он становился рабочим и им мог пользоваться лбой юзер.
@Ogr285
@Ogr285 3 жыл бұрын
Сергей, спасибо огромное. Если будет возможность, пожалуйста выпустите серию роликов про запахи кода (и рефакторинг вообще).
@kirillshikunov8064
@kirillshikunov8064 3 жыл бұрын
Очень интересное видео. Да, хотелось бы ещё цикл видео про рефакторинг.
MOM TURNED THE NOODLES PINK😱
00:31
JULI_PROETO
Рет қаралды 10 МЛН
100❤️
00:19
Nonomen ノノメン
Рет қаралды 38 МЛН
ONE MORE SUBSCRIBER FOR 6 MILLION!
00:38
Horror Skunx
Рет қаралды 14 МЛН
Как стать богатым, если нет харизмы?
4:31
МИЛЛИОН В МЕСЯЦ. Наталья Бек
Рет қаралды 1
Просто о SOLID (Принципы SOLID)
15:54
webDev
Рет қаралды 214 М.
Как форматировать код правильно?  Clean Code
20:58
Принцип хорошего кода DRY (dont repeat yourself)
16:20
Sergey Nemchinskiy
Рет қаралды 70 М.
Как учиться программированию эффективно?
21:35