SOLID, KISS, DRY, YAGNI
- KISS — keep it simple stupid. Держи свои функции максимально простыми и тупыми чтобы они выполняли только то, что нужно и не сложнее.
- DRY — don't repeat yourself.
- YAGNI — you aren’t gonna need it (тебе это никогда не понадобится). В коде должен быть только тот функционал, который тебе нужен для работы.
SOLID:
- S - Single Responsibility Principle - принцип единственной ответственности. Каждый класс должен иметь только одну зону ответственности (если класс декодирует данные, он не должен их отправлять/сохранять куда-то).
- O - Open closed Principle - принцип открытости-закрытости. Классы должны быть открыты для расширения, но закрыты для модификации. (Модифицировать класс — отнаследовать от него и в дочернем классе внести изменения). Декоратор класса, метакласс плюют на все принципы наследования, SOLID итд.
- L - Liskov substitution Principle - принцип подстановки Барбары Лисков. Должна быть возможность вместо базового (родительского) типа (класса) подставить любой его подтип (класс-наследник), при этом работа программы не должна измениться.
- I - Interface Segregation Principle - принцип разделения интерфейсов. Данный принцип обозначает, что не нужно заставлять клиента (класс) реализовывать интерфейс, который не имеет к нему отношения (лучше иметь кучу мелких интерфейсов под конкретные нужды).
- D - Dependency Inversion Principle - принцип инверсии зависимостей. Модули верхнего уровня не должны зависеть от модулей нижнего уровня. И те, и другие должны зависеть от абстракции. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций (должны быть зависимости на классах, а не классы на зависимостях).