Команда разработчиков должна бороться за то, что, по их мнению, лучше для компании, так же как команда управленцев, команда маркетинга, команда продаж и команда эксплуатации. Это всегда борьба.
Принцип совместного повторного использования (Common Reuse Principle; CRP) – еще один принцип, помогающий определять, какие классы и модули должны включаться в компонент. Он указывает, что в компонент должны включаться классы и модули, используемые совместно.
DIP: Dependency Inversion Principle – принцип инверсии зависимости.
Код, реализующий высокоуровневую политику, не должен зависеть от кода, реализующего низкоуровневые детали. Напротив, детали должны зависеть от политики.
ISP: Interface Segregation Principle – принцип разделения интерфейсов.
Этот принцип призывает разработчиков программного обеспечения избегать зависимости от всего, что не используется.
OCP: Open-Closed Principle – принцип открытости/закрытости.
Этот принцип был сформулирован Бертраном Мейером в 1980-х годах. Суть его сводится к следующему: простая для изменения система должна предусматривать простую возможность изменения ее поведения добавлением нового, но не изменением существующего кода.