Когда применяется принцип DRY?

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

Ответ

Принцип DRY (Don't Repeat Yourself) применяется для борьбы с дублированием знаний или намерений в коде. Это не только про повторение строк, но и про повторяющуюся логику, конфигурации или структуры данных.

Типичные случаи применения:

  • Повторяющиеся фрагменты кода: Вынесение в отдельный метод, функцию или класс.
  • Общая бизнес-логика в нескольких местах: Создание общего сервиса или компонента.
  • Одинаковые условия или проверки: Использование стратегии или спецификации.
  • Константы и конфигурации: Вынесение в централизованные файлы настроек или классы констант.

Пример нарушения и исправления:

// Нарушение DRY: логика форматирования даты дублируется.
string report1 = "Report generated on " + DateTime.Now.ToString("yyyy-MM-dd");
string report2 = "Data processed on " + DateTime.Now.ToString("yyyy-MM-dd");

// Следование DRY: логика изолирована в одном месте.
public static class Formatter
{
    public static string FormatCurrentDate() => DateTime.Now.ToString("yyyy-MM-dd");
}

string report1 = $"Report generated on {Formatter.FormatCurrentDate()}";
string report2 = $"Data processed on {Formatter.FormatCurrentDate()}";
// Теперь при необходимости изменить формат даты, правка делается в одном месте.

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