Принципы OOD | Принципы для разработки
SOLID
SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation и Dependency inversion) — 5 принципов объектно-ориентированного программирования, при соблюдении которых Ваш проект будет легко поддерживать и расширять. Также это поможет системе оставаться гибкой при внесении изменений в логику работы и пригодной для рефакторинга.
- Принцип единственной ответственности (Single responsibility) — класс должен отвечать за одну задачу. Если класс отвечает за решение нескольких задач, то его подсистемы, реализующие решение этих задач, оказываются связанными друг с другом, в таком случае изменения в одной такой подсистеме ведут к изменениям в другой.
- Принцип открытости / закрытости (Open-closed) — Программные сущности (классы, модули, функции) должны быть открыты для расширения, но не для модификации.
- Принцип подстановки Лисков (Liskov substitution) — классы-наследники должны иметь возможность использоваться вместо родительских классов, от которых они образованы, не нарушая работу программы.
- Принцип разделения интерфейса (Interface segregation) — создавайте узкоспециализированные интерфейсы, предназначенные для конкретного клиента. Слишком большие интерфейсы следует разделять на более мелкие и специфичные, что бы программные методы этих интерфейсов знали только о тех методах, которые они используют для работы.
- Принцип инверсии зависимостей (Dependency inversion) — модули верхних уровней не должны зависеть от модулей нижних уровней, а модули нижних уровней не должны зависеть от модулей верхних уровней. Оба типа модулей должны зависеть от абстракций.
KISS
KISS (Keep It Short & Simple) — это принцип проектирования в котором простота системы декларируется в качестве основной цели или ценности.
При разработке этот принцип для нас значит, что
- Не стоит усложнять код без причины, он должен быть легок для понимания
- Лучше не перегружать интерфейс теми опциями, которые не будут нужны большинству пользователей, на много лучше предусмотреть для них «расширяемый» интерфейс
- Не стоит подключать огромную библиотеку, если вам от нее нужно лишь пару функций
DRY
DRY (Don’t Repeat Yourself) — этот принцип заключается в том, что нужно избегать повторения одного и того же кода.
В случае если мы имеем однотипный функционал — лучше код вынести в отдельную функцию. В таком случае мы избавимся от дублирования кода и при необходимости вносить изменения, это нужно будет сделать только в одном месте, вместо десятка исправлений в однотипных функциях. Повторное использование функций, вынесенных из сложных алгоритмов, позволяет сократить время разработки и тестирования новой функциональности.
Следование принципу DRY приводит к модульной архитектуре приложения и к чёткому разделению ответственности за бизнес-логику между программными классами.
YAGNI
YAGNI (You Ain’t Gonna Need It) — этот принцип заключается в том, чтобы реализовать только поставленные задачи и отказаться от избыточного функционала.
Стоит воздержаться от написания бонусного функционала, которые не описан в ТЗ, но может быть полезен заказчику, во-первых, по той причине, что в реальности такой функционал не используется, а так же он усложняет систему, усложняет работу с продуктом и теоретически увеличивает шансы на появление ошибки.
Источники: andremonteiro.pt, angular.io/guide/universal