он вообще может быть несовместим с основой ооп. объект представляет некоторый аналог физического объекта. а в физических далеко не всегда 1 ответственность, есть многопрофильные объекты
Я вижу тут явное не понимание, другую ответственность выполняет не сам объект а другой объект по средствам композиции/агрегации. Весь смысл солида это декомпозировать весь функционал. Для открытости-закрытости интерфейсы. В итоге классы маленькие, классы получают зависимости через di и всё понятно и гибко
Часто вместо 5 классов 15, и обычно понятность только уменьшается если следовать этому принципу жёстко и бездумно. Моё мнение что класс должен выполнять одну некоторую логику. Может содержать ряд ответственности если они схожие или в одну тему.
но даже главное не в этом, а в том что большинство людей не имеют своего мнения и просто тупо следует принципам думая что это единственное высшее благо
Ну вот сейчас будем размывать понятия ответственность и логику. Единая ответственность это единая ответственность. Это к тому что объект не должен ЯВНО собирать урожай морковки и выпикать пирожки. Тут же можно возразить. Так ведь например это человек, у него ещё 1000 разных методов. Всё верно, но в рамках ООП для решения этой задачи объект человек будет в себе содержать сложные по иерархии и структуре объекты которые будут решать более абстрактные задачи и где-то там в конце иерархии будет объект с методом "собирать урожай морковки" и где совсем в другом месте объект с методом "выпикать пирожки". А у человека будет только 2 метода, "родится" и "умереть". Конечно очень абстрактно но думаю смысл применения единой ответственность я донёс. Естественно все буквы солида между собой пересекаются и следует воспринимать их не по отдельности а вместе
Я с этим согласен. Я не согласен с возвеличиванием этого принципа, что только так и никак иначе. Это один из возможных подходов. Может быть и без него. И это не есть хуже.
Мне кажется что в твоём примере класс человек уже не удовлетворяет S, несмотря на композицию.
Ну ничего абсолютного не бывает. Но бывает часто недопонимание что имелось ввиду. Например единая ответственность не ограничивает количество методов - например паттерн строитель, сам строитель может иметь 10-20 метод, но заниматься сам класс только одним - подготавливает и строить большой объект
Выполняет единую ответственность - живёт
Обсуждают сегодня