← Назад к вопросам

Какие знаешь принципы, кроме SOLID?

2.3 Middle🔥 101 комментариев
#SOLID и паттерны проектирования

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Ответ

Отличный вопрос! Кроме SOLID существует множество важных принципов, которые помогают писать чистый и maintainable код. Давайте разберемся в них подробнее.

DRY (Do not Repeat Yourself)

Принцип DRY гласит, что каждый кусок информации или логики должен быть выражен в коде только один раз. Это избегает дублирования кода и облегчает поддержку.

Пример плохого кода:

public class UserService {
    public void validateEmail(String email) {
        if (!email.contains("@")) {
            throw new InvalidEmailException("Email должен содержать @");
        }
    }
    
    public void validateUserEmail(String email) {
        if (!email.contains("@")) {
            throw new InvalidEmailException("Email должен содержать @");
        }
    }
}

Правильный подход:

public class EmailValidator {
    public void validate(String email) {
        if (!email.contains("@")) {
            throw new InvalidEmailException("Email должен содержать @");
        }
    }
}

KISS (Keep It Simple, Stupid)

Прямо и просто: выбирайте самое простое решение, которое решает проблему. Не переусложняйте.

Проблема: разработчик делает слишком абстрактное решение с множеством интерфейсов "на будущее".

Решение: начните с простого, рефакторьте только когда появятся реальные требования.

YAGNI (You Aren't Gonna Need It)

Не добавляйте функционал, который вам может пригодиться в будущем, если его нет в текущих требованиях. Это экономит время и уменьшает сложность.

Composition over Inheritance

Используйте композицию вместо наследования для переиспользования функционала.

Наследование (проблемы):

public class Car extends Vehicle {
    // Car "является" Vehicle
}

Композиция (лучше):

public class Car {
    private Engine engine;
    private Wheel[] wheels;
    // Car "имеет" Engine и Wheels
}

Law of Demeter (Principle of Least Privilege)

Объект должен знать как можно меньше о других объектах. Не обращайтесь к свойствам свойств.

Плохо:

String city = user.getAddress().getCity();

Хорошо:

String city = user.getCity();

Separation of Concerns (SoC)

Каждый модуль/класс должен отвечать за одну область функциональности.

Don't Repeat the Framework

Не пишите собственный код там, где уже есть проверенное решение в фреймворке. Это экономит время и избегает ошибок.

Fail Fast

Ошибки должны обнаруживаться как можно раньше в процессе разработки, а не в production.

public User createUser(String email) {
    if (email == null || email.isEmpty()) {
        throw new IllegalArgumentException("Email не может быть пустым");
    }
    return new User(email);
}

Эти принципы работают вместе с SOLID для создания качественного, поддерживаемого кода.

Какие знаешь принципы, кроме SOLID? | PrepBro