Что означает принцип DRY в разработке программного обеспечения?

«Что означает принцип DRY в разработке программного обеспечения?» — вопрос из категории Архитектура, который задают на 23% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

DRY (Don't Repeat Yourself — «Не повторяйся») — это фундаментальный принцип разработки, направленный на минимизацию дублирования логики и знаний в системе. Его цель — обеспечить, чтобы каждая часть знания (алгоритм, конфигурация, бизнес-правило) имела единственное, однозначное и авторитетное представление в кодовой базе.

Почему это важно:

  • Упрощение поддержки: Изменения вносятся в одном месте.
  • Снижение ошибок: Устраняется риск рассинхронизации копий логики.
  • Повышение читаемости: Код становится более структурированным.

Пример нарушения DRY:

// Дублирование логики форматирования в двух методах
public void printUserInfo(User user) {
    System.out.println("Name: " + user.getName());
    System.out.println("Age: " + user.getAge());
}

public void logUserInfo(User user) {
    logger.info("Name: " + user.getName());
    logger.info("Age: " + user.getAge());
}

Исправление по принципу DRY:

// Логика форматирования вынесена в единственный метод
private String formatUserInfo(User user) {
    return String.format("Name: %s, Age: %d", user.getName(), user.getAge());
}

public void printUserInfo(User user) {
    System.out.println(formatUserInfo(user));
}

public void logUserInfo(User user) {
    logger.info(formatUserInfo(user));
}

Смежный принцип: KISS (Keep It Simple, Stupid) — призывает к простоте дизайна. Иногда избыточное устранение дублирования может усложнить архитектуру, поэтому важно соблюдать баланс между DRY и KISS.