Тёмный

SOLID принципы: OCP (Открытости/закрытости (Open Closed Principle) 

Sergey Nemchinskiy
Подписаться 360 тыс.
Просмотров 119 тыс.
50% 1

Опубликовано:

 

30 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 192   
@SergeyNemchinskiy
@SergeyNemchinskiy День назад
Что такое нормализация баз данных? - ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-4PJ-IG7SMIs.htmlsi=ydXbNcOWmx78syD_
@mikhailanisimov2160
@mikhailanisimov2160 4 года назад
"В промышленном софте всегда всё протестировано", - хорошая шутка. =)
@Manuel-j3q
@Manuel-j3q 4 года назад
Смеялись всем тестовым отделом.
@МаксимЧернявский-д9ш
Жду пока он скажет - "Я больше не Сергей Немчинский, теперь я имплементирую интерфейс Сергея Немчинского!" )) Спасибо за видео, как всегда доходчиво и понятно
@pi4alka_screamo
@pi4alka_screamo Год назад
ахах, в голос))))))))))))))))))
@xandrop
@xandrop Год назад
А так как Такое запомнить нельзя, то прочитает со смартфона
@johnsnow2810
@johnsnow2810 4 года назад
Очень сумбурное объяснение. Если бы сам не знал бы принципы solid, то из этого видео возможно не понял бы. Ну и да, доску нужно ближе и маркеры темнее или вообще перейти на запись видео с экрана, с электронной доской. В любом случае спасибо за видео! Очень полезно послушать многие вещи, то как их другие понимают.
@rus1006
@rus1006 2 года назад
я тоже ничего не понял. однако буква s из его объяснения понятна. вообще то я думал расширение под собой подразумевает применение паттернов
@kirillshamyakov6649
@kirillshamyakov6649 4 года назад
Видос SOLID’ный, спасибо, с меня луцк
@Maxlyaptsev
@Maxlyaptsev 3 года назад
Зачем же вы бумагу переводите. Доску специально делают такую чтобы можно было легко стереть каракули. Куда эта бумага потом попадает? На полигоны и складируется? На ней еще ничего и не видно, и скрип неприятный. Откуда вы такие беретесь то, вроде видео 2020 года
@MegaMrTan
@MegaMrTan 4 года назад
Здравствуйте, благодарю за труд; пишите, плз, жирнее или маркеры смените))
@hmixa
@hmixa 4 года назад
Использование оператора new смерть для тестов. Работайте через интерфейсы, скармливая их вашему коду снаружи и будет вам счастье!
@anti1am3r
@anti1am3r 4 года назад
Где то вам все равно создавать экземпляры надо )
@sergey.stafeev
@sergey.stafeev 4 года назад
Непонятно, почему я не могу добавить метод в существующий класс, чем плодить новые классы наследованием и там добавлять? И если правок будет много, то это сколько ж наследований будет.
@alexandernifanin7366
@alexandernifanin7366 4 года назад
Да ерунда, конечно. Я бы так сказал, что добавлять можно, а вот менять - проблемно, т.к. зависимые классы и клиенты тоже придётся менять. Проблема может быть в интерфейсе. Если туда добавить метод, его придётся добавлять во все наследники.
@konstantinviktorovich8194
@konstantinviktorovich8194 3 года назад
Поберегите природу, используйте маркерные доски!
@БендерЗадунайский-щ9ы
спасибо! ждем про Л😀 ... и поставте маркерную доску. удобная дешевая штука, и на ней всё видно! не то что на этой. сами посмотрите(с телефона 😀)
@dimitro.cardellini
@dimitro.cardellini 4 года назад
Перечитал Роберта Мартина. Специально, чтобы убедиться в том, что я правильно понимаю Принцип Отркытоти / Закрытости (OCP). . Так, вот, этот принцип не совсем про Классы и Интерфейсы, наследование и реализацию, и уж тем более, не про "замочки" на классах. Это все, конечно правильно, но, это все частные способы вносить изменения в код, который, кстати, не обязательно соответствует OCP. И применение к нему описанных техник изменения сохранит это свойство кода. . OCP о том, что следуя SRP мы также должны учитывать, что отдельные подзадачи могут иметь разные решения и выделять соответствующие абстракции, защищая этим самым решение общей задачи от изменений, и делая такое решение открытым для расширения. Т.е. OCP -- это про декомпозицию кода. Именно, следуя OCP мы должны выделить наши зависимости, т.е. проанализировать, какие подзадачи могут иметь альтернативные решения, оценить вероятность такого измнения, что в свою очередь позволит не плодить лишнии абстракции. . На простом примере: Мы делаем функцию сортировку и используем в алгоритме простую конструкцию: a < b, чтобы понять надо ли нам поменять элементы местами или нет. Мы находимся в рамках SRP (т.е. наш алгоритм имеет одного Актора, решает одну задачу). Но, если нам надо будет реализовать сортировку уже по возрастанию (убыванию), то нам надо будет менять алгоритм, чего собственно мы и хотим избежать. . Так вот OCP говорит нам о том, что наш алгоритм сортировки должен абстрагироваться от реализации отношения порядка (что помимо всего прочего позволит абстрагироваться еще и по типу данных элементов коллекции). . Видео из объяснения OCP вылилось в расказ про DIP, где зависимости нам уже даны. OCP -- про выявление зависимостей и создание абстракций. . На 9:20 Сергей дает пример Клиентского класса и Серверного класса, и говорит о том, что это нарушает OCP потому, что мы не можем расширить их взаимодействие. И здесь очень опасная и хитрая ошибка, которая заключается в том, что нам не надо расширять это взаимодействие. Нам надо расширить функциональность, а не взаимодействие отдельных двух компонентов. . В заключении, перефразирую Кота Матроскина: - чтобы инвертировать что-нибудь "ненужное", сначала надо абстрагироваться по этому "ненужному", а мы об этом в видео не говорим ...
@sashchernuh
@sashchernuh 4 года назад
"Видео из объяснения OCP вылилось в расказ про DIP, где зависимости нам уже даны. OCP -- про выявление зависимостей и создание абстракций." - спасибо за идею!
@ivanandreev9571
@ivanandreev9571 3 года назад
Подскажите пожалуйста, как абстрагироваться от отношения порядка в случае с сортировкой?
@dimitro.cardellini
@dimitro.cardellini 3 года назад
@@ivanandreev9571 заменить "a < b" на "compare(a, b) < 0" -- это будет OCP. Это позволит изменять порядок сортировки, не меняя при этом сам алгоритм сортировки. А потом по DIP надо принимать функцию conpare на вход влгоритма сортировки.
@ivanandreev9571
@ivanandreev9571 3 года назад
@@dimitro.cardellini то есть мы создадим целый класс компаратора и интерфейс для него?
@dimitro.cardellini
@dimitro.cardellini 3 года назад
@@ivanandreev9571 ну, я бы предпочёл лямбду )
@olegpicik363
@olegpicik363 4 месяца назад
самый противоречивый принцип на мой взгляд, с точки зрения практики это же жопа(извините), открываешь такой проект, заходишь в интерфейс, смотришь его реализации, а там или композиции или наследники друг друга, и их 5 штук например и хочешь себе выстрелить в голову... по-моему лучше сразу рефакторить нафиг, и делать один нормальный класс если это реально расширения одного направления
@user-hv8rh8nk9d
@user-hv8rh8nk9d 4 года назад
Вопрос жизни и смерти Когда Сергея Немчинского перестанут звать Сергеем Немчинским?
@vitalik100500q
@vitalik100500q 4 года назад
Когда замуж выйдет
@gibizov
@gibizov 4 года назад
Не, а вдруг ещё кто-то не знает? И заметьте, Сергей старается протараторить это как можно быстрее. Хотя уже можно просто рисовать баннер с фио и регалиями, как в программе «Время». 100К уже есть, зачем им слушать это постоянно? Чтоб в подкорку вбивалось? Ну мякше надо, нежнее.
@Oleksii_Leshchenko
@Oleksii_Leshchenko 4 года назад
@@gibizov Это же фишка про которую столько шутят. Это хорошо Тем более, большой процент новых, не подписанных
@gibizov
@gibizov 4 года назад
Алексей Лещенко «люблю вас и всё вот это вот» :)
@Дмитрий-ч1в5ы
@Дмитрий-ч1в5ы 4 года назад
@@vitalik100500q Возможно тогда появится еще один Сергей Немчинский вполне возможно
@videonafoto
@videonafoto 4 года назад
Не очень понятно. А как расширять функциональность, если интерфейс менять нельзя? А если клиенту нужны новые методы, или старые методы с другой сигнатурой?
@rusrulet2806
@rusrulet2806 2 года назад
тоже задался тем же вопросом. и судя по комментам, вопрос остаётся открыт )
@IROnMAn-ze6op
@IROnMAn-ze6op 4 года назад
Не понял насчёт трактовки от Мартина: нам что, нужно создавать новый класс, который заново будет имплементировать интерфейс, только поведение уже будет другое, чем у класса, со старой реализацией?
@SergeyNemchinskiy
@SergeyNemchinskiy 4 года назад
примерно так. но можно от старого унаследоваться
@IROnMAn-ze6op
@IROnMAn-ze6op 4 года назад
@@SergeyNemchinskiy если не унаследоваться от старого, то всё равно не понимаю. У нас есть новый класс с новой реализацией, зачем тогда сохранять старый?
@kisurov
@kisurov 4 года назад
@@IROnMAn-ze6op Новый класс может быть обёрткой над старым, дополняя его функционал, а не повторяя его целиком
@truenerdofbotva5831
@truenerdofbotva5831 4 года назад
@@kisurov но у нас же тогда в итоге окажется по десять обёрток над каждым классом, как с этим быть? Или предполагается, что код будет писаться сразу как надо, и изменения будут малочисленными?
@braind_bible4845
@braind_bible4845 4 года назад
Такая же поебота как и первое видео. Лучше посмотреть эту тему у других авторов, там хотя бы примеры кода есть и авторы не читают с телефона.
@Михаил-ъ4ч1о
@Михаил-ъ4ч1о 4 года назад
Господи, купите новые маркеры для видео, что за позорище))
@РайанКупер-э4о
@РайанКупер-э4о 4 года назад
В маркерах никаких проблем нет, там чернила стекают вниз, то есть их нужно держать пишушим концом вниз. Гравитация, привет.
@apdgslfhsodbna
@apdgslfhsodbna 4 года назад
@@РайанКупер-э4о, Сшашавцы в наса специально придумали ручку, пишущую в космосе для такого случая 🤣🤣🤣
@Tolgetmen_dev
@Tolgetmen_dev 4 года назад
Ля как маркер крутит)
@user-888azim-97
@user-888azim-97 3 года назад
😂
@RadioWestin
@RadioWestin 2 года назад
совсем неизвестный Бертран Мейер - ничего себе :) автор Eiffel, авторитетной книги ООП "Object-Oriented Software Construction" и еще кучи всего :)
@sh1maru
@sh1maru 3 года назад
А как этот принцип сочетается с тем, что бизнес требования, а за ними бизнес-логика, меняются по два раза в день и всем в принципе заранее понятно, что так и будет?
@ГеоргийОрлов-г5в
@ГеоргийОрлов-г5в 3 года назад
Сергей, купите пластиковую доску. У меня от скрипа фломастера по бумаге зубы свело! Слушал без звука с субтитрами.
@виталийвольф-у4т
@виталийвольф-у4т 4 года назад
Вопрос, так а конструкция Роберта Мартина(1996 год), я не понял как там тогда "расширять" функционал, если и старый класс(функционал), и новый, зависят от одного интерфейса. как мы добавим что-т новое, если интерфейс у них один?
@nrnwest
@nrnwest 2 года назад
функционал можно только добавить но не трогая интерфейс а вот первый вариант гибче выходит, там мы наследуюем и добавляем любой функционал (в интерфейс) не нарушай базовый интерфейс ) чет Сергей не договаривает или просто на тренинг так манит )))
@-boiadeiro-
@-boiadeiro- 4 года назад
осталось 3 принципа и мы наконец познаем силу ООП!
@TimC0x
@TimC0x 4 года назад
9:50 почему же "прокси", это же адаптер, он позволяет соединить одну систему с другой. прокси это если об подмене реального объекта заглушкой
@lyloo6577
@lyloo6577 4 года назад
Подразумевается, наверное, что требуемый объект будет инициализирован или найден при необходимости. Адаптер это про другое, про создание одного интерфейса поверх другого/других для удобства использования
@TheDEFCHER
@TheDEFCHER 2 года назад
Так много людей которым нравиться видос и которые ничего не поняли. Я так и не понял что это на практике, даже нет никакого вывода с чёткой формулировкой что это такое. Мне просто использовать интерфейсы и работать через них или что?
@RusIvan2022
@RusIvan2022 2 года назад
Да если патерны посмотреть, тоже все сходится к использовании интерфейсов. А вообще все принцепы и патерны сводятся к тому что нужно делать так чтоб ты мог дописывать код и ничего не ломалось.
@andrewkovalchuk1665
@andrewkovalchuk1665 4 года назад
Сергей, ты случайно в конце не оговорился про IoC и Dependency Inversion? Может имел ввиду Dependency Injection, как имплементацию IoC, а используя Dependency Inversion принцип мы можем подкидывать в IoC контейнер нужные нам реализации интерфейса? В данном случае оговорка, как по мне, достаточно существенная и может ввести в заблуждение тех, кто недавно с этим столкнулся... А так все по делу. Спасибо за то что ты делаешь. Лойк!)
@mikhaillucky8130
@mikhaillucky8130 4 года назад
да, это оговорка, еще чуть раньше он принцип назвал паттерном, но если человек захочет разобраться в этой теме, данных видосов будет мало, а небольшие неточности исчезнут в процессе.
@andrewkovalchuk1665
@andrewkovalchuk1665 4 года назад
Так то коммент я писал с целью обратить внимание тех, кто только столкнулся с этим. На собесе, конечно, лучше так не оговариваться...
@aliakseikartashou6166
@aliakseikartashou6166 Год назад
Судя по объяснению становится понятно, почему вы директор учебной компании, а не программист.
@SergeyNemchinskiy
@SergeyNemchinskiy Год назад
программистом я был больше 20 лет :) Так что мимо
@strekozart
@strekozart 4 года назад
Сергей спасибо за видео! Мне очень нравится как вы вкладываетесь в объяснение, очень круто!
@AnnaIsHere
@AnnaIsHere 3 года назад
и оформление. И вот эти штучки внизу видео, отрезочки. Мимими!
@apdgslfhsodbna
@apdgslfhsodbna 4 года назад
Работал в 2х компаниях дот нет джуном... омг сколь там было говна, платили хорошо, но видимо понимали что с этим легаси разбираться, и одна из этих компаний достаточно известная.
@homo-ergaster
@homo-ergaster 4 года назад
Не Microsoft случаем? У меня университетский товарищь ушел к ним. Говорит класс на 50 тысяч строк запилить там как запросто.
@apdgslfhsodbna
@apdgslfhsodbna 4 года назад
@@homo-ergaster , яндекс
@karabasbarabas2000
@karabasbarabas2000 4 года назад
Спасибо большое! Шарпистам рекомендую видео от Tim Corey по Solid, чуть длиннее и с примерами
@torrvic1156
@torrvic1156 Месяц назад
Да. Тим великий гуру C#. Он больше на практические примеры ориентирован.
@sealkeen
@sealkeen 2 года назад
На самом деле, спасибо большое, Сергей, пересматриваю во время тренинга, правда, не у вас, к сожалению, а в епаме, но всё-таки. Во время написания кода Ваши рекомендации, когда на заднем плане идут, реально отлично помогают при рефакторинге архитектуры приложения. Пишу классы для доступа к базе данных и интерфейс, где у меня очень высокая зависимость классов друг от друга, а потом слышу с заднего плана: надо просто вынести клиентский код в интерфейс, и реально выношу его в интерфейс, и оно всё в результате отлично спроектировано получается.
@DanyaIzyum
@DanyaIzyum 3 месяца назад
dont cahch this - может я что-то не знаю но в Python нет интерфесов получается что нужно создавать абстрактные классы для того чтобы их имплементировать другими классами - но если в других языках понятно что он имплементирует то для классов вообще не очень понятно, почему нельзя делать decorator функции если она чем -то не подходит, хотя конечно это уже будет другая функция и работать она может по другому. с точки зрение истинного полиморфизма это не пойдет, зато дублирования кода никакого не будет.
@turchik5763
@turchik5763 4 года назад
Сергей, запишите подробное видео про android разработку, с чего начать и т д. Хочется услышать от вас рекомендации новичку
@ДанилаПермогорский-т6р
Замечательный цикл видео, спасибо Сергей!
@grommaks
@grommaks 4 года назад
Харош, было интересно 🙃 спасибо
@АндрейГрицай-л1ф
@АндрейГрицай-л1ф 4 года назад
Очень простое і доступное объяснение. Даже есть практический пример из жизни, что очень помогает понять. Спасибо большое! Мне очень нравится ваши видео. ☺
@MaksUsanin
@MaksUsanin 3 года назад
"все ещё зовут Сергей Немчинский" :))
@anzarsh
@anzarsh 3 года назад
Захардкожено)
@dsalodki
@dsalodki 4 года назад
не видно что пишется на доске, может маркеры тёмные использовать?
@xandrop
@xandrop Год назад
Все очень хорошо на бумаге, но вот если лектор, чтобы что-то объяснить постоянно лезет в смартфон, то как это ответить на собеседовании, к примеру.
@Sasha2dx
@Sasha2dx 3 года назад
Я если что могу серъёзно заниматься разработкой даже выписывая перманентный говнокот. :D
@AnaRxistBoD
@AnaRxistBoD 3 года назад
Такой вопрос: а что насчет расширения функционала через extensions (extension methods)? Насколько это соответствует принципу "открытости-закрытости"?
@NummeSpnet
@NummeSpnet 3 года назад
получается OCP от Дяди Боба есть ни что иное как DIP... получается O зависит от D )
@vrabosh
@vrabosh 4 года назад
А если нашел способ как улучшить старый код, там типа где трогать нельзя, тогда что?
@0imax
@0imax 4 года назад
Работает - не трогай :) Понадобится "официально" туда залезть - тогда уже можно попробовать внести "новшества".
@vrabosh
@vrabosh 4 года назад
@@0imax хотя я на начальном этапе максимально стараюсь оптимизировать и гибкость сделать.. и уже когда проект разросья уже не трогать, а все недочеты запоминать на след проект, и потмо уже править в новом проекте.
@Бензини
@Бензини 4 года назад
у Вас такие прикольные лекции записаны, давно не было, делайте побольше лекций)
@hpw-dev
@hpw-dev 2 года назад
я смотрю в 1080p и не вижу чё на доске, это всё равно что писать ярко жёлтым по белому
@sealkeen
@sealkeen 3 года назад
10:10 Если посмотреть так-то по диаграмме на декторатор, то получается, что у нас циклическая зависимость Прокси от Интерфейса и Интерфейса от прокси) И мы можем вставлять абсолютно любое количество дополнительного функционала: логирование, кэширование, аутентификацию, авторизацию, аудит - поскольку они все полетят в трубу, а проекты просто не скомпилируются :D
@MrSBFI
@MrSBFI 2 года назад
директор, разоритесь на свежие маркеры, смотреть больно
@LeoMrakobes
@LeoMrakobes 4 года назад
Историческая отсылка понравилась, а вот по сути - если бы я не знал как работают SOLID принципы - то без наглядных примеров мало что понял бы из этого видео
@alexandernifanin7366
@alexandernifanin7366 4 года назад
Да, тоже не раз изучал SOLID, но из примеров с нуля точно ничего не понял бы. Хотя, если сделать подробнее, то видео получится на полчаса.
@neverworld8815
@neverworld8815 3 года назад
Это шорканье по бумаге меня дико нервирует
@romanmotovilov129
@romanmotovilov129 4 года назад
Спасибо! Ставлю лайк перед просмотром! А теперь можно и посмтотреть...
@DrZupan
@DrZupan 2 года назад
что отвечать на собеседовании на вопрос "что такое О с солид?" так и не понял)
@sergem2794
@sergem2794 4 года назад
Отличная подборка. Давно ждал SOLID
@ЛеонидКоролев-л5щ
Нихрена не понял. Нужны примеры.
@MrBulat1
@MrBulat1 4 года назад
Спасибо, приятно вас слушать. Плюсую.
@ДмитрийТарадай-с3ж
С первого раза, вообще ничего не понял)
@perva4ina
@perva4ina 4 года назад
Больше комментов богу комментов
@veldan1202
@veldan1202 4 года назад
Видосики стали превосходными/)))
@RusIvan2022
@RusIvan2022 3 года назад
у меня почему то везде хардкод)
@MrBulat1
@MrBulat1 4 года назад
Спасибо за видео, приятно было слушать.
@z1zzz
@z1zzz 4 года назад
Очень классная линейка видео про SOLID. Большое спасибо вам за это! Если можно, то можете снять также линейку видео про structural, behavioral design patterns. Хотя бы по 3 с каждого?
@Сергей-у6и7б
@Сергей-у6и7б 3 года назад
Куча воды и ничего не ясно
@СергейКарпиченко-с6б
Спасибо большое за видео, супер!
@Антон-е3я
@Антон-е3я 2 года назад
Ни+уя не понятно, но очень интересно.
@demidovmaxim1008
@demidovmaxim1008 4 года назад
Большое спасибо за выпуск!!!
@Макс523
@Макс523 3 года назад
Ok!
@ИльяКудинов-п1ж
@ИльяКудинов-п1ж 3 года назад
Много воды
@jossefal1957
@jossefal1957 4 года назад
Отличное видео
@victormakovchik249
@victormakovchik249 3 года назад
Кроме Бертрана Мейера был ещё Сид Мейер - разработчик культовой игры Цивилизация! Может родственник?)))
@dmitryzolkin7904
@dmitryzolkin7904 Год назад
Подскажите, почему инверсия зависимостей и софт код это не одно и тоже? Разве обращение к конкретным объектам через интерфейс это не софт?
@Corvus_I_am
@Corvus_I_am Год назад
Я не знаю как максимально вежливо подсветить, наверное, все равно обижу спикера, но все же повторю, что исключение хезитационных пауз из речи стало бы колоссальной её оптимизацией. Ещё раз спасибо за труд. С признательностью и благодарностью.
@mashinostroitel
@mashinostroitel 4 года назад
Супер. Спасибо :)
@PaintAndConquer
@PaintAndConquer 4 года назад
Коллеги, дайте, пожалуйста, совет. Ну, не совет, а скорее напутствие. Во вторник я выхожу на новую работу в банк, до/переписывать на джаве/котлине некоторое древнее корпоративное кхм-кхм. До этого промышленно писал только на питоне и то совсем недолго. Джаву знаю... ну очень такое себе.
@Enterprise_IT_support
@Enterprise_IT_support Год назад
👍
@evgeniusEmelin
@evgeniusEmelin 2 года назад
Супер, спасибо! Но купите наконец доску для мела и перестаньте переводить столько бумаги!))
@waltergibbs3041
@waltergibbs3041 Год назад
а что делать если правки подразумевают под собой дополнение интерфейса?
@malochico7363
@malochico7363 4 года назад
("В общем обо всем по порядку. О солид принципах поговорим чуть попозже")
@HaiIag
@HaiIag 4 года назад
++
@vincentvega1903
@vincentvega1903 4 года назад
Спасибо
@freydrauver249
@freydrauver249 3 года назад
За серію відео велике дякую! P. S. Заберіть хтось в Сергія зелений маркер.
@nrnwest
@nrnwest 2 года назад
почему не испльзовать абстрактный класс, тот же интерфейс но еще дает плюс
@bashconsole
@bashconsole 2 года назад
1:12. я вот 20+ лет как программист и тоже выуцчить не могу. странно почему.
@dmitry_promath
@dmitry_promath 4 года назад
Такой вопрос: можно ли начать свою карьеру на фрилансе, а уже потом претендовать на позицию middle в it-компании спустя 1-3 года работы на фрилансе? В моем случае именно так получается, тк работаю по контракту и не могу работать официально где-либо еще, плюс ко всему время не позволит. Рассматриваю фронтенд-разработку
@yuriytheone
@yuriytheone Год назад
Смысл в принципе Майера хотя-бы в том, что ты сам определяешь интерфейс взаимодействия дочерних классов. Причём дочерние классы не просто не обязаны работать со старым вызывающим кодом, но и физически не будут с ним работать. Это должно быть очевидно такому матерому человеку как Немчинский. Во вторых, код любого метода может быть переписан при сохранении логики его работы, числа и типов его параметров и возвращаемого значения не только для исправления ошибок но и для целей оптимизации. Это не подлежит ни какому обсуждению! Это здравый смысл. Выкидывать из класса код отвечающий за сериализацию и/или сериализацию ещё глупее чем следовать принципам Solid. Немчинский у тебя яйц нет признаться, что принципы Solid говно?!
@Bjfhj
@Bjfhj 3 года назад
Нельзя трогать старый код, а как тогда понять что в родительском модуле есть все необходимые методы для будущего (клиентского) кода ? Или добавление методов в родительский код не будет считаться нарушением OCP, а нарушение будет тогда, когда будут переписываться уже реализованные методы ?
@MegaSosnooley
@MegaSosnooley 4 года назад
А как быть с MVC? Например у меня есть какой-то контроллер (класс) и что есть добавление методов в него? Изменение класса или расширение класса? Если изменение, то как мне в свой контроллер добавлять методы (экшены) ?
@shkippitor1895
@shkippitor1895 4 года назад
Спасибо за Ваш труд)
@vesster2883
@vesster2883 3 года назад
10:10 Как коротко объяснить разницу между Proxy и Decorator? Поменять выход стрелки. Это самое короткое и понятное объяснение без кода, которое можно использовать в любом коде где это целесообразно. Правда без знания UML понять будет сложно.
@dredwolf7325
@dredwolf7325 4 года назад
давай 10 минут баек про frontend
@boberbober8083
@boberbober8083 4 года назад
Маркером по бумаге.. ууух, мурашки по коже, не смог досмотреть но лайк поставил.
@vitaliyprokopov2194
@vitaliyprokopov2194 4 года назад
Сергей, Бертран Маер также придумал язык Eiffel, который по-сути есть примером подхода программирования по контракту)
@sashchernuh
@sashchernuh 4 года назад
Сергей, такой вопрос, не знаете ли поменял ли Мейер первое его понимание этого принципа во втором издании в 97 годе, после того как Мартин опубликовал версию OCP в 96 году?
@СергейКондратенко-о9ц
Благодарю за видео, только не очень понятно, как ваша установка о том. что работающему программисту не нужно прокачивать т. н. хардскиллы в свободное от работы время, увязывается с тем, что вы преподаете курс по паттернам явно не для новичков
@СильвестрСергеев-л9з
Давно не заходил, отличный формат видео. Зашел прям очень.
@vitalijuskolinko9011
@vitalijuskolinko9011 4 года назад
Иду смотреть второй раз, чтобы лучше понять ;)
@Бензини
@Бензини 4 года назад
У Вас есть премиум доступ к материалам без менторинга и чата и т.д.? дороговато обцчение)
@Мария-я3й2в
@Мария-я3й2в 4 года назад
Добрый день Сергей. Слышали ли Вы о бесплатных курсах Ш++ в Кропивницком, и что о них думаете. Заранее спасибо за ответ.
@LeoMrakobes
@LeoMrakobes 4 года назад
За Сергея не отвечу, а вот сам я знаком со многими из КОВО где эти курсы проводятся и знаю многих кто после Ш++ достаточно неплохо устроились работать, плюс там отличная внутренняя атмосфера. Если вы сами мотивированны к обучению - то естественно получите хорошие знания
@sergey.stafeev
@sergey.stafeev 4 года назад
Хорошая скрытая реклама)
@sergey.stafeev
@sergey.stafeev 4 года назад
@@LeoMrakobes хороший рекламный комментарий)
@Мария-я3й2в
@Мария-я3й2в 4 года назад
@@LeoMrakobes Понятие "неплохо устроились" у каждого разное, но я все же надеюсь получить ответ от С. Немчинского.
@alexandernifanin7366
@alexandernifanin7366 4 года назад
Ш++... сколько ассоциаций возникает.
@crypto_octocat
@crypto_octocat 4 года назад
Черные футболки дают +10 к солидности )
@Дмитрий-ч1в5ы
@Дмитрий-ч1в5ы 4 года назад
Так, ничего не понял. А разве зависимость от интерфейсом не относится к Dependency Inversion Principle?
@SergeyNemchinskiy
@SergeyNemchinskiy 4 года назад
все принципы связаны. но да. это именно к тому принципу. Просто я пояснил и дополнил, чтобы у людей было связанное понимание принципов
@egorvafin1978
@egorvafin1978 2 года назад
Сергей, спасибо за видео про SOLID
Далее
荧光棒的最佳玩法UP+#short #angel #clown
00:18
荧光棒的最佳玩法UP+#short #angel #clown
00:18