Что такое DRY, DIE, KISS, SOLID, YAGNI в программировании
Итак, что же такое термины DRY, DIE, KISS, SOLID, YAGNI и в чем заключаются эти подходы в программировании – рассмотрим их по порядку.
DRY – расшифровывается как Don’t Repeat Youself – не повторяйся, также известен как DIE – Duplication Is Evil – дублирование это зло. Этот принцип заключается в том, что нужно избегать повторений одного и того же кода. Лучше использовать универсальные свойства и функции.
KISS – Keep It Simple, Stupid – не усложняй! Смысл этого принципа программирования заключается в том, что стоит делать максимально простую и понятную архитектуру, применять шаблоны проектирования и не изобретать велосипед.
Принцип SOLID в упрощенном варианте означает, что когда при написании кода используется несколько принципов вместе, то это значительно облегчает дальнейшую поддержку и развитие программы. Полностью акроним расшифровывается так:
- Single responsibility principle – принцип единственной обязанности (на каждый класс должна быть возложена одна-единственная обязанность);
- Open/closed principle – принцип открытости/закрытости (программные сущности должны быть закрыты для изменения но открыты для расширения);
- Liskov substitution principle – принцип подстановки Барбары Лисков
(функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа, не зная об этом. Подклассы не могут замещать поведения базовых классов. Подтипы должны дополнять базовые типы); - Interface segregation principle – принцип разделения интерфейса
(много специализированных интерфейсов лучше, чем один универсальный); - Dependency inversion principle – принцип инверсии зависимостей
(зависимости внутри системы строятся на основе абстракций. Модули верхнего уровня не зависят от модулей нижнего уровня. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций);
Термин YAGNI значит You Ain’t Gonna Need It – вам это не понадобится! Его суть в том, чтобы реализовать только поставленные задачи и отказаться от избыточного функционала.