Программирование включает множество принципов, которые помогают разработчикам создавать эффективный, читаемый и поддерживаемый код.
🚩Принципы SOLID
🟠Single Responsibility Principle (SRP)
Каждый класс должен иметь одну единственную ответственность. Пример: Класс
Invoice должен обрабатывать только логику, связанную с инвойсами, а не управление базой данных или пользовательский интерфейс.🟠Open/Closed Principle (OCP)
Классы должны быть открыты для расширения, но закрыты для модификации. Пример: Добавление нового типа фигуры без изменения существующего кода классов фигур.
🟠Liskov Substitution Principle (LSP)
Объекты базового класса должны быть заменяемыми объектами подклассов без изменения правильности программы. Пример: Если класс
Bird имеет метод fly, то подкласс Penguin не должен его нарушать.🟠Interface Segregation Principle (ISP)
Клиенты не должны быть вынуждены зависеть от интерфейсов, которые они не используют. Пример: Разделение крупного интерфейса на несколько специфичных интерфейсов.
🟠Dependency Inversion Principle (DIP)
Модули верхнего уровня не должны зависеть от модулей нижнего уровня; оба должны зависеть от абстракций. Пример: Использование интерфейсов для взаимодействия между классами вместо конкретных реализаций.
🚩Другие важные принципы
🟠DRY (Don't Repeat Yourself)
Избегайте дублирования кода, вынеся повторяющиеся части в отдельные функции или классы. Пример: Использование функций для повторяющихся блоков кода.
🟠KISS (Keep It Simple, Stupid)
Держите код простым и избегайте сложных решений, когда более простое решение будет работать. Пример: Не используйте сложные алгоритмы там, где достаточно простого цикла.
🟠YAGNI (You Ain't Gonna Need It)
Не реализовывайте функциональность, которая не нужна прямо сейчас. Пример: Добавляйте новые функции только тогда, когда в них есть необходимость.
🟠Separation of Concerns
Разделяйте разные аспекты программы, чтобы каждый модуль решал отдельную задачу. Пример: Отдельные модули для бизнес-логики, пользовательского интерфейса и доступа к данным.
🟠Law of Demeter (LoD)
Объект должен общаться только с непосредственными "друзьями" и не тянуть цепочку вызовов. Пример: Использование методов класса без вызова методов через несколько объектов.
🟠Fail Fast
Ошибки должны быть выявлены как можно раньше. Пример: Проверка входных данных на валидность в начале функции.
🟠Composition over Inheritance
Предпочтение композиции перед наследованием для достижения гибкости. Пример: Использование объектов других классов для расширения функциональности вместо создания подклассов.
🚩Принципы в Agile
🟠Customer Collaboration over Contract Negotiation
Сотрудничество с заказчиком важнее согласования условий контракта. Пример: Регулярные встречи с заказчиком для обсуждения прогресса и изменений.
🟠Responding to Change over Following a Plan
Готовность к изменениям важнее следования плану. Пример: Внедрение новых требований, даже если они появились на поздних стадиях разработки.
🚩Принципы в DevOps
🟠Infrastructure as Code
Управление инфраструктурой с помощью кода и автоматизации. Пример: Использование Terraform или Ansible для развертывания серверов.
🟠Continuous Integration/Continuous Deployment (CI/CD)
Автоматизация сборки, тестирования и развертывания приложений. Пример: Использование Jenkins или GitHub Actions для автоматизации процессов разработки.
Ставь 👍 и забирай 📚 Базу знаний