Похоже, вы ищете Принципы объектно-ориентированного проектирования .
Суммировано с Принципы, шаблоны и практики гибкой разработки программного обеспечения . Эти принципы - с трудом завоеванный продукт многолетнего опыта разработки программного обеспечения. Они не являются продуктом единого мнения, но представляют собой интеграцию и работу большого числа разработчиков и исследователей программного обеспечения. Хотя они представлены здесь как принципы объектно-ориентированного проектирования, они действительно являются частными случаями давних принципов разработки программного обеспечения.
SRP Принцип единой ответственности У класса должна быть только одна причина для изменения.
OCP Принцип открытого доступа Программные объекты (классы, пакеты, методы и т. Д.) Должны быть открыты для расширения, но закрыты для модификации.
LSP Принцип подстановки Лискова Подтипы должны заменять свои базовые типы.
DIP Принцип инверсии зависимостей Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.
ISP Принцип разделения интерфейса
Клиенты не должны зависеть от методов, которые они не используют. Интерфейсы принадлежат клиентам, а не иерархиям.
REP Принцип эквивалентности повторного использования и повторного использования
Гранула повторного использования является гранулой высвобождения.
CCP Общий принцип закрытия
Классы в пакете должны быть закрыты против одинаковых изменений. Изменение, затрагивающее закрытый пакет, затрагивает все классы в этом пакете и никакие другие пакеты.
ГОС Принцип общего повторного использования
Классы в пакете повторно используются вместе. Если вы повторно используете один из классов в пакете, вы снова используете их все.
ADP Принцип ациклических зависимостей
Не допускайте циклов в графе зависимостей.
SDP Принцип стабильных зависимостей
Зависит от устойчивости.
SAP Принцип стабильных абстракций
Пакет должен быть настолько абстрактным, насколько он стабилен.