Жду пока он скажет - "Я больше не Сергей Немчинский, теперь я имплементирую интерфейс Сергея Немчинского!" )) Спасибо за видео, как всегда доходчиво и понятно
@pi4alka_screamo Жыл бұрын
ахах, в голос))))))))))))))))))
@xandrop Жыл бұрын
А так как Такое запомнить нельзя, то прочитает со смартфона
@mikhailanisimov21604 жыл бұрын
"В промышленном софте всегда всё протестировано", - хорошая шутка. =)
@Manuel-j3q4 жыл бұрын
Смеялись всем тестовым отделом.
@kirillshamyakov66494 жыл бұрын
Видос SOLID’ный, спасибо, с меня луцк
@Corvus_I_am Жыл бұрын
Я не знаю как максимально вежливо подсветить, наверное, все равно обижу спикера, но все же повторю, что исключение хезитационных пауз из речи стало бы колоссальной её оптимизацией. Ещё раз спасибо за труд. С признательностью и благодарностью.
@strekozart4 жыл бұрын
Сергей спасибо за видео! Мне очень нравится как вы вкладываетесь в объяснение, очень круто!
@AnnaIsHere4 жыл бұрын
и оформление. И вот эти штучки внизу видео, отрезочки. Мимими!
@sealkeen3 жыл бұрын
На самом деле, спасибо большое, Сергей, пересматриваю во время тренинга, правда, не у вас, к сожалению, а в епаме, но всё-таки. Во время написания кода Ваши рекомендации, когда на заднем плане идут, реально отлично помогают при рефакторинге архитектуры приложения. Пишу классы для доступа к базе данных и интерфейс, где у меня очень высокая зависимость классов друг от друга, а потом слышу с заднего плана: надо просто вынести клиентский код в интерфейс, и реально выношу его в интерфейс, и оно всё в результате отлично спроектировано получается.
@АндрейГрицай-л1ф4 жыл бұрын
Очень простое і доступное объяснение. Даже есть практический пример из жизни, что очень помогает понять. Спасибо большое! Мне очень нравится ваши видео. ☺
@dimitro.cardellini4 жыл бұрын
Перечитал Роберта Мартина. Специально, чтобы убедиться в том, что я правильно понимаю Принцип Отркытоти / Закрытости (OCP). . Так, вот, этот принцип не совсем про Классы и Интерфейсы, наследование и реализацию, и уж тем более, не про "замочки" на классах. Это все, конечно правильно, но, это все частные способы вносить изменения в код, который, кстати, не обязательно соответствует OCP. И применение к нему описанных техник изменения сохранит это свойство кода. . OCP о том, что следуя SRP мы также должны учитывать, что отдельные подзадачи могут иметь разные решения и выделять соответствующие абстракции, защищая этим самым решение общей задачи от изменений, и делая такое решение открытым для расширения. Т.е. OCP -- это про декомпозицию кода. Именно, следуя OCP мы должны выделить наши зависимости, т.е. проанализировать, какие подзадачи могут иметь альтернативные решения, оценить вероятность такого измнения, что в свою очередь позволит не плодить лишнии абстракции. . На простом примере: Мы делаем функцию сортировку и используем в алгоритме простую конструкцию: a < b, чтобы понять надо ли нам поменять элементы местами или нет. Мы находимся в рамках SRP (т.е. наш алгоритм имеет одного Актора, решает одну задачу). Но, если нам надо будет реализовать сортировку уже по возрастанию (убыванию), то нам надо будет менять алгоритм, чего собственно мы и хотим избежать. . Так вот OCP говорит нам о том, что наш алгоритм сортировки должен абстрагироваться от реализации отношения порядка (что помимо всего прочего позволит абстрагироваться еще и по типу данных элементов коллекции). . Видео из объяснения OCP вылилось в расказ про DIP, где зависимости нам уже даны. OCP -- про выявление зависимостей и создание абстракций. . На 9:20 Сергей дает пример Клиентского класса и Серверного класса, и говорит о том, что это нарушает OCP потому, что мы не можем расширить их взаимодействие. И здесь очень опасная и хитрая ошибка, которая заключается в том, что нам не надо расширять это взаимодействие. Нам надо расширить функциональность, а не взаимодействие отдельных двух компонентов. . В заключении, перефразирую Кота Матроскина: - чтобы инвертировать что-нибудь "ненужное", сначала надо абстрагироваться по этому "ненужному", а мы об этом в видео не говорим ...
@sashchernuh4 жыл бұрын
"Видео из объяснения OCP вылилось в расказ про DIP, где зависимости нам уже даны. OCP -- про выявление зависимостей и создание абстракций." - спасибо за идею!
@ivanandreev95714 жыл бұрын
Подскажите пожалуйста, как абстрагироваться от отношения порядка в случае с сортировкой?
@dimitro.cardellini4 жыл бұрын
@@ivanandreev9571 заменить "a < b" на "compare(a, b) < 0" -- это будет OCP. Это позволит изменять порядок сортировки, не меняя при этом сам алгоритм сортировки. А потом по DIP надо принимать функцию conpare на вход влгоритма сортировки.
@ivanandreev95714 жыл бұрын
@@dimitro.cardellini то есть мы создадим целый класс компаратора и интерфейс для него?
@dimitro.cardellini4 жыл бұрын
@@ivanandreev9571 ну, я бы предпочёл лямбду )
@ДанилаПермогорский-т6р4 жыл бұрын
Замечательный цикл видео, спасибо Сергей!
@Бензини4 жыл бұрын
у Вас такие прикольные лекции записаны, давно не было, делайте побольше лекций)
@СильвестрСергеев-л9з4 жыл бұрын
Давно не заходил, отличный формат видео. Зашел прям очень.
@sergem27944 жыл бұрын
Отличная подборка. Давно ждал SOLID
@egorvafin19782 жыл бұрын
Сергей, спасибо за видео про SOLID
@demidovmaxim10084 жыл бұрын
Большое спасибо за выпуск!!!
@Zlobusz4 жыл бұрын
Завязка на интерфейсы - это круто!
@grommaks4 жыл бұрын
Харош, было интересно 🙃 спасибо
@boberbober80834 жыл бұрын
Маркером по бумаге.. ууух, мурашки по коже, не смог досмотреть но лайк поставил.
@MrBulat14 жыл бұрын
Спасибо за видео, приятно было слушать.
@simplechannel78593 жыл бұрын
Сергей, спасибо!
@artur1998g4 жыл бұрын
Спасибо большое за видеоролики. Очень доходчиво объясняешь.
@alexanderraf55534 жыл бұрын
Полиморфная трактовка от дяди Боба крута!!!!!!) Сергей, вы гений обьяснять сложное простым человеческим языком.спасибо!))))
@johnsnow28104 жыл бұрын
Очень сумбурное объяснение. Если бы сам не знал бы принципы solid, то из этого видео возможно не понял бы. Ну и да, доску нужно ближе и маркеры темнее или вообще перейти на запись видео с экрана, с электронной доской. В любом случае спасибо за видео! Очень полезно послушать многие вещи, то как их другие понимают.
@rus10062 жыл бұрын
я тоже ничего не понял. однако буква s из его объяснения понятна. вообще то я думал расширение под собой подразумевает применение паттернов
@UserUser-yk9bt10 ай бұрын
Спасибо большое за видео))
@СергейКарпиченко-с6б4 жыл бұрын
Спасибо большое за видео, супер!
@veldan12024 жыл бұрын
Видосики стали превосходными/)))
@shkippitor18954 жыл бұрын
Спасибо за Ваш труд)
@IROnMAn-ze6op4 жыл бұрын
Не понял насчёт трактовки от Мартина: нам что, нужно создавать новый класс, который заново будет имплементировать интерфейс, только поведение уже будет другое, чем у класса, со старой реализацией?
@SergeyNemchinskiy4 жыл бұрын
примерно так. но можно от старого унаследоваться
@IROnMAn-ze6op4 жыл бұрын
@@SergeyNemchinskiy если не унаследоваться от старого, то всё равно не понимаю. У нас есть новый класс с новой реализацией, зачем тогда сохранять старый?
@kisurov4 жыл бұрын
@@IROnMAn-ze6op Новый класс может быть обёрткой над старым, дополняя его функционал, а не повторяя его целиком
@truenerdofbotva58314 жыл бұрын
@@kisurov но у нас же тогда в итоге окажется по десять обёрток над каждым классом, как с этим быть? Или предполагается, что код будет писаться сразу как надо, и изменения будут малочисленными?
@БендерЗадунайский-щ9ы4 жыл бұрын
спасибо! ждем про Л😀 ... и поставте маркерную доску. удобная дешевая штука, и на ней всё видно! не то что на этой. сами посмотрите(с телефона 😀)
@-boiadeiro-4 жыл бұрын
осталось 3 принципа и мы наконец познаем силу ООП!
@hmixa4 жыл бұрын
Использование оператора new смерть для тестов. Работайте через интерфейсы, скармливая их вашему коду снаружи и будет вам счастье!
@anti1am3r4 жыл бұрын
Где то вам все равно создавать экземпляры надо )
@MegaMrTan4 жыл бұрын
Здравствуйте, благодарю за труд; пишите, плз, жирнее или маркеры смените))
@freydrauver2493 жыл бұрын
За серію відео велике дякую! P. S. Заберіть хтось в Сергія зелений маркер.
@TimC0x4 жыл бұрын
9:50 почему же "прокси", это же адаптер, он позволяет соединить одну систему с другой. прокси это если об подмене реального объекта заглушкой
@lyloo65774 жыл бұрын
Подразумевается, наверное, что требуемый объект будет инициализирован или найден при необходимости. Адаптер это про другое, про создание одного интерфейса поверх другого/других для удобства использования
@andrewkovalchuk16654 жыл бұрын
Сергей, ты случайно в конце не оговорился про IoC и Dependency Inversion? Может имел ввиду Dependency Injection, как имплементацию IoC, а используя Dependency Inversion принцип мы можем подкидывать в IoC контейнер нужные нам реализации интерфейса? В данном случае оговорка, как по мне, достаточно существенная и может ввести в заблуждение тех, кто недавно с этим столкнулся... А так все по делу. Спасибо за то что ты делаешь. Лойк!)
@mikhaillucky81304 жыл бұрын
да, это оговорка, еще чуть раньше он принцип назвал паттерном, но если человек захочет разобраться в этой теме, данных видосов будет мало, а небольшие неточности исчезнут в процессе.
@andrewkovalchuk16654 жыл бұрын
Так то коммент я писал с целью обратить внимание тех, кто только столкнулся с этим. На собесе, конечно, лучше так не оговариваться...
@sh1maru4 жыл бұрын
А как этот принцип сочетается с тем, что бизнес требования, а за ними бизнес-логика, меняются по два раза в день и всем в принципе заранее понятно, что так и будет?
@jossefal19574 жыл бұрын
Отличное видео
@sergey.stafeev4 жыл бұрын
Непонятно, почему я не могу добавить метод в существующий класс, чем плодить новые классы наследованием и там добавлять? И если правок будет много, то это сколько ж наследований будет.
@alexandernifanin73664 жыл бұрын
Да ерунда, конечно. Я бы так сказал, что добавлять можно, а вот менять - проблемно, т.к. зависимые классы и клиенты тоже придётся менять. Проблема может быть в интерфейсе. Если туда добавить метод, его придётся добавлять во все наследники.
@виталийвольф-у4т4 жыл бұрын
Вопрос, так а конструкция Роберта Мартина(1996 год), я не понял как там тогда "расширять" функционал, если и старый класс(функционал), и новый, зависят от одного интерфейса. как мы добавим что-т новое, если интерфейс у них один?
@nrnwest2 жыл бұрын
функционал можно только добавить но не трогая интерфейс а вот первый вариант гибче выходит, там мы наследуюем и добавляем любой функционал (в интерфейс) не нарушай базовый интерфейс ) чет Сергей не договаривает или просто на тренинг так манит )))
@r2d29254 жыл бұрын
Жду продолжений! очень доходчево и легко для понимания
@mashinostroitel4 жыл бұрын
Супер. Спасибо :)
@romanmotovilov1294 жыл бұрын
Спасибо! Ставлю лайк перед просмотром! А теперь можно и посмтотреть...
@ZeroBone4 жыл бұрын
6:57 Реализация интерфейсов в UML обозначается пунктирной линией (со стрелкой как при наследовании на конце).
@khusamalfas21213 жыл бұрын
Большое спасибо
@AnaRxistBoD4 жыл бұрын
Такой вопрос: а что насчет расширения функционала через extensions (extension methods)? Насколько это соответствует принципу "открытости-закрытости"?
@turchik57634 жыл бұрын
Сергей, запишите подробное видео про android разработку, с чего начать и т д. Хочется услышать от вас рекомендации новичку
@МихаилЗавитаев-м4б3 жыл бұрын
Спасибо!
@AndriySydorka4 жыл бұрын
Дядя Сережа тащит!
@dsalodki4 жыл бұрын
не видно что пишется на доске, может маркеры тёмные использовать?
@videonafoto4 жыл бұрын
Не очень понятно. А как расширять функциональность, если интерфейс менять нельзя? А если клиенту нужны новые методы, или старые методы с другой сигнатурой?
@rusrulet28063 жыл бұрын
тоже задался тем же вопросом. и судя по комментам, вопрос остаётся открыт )
@ClydeSimonSound20 күн бұрын
Не понятно, если я добавлю функцию в класс, которая не меняет значения уже существующих полей, это нарушение OCP ?
@vesster28833 жыл бұрын
10:10 Как коротко объяснить разницу между Proxy и Decorator? Поменять выход стрелки. Это самое короткое и понятное объяснение без кода, которое можно использовать в любом коде где это целесообразно. Правда без знания UML понять будет сложно.
@vitalijuskolinko90114 жыл бұрын
Иду смотреть второй раз, чтобы лучше понять ;)
@waltergibbs3041 Жыл бұрын
а что делать если правки подразумевают под собой дополнение интерфейса?
@konstantinviktorovich81943 жыл бұрын
Поберегите природу, используйте маркерные доски!
@Мария-я3й2в4 жыл бұрын
Добрый день Сергей. Слышали ли Вы о бесплатных курсах Ш++ в Кропивницком, и что о них думаете. Заранее спасибо за ответ.
@LeoMrakobes4 жыл бұрын
За Сергея не отвечу, а вот сам я знаком со многими из КОВО где эти курсы проводятся и знаю многих кто после Ш++ достаточно неплохо устроились работать, плюс там отличная внутренняя атмосфера. Если вы сами мотивированны к обучению - то естественно получите хорошие знания
@sergey.stafeev4 жыл бұрын
Хорошая скрытая реклама)
@sergey.stafeev4 жыл бұрын
@@LeoMrakobes хороший рекламный комментарий)
@Мария-я3й2в4 жыл бұрын
@@LeoMrakobes Понятие "неплохо устроились" у каждого разное, но я все же надеюсь получить ответ от С. Немчинского.
@alexandernifanin73664 жыл бұрын
Ш++... сколько ассоциаций возникает.
@karabasbarabas20004 жыл бұрын
Спасибо большое! Шарпистам рекомендую видео от Tim Corey по Solid, чуть длиннее и с примерами
@torrvic11564 ай бұрын
Да. Тим великий гуру C#. Он больше на практические примеры ориентирован.
@vincentvega19034 жыл бұрын
Спасибо
@Bjfhj3 жыл бұрын
Нельзя трогать старый код, а как тогда понять что в родительском модуле есть все необходимые методы для будущего (клиентского) кода ? Или добавление методов в родительский код не будет считаться нарушением OCP, а нарушение будет тогда, когда будут переписываться уже реализованные методы ?
@nrnwest2 жыл бұрын
почему не испльзовать абстрактный класс, тот же интерфейс но еще дает плюс
@JackFastGame4 жыл бұрын
Очень важный вопрос: всегда ли следует соблюдать SOLID или есть альтернативные концепции принципов работы в ООП?
@KirillTerekhov4 жыл бұрын
JackFastGame есть GRASP как более традиционный набор принципов. Ещё из интересного есть книжка “A philosophy of software design” в который автор подходит к проблеме с другой стороны и даёт определение сложности и поддерживаемости, а из него уже выводятся принципы
@alexandernifanin73664 жыл бұрын
Точно не всегда. Если проект на десяток тысяч строк, можно смело слать лесом. Сильно ограничивает без особых преимуществ
@JackFastGame4 жыл бұрын
@@alexandernifanin7366 Разве SOLID не помогает в больших проектах?
@alexandernifanin73664 жыл бұрын
@@JackFastGame Это к чему вопрос? Помогает. Я вообще отвечал на другой вопрос и про небольшой проект.
@dmitryzolkin7904 Жыл бұрын
Подскажите, почему инверсия зависимостей и софт код это не одно и тоже? Разве обращение к конкретным объектам через интерфейс это не софт?
@RadioWestin2 жыл бұрын
совсем неизвестный Бертран Мейер - ничего себе :) автор Eiffel, авторитетной книги ООП "Object-Oriented Software Construction" и еще кучи всего :)
@MegaSosnooley4 жыл бұрын
А как быть с MVC? Например у меня есть какой-то контроллер (класс) и что есть добавление методов в него? Изменение класса или расширение класса? Если изменение, то как мне в свой контроллер добавлять методы (экшены) ?
@z1zzz4 жыл бұрын
Очень классная линейка видео про SOLID. Большое спасибо вам за это! Если можно, то можете снять также линейку видео про structural, behavioral design patterns. Хотя бы по 3 с каждого?
@ГеоргийОрлов-г5в4 жыл бұрын
Сергей, купите пластиковую доску. У меня от скрипа фломастера по бумаге зубы свело! Слушал без звука с субтитрами.
@dmitry_promath4 жыл бұрын
Такой вопрос: можно ли начать свою карьеру на фрилансе, а уже потом претендовать на позицию middle в it-компании спустя 1-3 года работы на фрилансе? В моем случае именно так получается, тк работаю по контракту и не могу работать официально где-либо еще, плюс ко всему время не позволит. Рассматриваю фронтенд-разработку
@sashchernuh4 жыл бұрын
Сергей, такой вопрос, не знаете ли поменял ли Мейер первое его понимание этого принципа во втором издании в 97 годе, после того как Мартин опубликовал версию OCP в 96 году?
@DenVeR-PRO4 жыл бұрын
Вот это скорость!
@Бензини4 жыл бұрын
У Вас есть премиум доступ к материалам без менторинга и чата и т.д.? дороговато обцчение)
@sealkeen3 жыл бұрын
10:10 Если посмотреть так-то по диаграмме на декторатор, то получается, что у нас циклическая зависимость Прокси от Интерфейса и Интерфейса от прокси) И мы можем вставлять абсолютно любое количество дополнительного функционала: логирование, кэширование, аутентификацию, авторизацию, аудит - поскольку они все полетят в трубу, а проекты просто не скомпилируются :D
@vrabosh4 жыл бұрын
А если нашел способ как улучшить старый код, там типа где трогать нельзя, тогда что?
@0imax4 жыл бұрын
Работает - не трогай :) Понадобится "официально" туда залезть - тогда уже можно попробовать внести "новшества".
@vrabosh4 жыл бұрын
@@0imax хотя я на начальном этапе максимально стараюсь оптимизировать и гибкость сделать.. и уже когда проект разросья уже не трогать, а все недочеты запоминать на след проект, и потмо уже править в новом проекте.
@LeoMrakobes4 жыл бұрын
Историческая отсылка понравилась, а вот по сути - если бы я не знал как работают SOLID принципы - то без наглядных примеров мало что понял бы из этого видео
@alexandernifanin73664 жыл бұрын
Да, тоже не раз изучал SOLID, но из примеров с нуля точно ничего не понял бы. Хотя, если сделать подробнее, то видео получится на полчаса.
@bashconsole3 жыл бұрын
1:12. я вот 20+ лет как программист и тоже выуцчить не могу. странно почему.
@user-hv8rh8nk9d4 жыл бұрын
Вопрос жизни и смерти Когда Сергея Немчинского перестанут звать Сергеем Немчинским?
@vitalik100500q4 жыл бұрын
Когда замуж выйдет
@gibizov4 жыл бұрын
Не, а вдруг ещё кто-то не знает? И заметьте, Сергей старается протараторить это как можно быстрее. Хотя уже можно просто рисовать баннер с фио и регалиями, как в программе «Время». 100К уже есть, зачем им слушать это постоянно? Чтоб в подкорку вбивалось? Ну мякше надо, нежнее.
@Oleksii_Leshchenko4 жыл бұрын
@@gibizov Это же фишка про которую столько шутят. Это хорошо Тем более, большой процент новых, не подписанных
@gibizov4 жыл бұрын
Алексей Лещенко «люблю вас и всё вот это вот» :)
@undefined-n5v4 жыл бұрын
@@vitalik100500q Возможно тогда появится еще один Сергей Немчинский вполне возможно
@xandrop Жыл бұрын
Все очень хорошо на бумаге, но вот если лектор, чтобы что-то объяснить постоянно лезет в смартфон, то как это ответить на собеседовании, к примеру.
@aaayakou4 жыл бұрын
Вопрос: А разве методы расширения не являются примером реализации OCP? Ведь при их реализации мы вроде как не изменяем изначального класса
@levovix4 жыл бұрын
методы расширения это те же методы, но написанные вне класса. никаким примером они не являются
@aaayakou4 жыл бұрын
@@levovix ок, ясно
@Tolgetmen_dev4 жыл бұрын
Ля как маркер крутит)
@user-888azim-973 жыл бұрын
😂
@undefined-n5v4 жыл бұрын
Так, ничего не понял. А разве зависимость от интерфейсом не относится к Dependency Inversion Principle?
@SergeyNemchinskiy4 жыл бұрын
все принципы связаны. но да. это именно к тому принципу. Просто я пояснил и дополнил, чтобы у людей было связанное понимание принципов
@vitaliyprokopov21944 жыл бұрын
Сергей, Бертран Маер также придумал язык Eiffel, который по-сути есть примером подхода программирования по контракту)
@DrZupan2 жыл бұрын
что отвечать на собеседовании на вопрос "что такое О с солид?" так и не понял)
@DanyaIzyum6 ай бұрын
dont cahch this - может я что-то не знаю но в Python нет интерфесов получается что нужно создавать абстрактные классы для того чтобы их имплементировать другими классами - но если в других языках понятно что он имплементирует то для классов вообще не очень понятно, почему нельзя делать decorator функции если она чем -то не подходит, хотя конечно это уже будет другая функция и работать она может по другому. с точки зрение истинного полиморфизма это не пойдет, зато дублирования кода никакого не будет.
@СергейКондратенко-о9ц4 жыл бұрын
Благодарю за видео, только не очень понятно, как ваша установка о том. что работающему программисту не нужно прокачивать т. н. хардскиллы в свободное от работы время, увязывается с тем, что вы преподаете курс по паттернам явно не для новичков
@Enterprise_IT_support2 жыл бұрын
👍
@cyrilanisimov4 жыл бұрын
Мы тоже тебя любим)
@NummeSpnet3 жыл бұрын
получается OCP от Дяди Боба есть ни что иное как DIP... получается O зависит от D )
@MaksUsanin4 жыл бұрын
"все ещё зовут Сергей Немчинский" :))
@anzarsh3 жыл бұрын
Захардкожено)
@apdgslfhsodbna4 жыл бұрын
Работал в 2х компаниях дот нет джуном... омг сколь там было говна, платили хорошо, но видимо понимали что с этим легаси разбираться, и одна из этих компаний достаточно известная.
@homo-ergaster4 жыл бұрын
Не Microsoft случаем? У меня университетский товарищь ушел к ним. Говорит класс на 50 тысяч строк запилить там как запросто.
@apdgslfhsodbna4 жыл бұрын
@@homo-ergaster , яндекс
@UGEEGO3 жыл бұрын
В названии не закрыты круглые скобки ;)
@victormakovchik2493 жыл бұрын
Кроме Бертрана Мейера был ещё Сид Мейер - разработчик культовой игры Цивилизация! Может родственник?)))
@TheDEFCHER3 жыл бұрын
Так много людей которым нравиться видос и которые ничего не поняли. Я так и не понял что это на практике, даже нет никакого вывода с чёткой формулировкой что это такое. Мне просто использовать интерфейсы и работать через них или что?
@RusIvan20222 жыл бұрын
Да если патерны посмотреть, тоже все сходится к использовании интерфейсов. А вообще все принцепы и патерны сводятся к тому что нужно делать так чтоб ты мог дописывать код и ничего не ломалось.
@lukeskyworker26374 жыл бұрын
В учебниках для начинающих всё время пишут о Полиморфизме, Инкапсуляции и Наследовании. Но, не поясняют по-нормальному, для чего это нужно. На живых примерах. Т.е. наследование нужно, как я понял из этого видео, что бы, в том числе и не добавлять баги в уже работающий код. И что бы не тратить деньги на тестировщиков, которые эти баги будут отлавливать.
@alexandernifanin73664 жыл бұрын
ООП был изобретён намного раньше SOLID. Согласен, принцип подходит для наследования, только наследование не обязано подчиняться OCP. Есть класс „насекомое“. К нему добавляются методы „ползать“, „летать “, „жалить“. От него можно наследовать жука, гусеницу, осу. Тратить деньги на тестирование всё равно придётся, просто меньшие.
@son92614 жыл бұрын
Кайфонул)
@Макс5233 жыл бұрын
Ok!
@crypto_octocat4 жыл бұрын
Черные футболки дают +10 к солидности )
@hpw-dev2 жыл бұрын
я смотрю в 1080p и не вижу чё на доске, это всё равно что писать ярко жёлтым по белому
@brodlovherrsov70974 жыл бұрын
А че ты подглядываешь?)
@Maxlyaptsev3 жыл бұрын
Зачем же вы бумагу переводите. Доску специально делают такую чтобы можно было легко стереть каракули. Куда эта бумага потом попадает? На полигоны и складируется? На ней еще ничего и не видно, и скрип неприятный. Откуда вы такие беретесь то, вроде видео 2020 года
@Alexey07954 жыл бұрын
8:35 "листочек"
@Sasha2dx3 жыл бұрын
Я если что могу серъёзно заниматься разработкой даже выписывая перманентный говнокот. :D