Качество кода: нестабильность и абстрактность

  Рет қаралды 15,526

S0ER

S0ER

Күн бұрын

Пікірлер: 79
@RedkeiGost
@RedkeiGost Жыл бұрын
> В предыдущих публикациях я использовал для связей имена Efferent (центробежный) и Afferent (центростремительный), Ce и Ca, вместо Fan-out и Fan-in соответственно. Это был всего лишь каприз с моей стороны: мне нравилось сравнение с центральной нервной системой. Дядь-Боб, 132 страница, Чистая архитектура. Искусство разработки программного обеспечения. - СПб.: Питер, 2018. Кстати, принципы REP, CCP, CRP, Диаграмма противоречий принципов связности тож мне кажется было бы не плохо осветить на канале. А то в ютубе ощущение, что главное выучить расшифровку абривиатуры SOLID - и все ты понял клиен архитктуру.
@ЕвгенийАвдеев-и6п
@ЕвгенийАвдеев-и6п 3 жыл бұрын
Уникальный контент, вот что нам нужно! Жаль просмотров не будет
@ekari
@ekari 3 жыл бұрын
не правда. я вот смотрю :)
@drak0an
@drak0an 3 жыл бұрын
чем меньше просмотров, тем больше зарплата у посмотревших) (шутка, пишите все хорошо, пожалуйста)
@RuslanMavlyanov
@RuslanMavlyanov 3 жыл бұрын
Просто наслаждение получил! С удовольствием бы купил контента с патреона - если бы хоть какое-то описание было и структура в каком видео о чем говорите.
@ekari
@ekari 3 жыл бұрын
Хорошо, что у меня нет таких больших проектов, чтобы это пригодилось. но на заметку взял. спасибо :)
@kuleniski
@kuleniski 3 жыл бұрын
Спасибо, просто и интересно.
@titanovsky
@titanovsky Жыл бұрын
Большое спасибо)
@alexeygreen4073
@alexeygreen4073 3 жыл бұрын
Спасибо!
@vladisslavss
@vladisslavss 2 жыл бұрын
Как и всегда интересный ролик) Спасибо большое за труд) Полезно смотреть ваши видосики)
@АлинаЛебедева-м5ь
@АлинаЛебедева-м5ь 3 жыл бұрын
Очень полезное видео, большое спасибо!
@Dolbatehnik
@Dolbatehnik 2 жыл бұрын
Шикарное объяснение
@rishatsharafiev
@rishatsharafiev 3 жыл бұрын
Всегда стараюсь определять минимально необходимые интерфейсы под конкретные юз-кейсы и использовать архитектуру с однонаправленной зависимостью слоев, например, чистую архитектуру. Теперь могу логически обосновать зачем, спасибо)
@albrehtdurer557
@albrehtdurer557 3 жыл бұрын
проблема в том, что в реальных бизнес рулах, почти нет однонаправленных зависимостей...
@rishatsharafiev
@rishatsharafiev 3 жыл бұрын
@@albrehtdurer557 бизнес логика это отдельный слой, который ссылается на слой i/o.
@albrehtdurer557
@albrehtdurer557 3 жыл бұрын
@@rishatsharafiev если не затруднит, можно конкретный маленький пример?
@a.osethkin55
@a.osethkin55 3 жыл бұрын
Спасибо
@stason261995
@stason261995 3 жыл бұрын
Спасибо за полезный контент)!
@alexeyshimanovich6548
@alexeyshimanovich6548 3 жыл бұрын
Под конец ролика понял, что читал про это у самого Мартина в чистой архитектуре. Но Соер конечно намного понятнее объясняет, спасибо!
@vesh95
@vesh95 3 жыл бұрын
Самое удобное здесь - что получаешь порциями информацию и не зацикливаешься на всех моментах (пытаясь это всё внедрить)
@FoRGeish
@FoRGeish Ай бұрын
У меня обратное мнение. В книге гораздо понятнее это описано.
@andreysakharov6210
@andreysakharov6210 3 жыл бұрын
Очень интересно, спасибо
@shadealix
@shadealix 3 жыл бұрын
дякую, дуже круто
@DjLeonSKennedy
@DjLeonSKennedy 3 жыл бұрын
Спасибо, оч круто!
@anatolys9203
@anatolys9203 3 жыл бұрын
спасибо!
@artemv3160
@artemv3160 3 жыл бұрын
Благодарю за видео! Существуют средства для автоматического расчета нестабильности и абстрактности?
@imbydlo1552
@imbydlo1552 2 жыл бұрын
Ничего не понял, но очень интересно
@zakiro4277
@zakiro4277 3 жыл бұрын
Попиваю чаёк и учу программирование вот это коасс
@d17-d7e
@d17-d7e 2 жыл бұрын
Каждый раз смотрю и понимаю, на сколько ты поход на Линуса XD
@Гошка-м4б
@Гошка-м4б 3 жыл бұрын
Что есть красная зона для коэффициента связанности? Неважно афферентный, или эфферентный. 5 - это много?
@KopoLPedov
@KopoLPedov 3 жыл бұрын
что-то твердо был уверен, что coupling - это связность, зацепление - cohesion
@Tuhtarov
@Tuhtarov 3 жыл бұрын
я тоже подметил это, словил диссонанс
@Tuhtarov
@Tuhtarov 3 жыл бұрын
"Пожалуй в любой литературе по объектно-ориентированному проектированию встречаются эти два понятия. Считается, что любая спроектированная система, должна удовлетворять принципам низкой связности и высокого зацепления модулей. Соответствие данным шаблонам позволяет легко модифицировать и сопровождать программный код а также повышает степень его повторного использования." - абзац текста, взятый из перво-попавшейся ссылки на хабр с гугла
@vasiliychernov2123
@vasiliychernov2123 3 жыл бұрын
По мне так наоборот было бы как раз более понятно. То есть, зацепление - то, как модули "цепляются" друг за друга, а связность - то, насколько компоненты модуля связаны между собой в вопросе решения конкретной задачи, составляют ли они единую логическую единицу.
@olehbrony6506
@olehbrony6506 3 жыл бұрын
У тебя что-то не то с предложением.
@albrehtdurer557
@albrehtdurer557 3 жыл бұрын
@@Tuhtarov так да, ты так и учился наверное по первым попавшимся ссылкам с гугля?))
@champ__champ
@champ__champ 3 жыл бұрын
Очень крутой контент, жалко что ничего не понятно.
@alekseytrump1586
@alekseytrump1586 3 жыл бұрын
Спасибо за видео. Можете посоветовать литературу по архитектуре приложений? За ранее благодарен.
@НатальяЗорина-ы2щ
@НатальяЗорина-ы2щ 2 жыл бұрын
Мартин фаулер Фореве
@drak0an
@drak0an 3 жыл бұрын
Есть одна правка для лучшего понимания темы. Нестабильность нужно считать от 0 до -1, и график вести налево. А ещё лучше считать Стабильность (без не) от 0 до 1, тогда график направо. А иначе мозги после математики долго кипят (лишние минуты) и не могут сварить в чём проблема правой/левой стороны.
@soltaurus
@soltaurus 3 жыл бұрын
Хорошо бы какие-то численные оценки. "Слишком большое" значение Се - это сколько? 1? 1000? 0.4?
@S0ERDEVS
@S0ERDEVS 3 жыл бұрын
Я отталкиваюсь обычно на класс Ce - от 3 до 7, на компонент умножаем пропорционально классам, Ca - играет от назначения класса, скажем для доменных задач, более 10 уже плохо, для утилитарных задач (типа библиотекчный код) я вообще Ca не ограничиваю, так как бессмысленно.
@soltaurus
@soltaurus 3 жыл бұрын
@@S0ERDEVS спасибо
@coolgood8893
@coolgood8893 3 жыл бұрын
Душный дед опять забыл принять таблетки(шучу) Спасибо за видео)
@artemv3160
@artemv3160 3 жыл бұрын
Душнильный комментатор забыл принять таблетки(шучу) Спасибо за коммент)
@coolgood8893
@coolgood8893 3 жыл бұрын
@@artemv3160 ща приму, забыл совсем
@alex331911
@alex331911 3 жыл бұрын
Очень ценные метрики
@user-QesOrwuMqN
@user-QesOrwuMqN 3 жыл бұрын
Теория хороша, но есть ли какие-то автоматизированные тулзы для анализа классов/модулей?
@S0ERDEVS
@S0ERDEVS 3 жыл бұрын
Для Java куча всего, сходу нагуглил jArchitect
@gkavboy
@gkavboy 3 жыл бұрын
Пример как можно "обнаучить" (скорее "обпсевдонаучить") любую область
@athond580
@athond580 3 жыл бұрын
Наверное это будет глупый, но вопрос таков. На каких специальностях подобному учат? Если вообще учат
@gaijin_nnsu
@gaijin_nnsu 3 жыл бұрын
На работе научишься. В России в целом программа обучения отстаёт от требований в отрасли. Ближе всего ВШЭ.
@athond580
@athond580 3 жыл бұрын
@@gaijin_nnsu мне академические знания бы получить хотелось бы. На работе я уже учусь. Да и я не говорил, что только российский вуз/специальность в ответ жду
@illiamaksymenko804
@illiamaksymenko804 3 жыл бұрын
@@gaijin_nnsu так этому учат вообще-то. Этим принципам сто лет в обед
@gaijin_nnsu
@gaijin_nnsu 3 жыл бұрын
@@illiamaksymenko804 не соглашусь. С красным дипломом вмк вы все равно будете джуном. И сильно охотиться за вами будут только на что то низкоуровневое на плюсах или вообще си. При этом платить как за джуна на каком нибудь руби вам не будут)
@illiamaksymenko804
@illiamaksymenko804 3 жыл бұрын
@@gaijin_nnsu так я и не говорил что будут охотиться. Одной зубрежки теории недостаточно в этом случае. Нужно на реальных проектах смотреть как это работает и набивать шишки
@nikolaysavinov1891
@nikolaysavinov1891 3 жыл бұрын
Странно каким образом увеличение связей в сторону нашего компонента вдруг увеличивают его стабильность. Отсюда похоже и костыль про любые 2 из 3х параметров
@MrDromorong
@MrDromorong 3 жыл бұрын
Но вы приподносите нестабильность как что то плохое. Возможно для тех кто услышит эту тему в первый раз тут это так и запомнится. Но согласно тому же мартину, не стабильность это не что то плохое. Нестабильный компонент - компонент который принимает хорошо изменения и от которого почти ничто не зависит. В него легко вносить изменения. Стабильный компонент от того и стабильный, что внести в него изменения сложно. При этом нестабильные компоненты при низком уровне абстракции не являются проблемой, поэтому нижний правый угол и не является зоной боли в оригинальном графике. Как и стабильные компоненты, в которые сложно вносить изменения при высоком уровне абстракций
@DenisB-d5f
@DenisB-d5f Жыл бұрын
5:20 - но ведь компонент А может менять компонент B через его методы
@_mirai
@_mirai Жыл бұрын
Здесь имеется ввиду не изменение состояния объекта во время работы приложения, а изменение логики во время разработки. Ну то есть если кто-то решил переписать класс A, то это никак не сломает класс В, потому что он не зависит от класса A, а вот наоборот такая ситуация вполне возможна
@SobolionV
@SobolionV 3 жыл бұрын
Чет я не понял, если код будет находится в рекомендуемом овале, то он может быть абстрактен на 100% судя по графику. Он же не будет нести никакой пользы? Я правильно понимаю, что по мере абстрактности нужно больше стремится к 0.5?
@S0ERDEVS
@S0ERDEVS 3 жыл бұрын
Оценка применяется к рабочему коду. Код не пишется чтобы "технически" куда-то попасть в графике. Написали код, видите где он на графике. если ушел куда-то не туда смотрите почему, если можете поправить - поправляете, если нет, то работаете дальше.
@SlavaCh
@SlavaCh 2 жыл бұрын
Так и будешь считать нестабильность и абстрактность, а фичи когда пилить? ПМ не похвалит)
@evgenasd8892
@evgenasd8892 3 жыл бұрын
Универспльность кода (абстрагированое от реализации) увпличивает время разработки. Руководитель не деволен. Конкретный код привязанный к к конкретной реализации затягивает время на модификацию, даже для не больших изменений, так же вводит в ступор руководителя. Как проектировать в стиле золотого сечения???
@GlorianWolf
@GlorianWolf 3 жыл бұрын
Тут явно руководитель лишний.
@danjilov3965
@danjilov3965 3 жыл бұрын
9:18 "Если 2 из 3-ёх параметров находятся в красной зоне, не важно в каком порядке" - есть три комбинации, с одной из них я согласен - Ce и I. Т.к чем меньше Ca по отношению к Ce, тем и больше I. Но вот с остальными комбинациями получается ерунда: Если у нас Ca по отношению к Ce будет велико, то уже никак не получится, что I будет у красный зоны, т.е одна комбинация у нас уже вообще выкинулась. ХОтя даже больше, т.к у нас две комбинации, в которой задействовано Ca, которая в красной зоне - Ca и I, Ca и Ce. Хотя единственная спорная комбинация - Ca и Ce, может ли тут вообще произойти такое, что они обе будут в красной зоне? Предположим что может, и они равны друг другу, но тогда выходит ,что I = 0.5, что судя по твоему утверждению тоже плохо
@S0ERDEVS
@S0ERDEVS 3 жыл бұрын
X - красная зона, О - ок Ce Ca I X X O - проблема O X X - маловероятно, так как Ca уменьшает I, но на границах может вылезти что-то подобное X O X - проблема 0.5 может быть и хорошо если O O O - возможно если слабое Ca и Ce, и примерно равны, тогда I может быть 0.5 и это норм.
@danjilov3965
@danjilov3965 3 жыл бұрын
@@S0ERDEVS Ca и Ce каким образом могут быть большими одновременно? Нужен конкретный пример, т.к если ты утверждаешь что когда они равны - это норм, то тогда выходит что может быть две оставшиеся ситуации Ca > Ce и Ca < Ce. Но оба этих варианта не подходят под утверждение «Ca и Ce находятся в красной зоне одновременно», т.к если Ca = Ce не подходит, то Ca > Ce не подходит тем более, остаётся вариант Ca < Ce. Но тогда возникает вопрос «на сколько он может быть меньше(а вернее во сколько) чтобы он ещё оставался также в красной зоне, как и Ce”. Предвосхищая ответ «точной границы быть не может» - тогда из этого следует, что не обязательно Ca = Ce является тем, что они «оба не в красной зоне», мб начиная уже с данного соотношения идёт «красная зона», так же мб быть что она начинается и с соотношение 4:7(Ca:Ce)
@S0ERDEVS
@S0ERDEVS 3 жыл бұрын
@@danjilov3965 элементарно 16 компонент используют компонент A - Ca = 16 при этом компонент А зависим на 15 компонентов, которые использует в своей работе Ce = 15. Индекс будет в районе 0.5.
@a2a4rrooman
@a2a4rrooman 3 жыл бұрын
Я прям чувствую что автор читает и сам не до конца понимает ) может поэтому и учит нас чтоб самому научиться ))
@S0ERDEVS
@S0ERDEVS 3 жыл бұрын
Все проще, здесь сложная цепочка переводов и правильного произношения, приходится постоянно думать как перевести и как правильно произнести слова, да еще и линию повествования не упустить. ) Забавно как люди, которые никогда не делали подобных видео, выстраивают теорию заговоров и ищут скрытый смысл, а ответ лежит на поверхности.
@a2a4rrooman
@a2a4rrooman 3 жыл бұрын
@@S0ERDEVS В любом случае спасибо за видео, просто я считаю можно куда проще объяснить, но т.к. я видосики не снимал возможно я не прав )
@truman5652
@truman5652 3 жыл бұрын
Заказчик: Вскопайте 1 кв метр грядки и посадите цветы Кодер теоретик: проектирует тракторы и комбайны, месяцы на реализацию и года на сервисное обслуживание техники. Кодер практик: уже вскопал лопатой и пилит другой проект.
@scarlatum
@scarlatum 3 жыл бұрын
А теперь на момент представь, что тебе нужно вскопать пару тысяч гектар. Лопату в руки возьмёшь? Именно для подобных задач, люди и придумали все эти глупые тракторы и комбайнеры, вместе с их сложной инфраструктурой.
@-urdy
@-urdy Жыл бұрын
Видео ниочём. Эта инфа есть на первой странице любой книги по архитектуре
Проектируем OpenSource приложение
17:31
Это было очень близко...
00:10
Аришнев
Рет қаралды 7 МЛН
Кто круче, как думаешь?
00:44
МЯТНАЯ ФАНТА
Рет қаралды 1,5 МЛН
6 важных структур данных
17:25
S0ER
Рет қаралды 92 М.
JWT авторизация. Основы JWT - механизма.
6:45
Хочу вАйти
Рет қаралды 15 М.
G.R.A.S.P | шаблоны проектирования
12:09