SOLID:SRP противоречит GRASP:Polymorphism, потому, что полиморфизм размывает ответственность, рассредоточивая ее по цепочке наследников, а SRP концентрирует. Вообще полипорфизм я признаю только на 1 уровень: интерфейс или абстрактный класс (что хуже) и от них 1 уровень классов наследников. Если больше, то можно запутаться и лучше делать композицию или агрегацию. Они даже друг-другу противоречат, например, GRASP: Indirection частично противоречит GRASP: High Cohesion, иногда нам нужно понизать Cohesion, а иногда повышать, зависит от конкретного случая и интуиции инженера. GRASP Information Expert частично противоречит GRASP: Pure Fabrication. Это все вопрос баланса.
В основном да, но бывает, что и в одном проекте очень сильно меняется предметная область, когда все переделывается или изменяются бизнес-процессы. В любом случае, чистая выдумка - это абстракция высшего порядка, она может переиспользоваться в разных проектах и гораздо менее подвержена изменениям предметной области. Бывакт, конечно, что нужно переходить от промисов к асинхронной композиции, но это не изменение самой чистой выдумки, а мы берем другую асинхронную абстракцию.
Смотрим примеры и это только начало курса ruclips.net/video/cCHL329_As0/видео.html но это не значит, что о концепциях нельзя говорить человеческим языком
Кто может сказать почему лучше не применять в конструктуре класса, сразу метод валидации на входящие данные? Тогда как? Отдельным приватным методом в другом публичном методе? Тоже плохая идея. При учете что абстракция не протикает и зона отвественности класса ни нарушена. Валидация необщая а именно под эти данные. Смысла создавать класс под валидаци? Если придется поменять ее то тоже в одном классе.
Валидацию лучше всего вынести в отдельную библиотеку, а потом снабжать модель метаданными в декларативном стиле и по ним валидировать. Вызывать валидацию из контроллеров.
- Пойдешь ко мне в штат? - Кем? - Криэйтором. - Это творцом? Если перевести? - Творцы нам тут на х... не нужны, - сказал он. - Криэйтором, Вава, криэйтором.
В поддержку канала и вашей образовательной движухи ✊🚀
лайк до просмотра!
Всем джаваскрипта, бесплатно, много, и пусть ни кто не уйдет обиженным!
@@TimurShemsedinov Начал смотреть ваши видео, и полюбил нодочку) и федорочку))
@@TimurShemsedinovзабросил js, учу флаттер, но всеравно смотрю ваши видео)
@@evgenysmirnov4762 Хаха)
5:03 Information Expert
13:06 Creator
18:15 Cohesion & Coupling
21:33 Controller
24:58 Polymorphism
31:55 Indirection
34:34 Pure Fabrication
38:36 Protected Variations
временами приятно послушать лекцию без кода, особенно в дороге удобно. Спасибо!
Спасибо Вам, за то что вы делаете. Спасибо, что делитесь своим опытом и знаниями!
Вы крут! Спасибо, что делитесь знаниями!
Дякую! Гарний матеріал з добрим поясненням. 👍
Класс! Хотим больше видео про проектирование и архитектуру
ну вот будет еще 8 лекций в этом курсе по GRASP, всего 10, а потом по SOLID пройдемся
@@TimurShemsedinov ждем с нетерпением!
🔥
@@TimurShemsedinov Просто супер!!! Тимур Гафарович, а когда будут лекции по SOLID?
@@Денис-в5д5ь В этом году запишу, пока ограничен по времени, пишу техстек Метархия, это важнее
Дякую за мудрість!
Спасибо за контент!)
По мне лучшее объяснение принципов GRASP
Лайк не глядя!
Я надеюсь, ты посмотришь )
@@TimurShemsedinov Обязательно! Отличная тема!
Интересное и познавательное продолжение нас ждёт. Спасибо за лекцию
дякую!
Спасибо за уроки!
Крутяк!
Refactoring GURU !!!!
Круто. Спасибо большое
Топ!
Очень полезно.
Интересно было бы послушать о кейсах, когда grasp идут в конфронтацию с solid и между собой
SOLID:SRP противоречит GRASP:Polymorphism, потому, что полиморфизм размывает ответственность, рассредоточивая ее по цепочке наследников, а SRP концентрирует. Вообще полипорфизм я признаю только на 1 уровень: интерфейс или абстрактный класс (что хуже) и от них 1 уровень классов наследников. Если больше, то можно запутаться и лучше делать композицию или агрегацию. Они даже друг-другу противоречат, например, GRASP: Indirection частично противоречит GRASP: High Cohesion, иногда нам нужно понизать Cohesion, а иногда повышать, зависит от конкретного случая и интуиции инженера. GRASP Information Expert частично противоречит GRASP: Pure Fabrication. Это все вопрос баланса.
Спасибо!
Класс, спасибо
мне нравится перевод Высокая сплочённость классов.
Отлично!
промисы в реальной жизни существуют. давай так, если промисов не существует, то с меня лайк!
показалось описание controller и indeirection (по которому в пример приводится контроллер из mvc)- пересекаются.
Какие более актуальные методологии вы имели ввиду в начале ролика, когда упоминали UML?
Чистая выдумка - что вы имеете ввиду под сменой предметной области? Смена проекта?
В основном да, но бывает, что и в одном проекте очень сильно меняется предметная область, когда все переделывается или изменяются бизнес-процессы. В любом случае, чистая выдумка - это абстракция высшего порядка, она может переиспользоваться в разных проектах и гораздо менее подвержена изменениям предметной области. Бывакт, конечно, что нужно переходить от промисов к асинхронной композиции, но это не изменение самой чистой выдумки, а мы берем другую асинхронную абстракцию.
Подскажите когда будет продолжение?
Сегодня 2 лекция в 21:45
14:20 - Это о DepencyInjection ? Когда инстанс класса становиться свойством в другом классе.
Если перндается в конструктор
Еще по теме - ruclips.net/video/tOIcBrzezK0/видео.html
Тимур расскажите вы скорее всего герой ТС39 можно о ваших достижениях .
Совсем нет
любые принципы/паттерны - должны иметь примеры кода, любые попытки описать их текстом - автоматическое переусложнение
Смотрим примеры и это только начало курса ruclips.net/video/cCHL329_As0/видео.html
но это не значит, что о концепциях нельзя говорить человеческим языком
Кто может сказать почему лучше не применять в конструктуре класса, сразу метод валидации на входящие данные? Тогда как? Отдельным приватным методом в другом публичном методе? Тоже плохая идея. При учете что абстракция не протикает и зона отвественности класса ни нарушена. Валидация необщая а именно под эти данные. Смысла создавать класс под валидаци? Если придется поменять ее то тоже в одном классе.
Валидацию лучше всего вынести в отдельную библиотеку, а потом снабжать модель метаданными в декларативном стиле и по ним валидировать. Вызывать валидацию из контроллеров.
@@TimurShemsedinov про библиотеку не подумал. Благодарю.
Я вижу только одно адекватное решение всех этих проблем - это Typescript. А на фронтенде - Angular
- Пойдешь ко мне в штат?
- Кем?
- Криэйтором.
- Это творцом? Если перевести?
- Творцы нам тут на х... не нужны, - сказал он. - Криэйтором, Вава, криэйтором.