Здравствуйте!
Непонятно объяснение "Why is SoC so important?"
SoC , конкретно
Keeping different responsibilities together in a single class, you have to maintain their consistency simultaneously in every operation within this class. That quickly leads to a combinatorial explosion.
1. consistency - в смысле достигнуто соответствие (код должен соответствовать поведению, которое требуется, отсутстствие багов) внутри всех операций?
2. Что значит
a huge amount of combinations in which elements of these concerns can interact with each other.
?
2. Нужен пример, иллюстрирующий пп. 1, 2. Если можно, реальный пример.
Я думал на примере
Eloquent.
Если представить, что все будет в одном классе, например, Model, объединив все методы и поля, то можно ошибиться?
Только ли из-за большой сложности, связанной с тем, что теперь для многих методов нет очевидного контекста в виде класса, и сложно теперь что-либо найти в 15000 строк кода? Разбив все на методы, DRY всё предметное знание, то проблемы нарушения инвариантов не будет (кроме как по причине того, что легко запутаться и внести в код возможность нарушения инварианта)?
Но если еще плохо выбрать границы методов почти всех методов, то код станет запутанным мусором, и больше не будет отражать семантику предметной области. Мне не удалось придумать этот код так, чтобы не было дублирований предметной логики, т.к. нужно разбивать методы, которые используются несколько раз. Пример, если изменить границы метода и всех вызываемых методов внутри него:
Builder::eagerLoadRelation.
Спасибо.