Ответ
DRY (Don't Repeat Yourself) — это фундаментальный принцип разработки программного обеспечения, направленный на устранение дублирования логики и знаний в системе. Его основная идея: "Каждое знание должно иметь единственное, однозначное, авторитетное представление в рамках системы".
Почему это важно:
- Снижение стоимости поддержки: Изменение требуется внести только в одном месте.
- Уменьшение ошибок: Исправление в одном месте гарантирует, что логика будет исправлена везде.
- Повышение читаемости: Код становится менее раздутым и более понятным.
- Облегчение тестирования: Логика, сосредоточенная в одном месте, проще покрывается тестами.
Пример нарушения и исправления:
// НАРУШЕНИЕ DRY: Одна и та же формула расчёта налога дублируется.
class OrderProcessor {
public function calculateTax($amount) {
return $amount * 0.20; // Логика налога 20%
}
}
class InvoiceGenerator {
public function calculateTax($amount) {
return $amount * 0.20; // Та же самая логика налога
}
}
// СОБЛЮДЕНИЕ DRY: Логика вынесена в единственный авторитетный источник.
class TaxCalculator {
private const TAX_RATE = 0.20;
public static function calculate($amount) {
return $amount * self::TAX_RATE;
}
}
class OrderProcessor {
public function calculateTax($amount) {
return TaxCalculator::calculate($amount);
}
}
class InvoiceGenerator {
public function calculateTax($amount) {
return TaxCalculator::calculate($amount);
}
}
Важный нюанс: Принцип DRY применяется к знанию и бизнес-логике, а не к случайно похожему коду. Иногда структурное дублирование кода (например, шаблонные методы в разных классах) менее вредно, чем создание неправильной, чрезмерно сложной абстракции только ради устранения повторения.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶