Большой стрим про SOLID и GRASP
Мы уже обсудили высокоуровневое разделение проекта на модули и микросервисы, чтобы у нас было меньше связей между отдельными подсистемами. И сделали это на примере сложной растущей программной системы для большого завода жэлезобетонных изделий с линейкой бетона с ароматом клубники для VIP-клиентов.
Там мы вскользь упомянули принципы и паттерны SOLID и GRASP в применении к модулям. Эта тема интересна сама по себе и по ней всегда много вопросов от зрителей. Так что будет полезно рассмотреть эту тему отдельно на примерах не только высокоуровневых модулей, но и на более низкоуровневом разделении программного кода на процедуры, функции или классы.
Проекты обычно только растут, становясь всё сложнее и сложнее. Со временем программисту всё труднее вносить изменения и работа делается всё дольше и дольше. И всё актуальнее становится вопрос, как облегчить жизнь программиста и заказчика при постоянном росте проекта. Это нам и надо решить.
Делаете ли вы свой проект или развиваете чужой – такие вещи нужно осознать как можно раньше, чтобы со временем не превратить код проекта в кашу.
И даже если вам сейчас не хочется это применять в проекте у себя на работе, то вы можете потренироваться с этим в своих личных проектах, чтобы потом с этим опытом пройти собеседование в более интересную компанию.
В статьях и книгах порой просто перечисляют буквы из SOLID, но забывают упомянуть, зачем это нужно. И часто приводят примеры кода, забыв раскрыть полные причины, которые автора к этому варианту кода привели. В итоге по коду не очень понятно, что там происходит.
Прочитав или посмотрев такие материалы, многие бросаются что-то из этого применить у себя. Но из-за непонимания изначальной идеи программист либо делает криво, либо не там, где это актуально. В итоге возникает ощущение, что всё это бесполезно и только мешает в работе.
Зубрить какие-нибудь принципы или паттерны вроде SOLID или GRASP ради собеседований бесполезно. Это образ мышления, которым нужно жить. А мы с вами в скринкастах и стримех привыкли не зубрить, а докапываться до смысла всего того, что делаем. Пытаемся найти исходные причины и пережить всё то, о чём думал автор когда что-то изобретал. Что не нравилось автору изначально и к какому решению он пришёл в итоге. Так мы с вами можем поступить и здесь. И поняв основную идею подобных архитектурных принципов нам сразу станет очевидно, какие паттерны GoF в коде смогут нам для этого пригодиться.
Если пускать код проекта на самотёк, не прилагая усилий к его улучшению, то работать обычно становится всё сложнее. Чем больше лишних зависимостей, тем больше риска что-то сломать. А без понимания ключевых идей сложно что-то применять.
Мы часто опираемся на эти принципы во многих скринкастах, когда программируем новый код и когда рефакторим старый. Этого матерала много, но он пока разрозненный. Так что будет полезно собрать всё это и составить общую картину.
Об этом поговорили в большом эфире и нарисовали красивые схемы:
Что получилось:
- 00:00:00 - Проверка связи
- 00:02:03 - Что сегодня будет
- 00:07:49 - Как спрашивают про SOLID на собеседованиях
- 00:22:37 - Принципы SOLID и паттерны GRASP
- 00:26:27 - Откуда всё это пошло
- 00:30:42 - Средства абстракции
- 00:38:32 - Отличие реального кода от академического
- 00:42:24 - Тесты и типизация для защиты от ошибок
- 00:50:24 - Легкость и сложность доработки проекта
- 00:55:20 - Все ли проекты возможно покрыть тестами
- 01:00:30 - Тратят тесты время или экономят
- 01:26:40 - Сколько стоит ошибка попавшая на продакшен
- 01:49:42 - Основная ключевая мысль
- 02:15:24 - Запросы на изменение от акторов и SRP
- 02:54:13 - Как это выглядит в коде
- 03:56:49 - Композиция и агрегация или наследование
- 04:13:38 - Избавление от изменений кода с OCP
- 04:17:09 - Правила приличия с LSP
- 04:27:07 - Удаление зависимостей от ненужного с ISP
- 05:00:58 - Избавление от прямых связей с DIP
- 05:43:07 - Все звёзды сошлись
- 05:48:54 - Какие GoF паттерны оказались полезными
- 05:59:18 - Что взять из GRASP
- 06:33:11 - К чему мы в итоге пришли
- 06:39:50 - Ответы на вопросы
- 07:10:58 - Спокойной ночи
Оплатить можно самому российской или иностранной картой или попросить работодателя оплатить от имени компании.
Для скидки можете сначала оформить в кабинете безлимитную подписку на наши полезные скринкасты.
А потом или сейчас приобрести записи стрима можно там же в кабинете или здесь:
Добрый день! Спасибо за ваши замечательные видео уроки. Подскажите, пожалуйста, сколько длится стрим?
Спасибо за стрим. "Банда 4х" вы пустила "справочник" по патернам, и во многих источниках говорится:
Так нельзы ли записать инструкцию по пользованию справочником?
Многие патерны похожи, ты применяешь один, и код становится лучше, но тебя гложет: а тот ли патерн ты выбарал?
В ваших скринкастах есть патерны, но чаще с точки зрения "вои патерн" а , не с точки зрения "мы применяем этот петерн (, а не этот) потому что ..." .
Возможно мои пожелания получились сумбурны, но суть наверное ясна.
Спасибо.
Или войти через: