Какие знаешь принципы, кроме SOLID?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Ответ
Отличный вопрос! Кроме 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 для создания качественного, поддерживаемого кода.