Какие принципы программирования знаешь ?

Спросят с вероятностью 3%



Существует множество принципов, которые помогают разработчикам писать чистый, поддерживаемый и эффективный код. Вот некоторые из ключевых принципов:



SOLID Принципы




1️⃣Single Responsibility Principle (Принцип единственной ответственности):

Класс должен иметь только одну причину для изменения, то есть выполнять только одну задачу или отвечать за один аспект системы.

Пример: Класс, который обрабатывает данные пользователя, не должен также управлять подключением к базе данных.



2️⃣Open/Closed Principle (Принцип открытости/закрытости):

Программные сущности (классы, модули, функции) должны быть открыты для расширения, но закрыты для модификации.

Пример: Вместо изменения существующего кода для добавления новой функциональности, можно добавить новые классы или методы, которые расширяют существующее поведение.



3️⃣Liskov Substitution Principle (Принцип подстановки Барбары Лисков):

Объекты в программе должны быть заменяемы экземплярами их подтипов без изменения корректности программы.

Пример: Если у вас есть базовый класс «Животное» и подкласс «Птица», вы должны иметь возможность заменить «Животное» на «Птицу» без проблем.



4️⃣Interface Segregation Principle (Принцип разделения интерфейса):

Клиенты не должны зависеть от интерфейсов, которые они не используют.

Пример: Вместо одного большого интерфейса, лучше создать несколько маленьких интерфейсов, чтобы классы могли реализовать только те интерфейсы, которые им нужны.



5️⃣Dependency Inversion Principle (Принцип инверсии зависимостей):

Высокоуровневые модули не должны зависеть от низкоуровневых модулей. Оба типа модулей должны зависеть от абстракций.

Пример: Вместо того чтобы класс зависел от конкретного класса (например, класса базы данных), он должен зависеть от интерфейса или абстрактного класса, что позволяет легко менять реализацию.



Пример с SOLID и другими принципами

class Engine:

def start(self):

print("Engine started")



class Car:

def __init__(self, engine):

self.engine = engine



def start(self):

self.engine.start()



# Принцип Dependency Injection

engine = Engine()

car = Car(engine)

car.start() # Выведет: Engine started




Принципы программирования, такие как SOLID, KISS, DRY, YAGNI, инкапсуляция, разделение обязанностей, закон Деметры и композиция вместо наследования, помогают писать чистый, поддерживаемый и эффективный код. Они направлены на уменьшение связности, улучшение модульности и облегчение тестирования и поддержки кода.



👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент



🔐 База собесов | 🔐 База тестовых