Ответ
Принцип 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 не следует применять слепо к случайно совпадающему коду. Если два фрагмента логически различны и могут изменяться по независимым причинам, их дублирование может быть предпочтительнее преждевременной абстракции.