Коротко о принципах проектирования
Don't Repeat Yourself (DRY, рус. Не повторяйся) - изменение единственного элемента системы не требует внесения изменений в другие, логически не связанные элементы. Те элементы, которые логически связаны, изменяются предсказуемо и единообразно.
KISS (keep it short and simple — «делай короче и проще») - принцип проектирования, при котором простота системы декларируется в качестве основной цели и/или ценности.
YAGNI (англ. You Ain't Gonna Need It — «Вам это не понадобится») - отказ от избыточной функциональности, — т. е. отказ добавления функциональности, в которой нет непосредственной надобности
S.O.L.I.D. - это аббревиатура пяти основных принципов объектно ориентированной архитектуры.
-
S – Single-responsiblity principle - Принцип единственной обязанности. Каждый объект должен иметь одну обязанность и эта обязанность должна быть полностью инкапсулирована в класс
-
O – Open-closed principle - Принцип открытости/закрытости. Сущности (классы, модули, функции и т. п.) должны быть открыты для расширения, но закрыты для изменения
-
L – Liskov substitution principle - Принцип подстановки Барбары Лисков. Поведение наследуемых классов не должно противоречить поведению, заданному базовым классом, то есть поведение наследуемых классов должно быть ожидаемым для кода.
-
I – Interface segregation principle - Принцип разделения интерфейса. Слишком «толстые» интерфейсы необходимо разделять на более маленькие и специфические, чтобы клиенты маленьких интерфейсов знали только о методах, которые необходимы им в работе
-
D – Dependency Inversion Principle - Принцип инверсии зависимостей. Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.