Разница REP и CCP
Мне сложно понять разницу между и. Есть ли у кого-нибудь интуитивное объяснение в лучшем случае на примере?
Что я выяснил на данный момент:
REP (Reuse-Release-Equivalence-Principle)
: Гранулярность повторного использования - это гранулярность выпуска. Классы в пакете должны быть связаны по содержанию и обслуживать тему более высокого уровня.
CRP (Common-Reuse-Principle)
: Компоненты не должны зависеть от классов, которые им не нужны. Классы, которые используются вместе, должны быть сгруппированы в один компонент.
Я не понимаю, почему говорится об инклюзивном принципе (пакет становится больше) и эксклюзивном (пакет становится меньше)? Кроме того, если что-то принадлежит друг другу с точки зрения содержания (REP), разве это не используется вместе (CRP)?
И почему у меня будут проблемы со слишком большим количеством модификаций компонентов, если я буду проектировать свои пакеты только в соответствии с
REP
а также
CRP
и игнорируя
CCP (Common-Closure-Principle)
?