Skip to main content

DRY - Не повторяйся

DRY (Don't Repeat Yourself) - Не повторяйся

Описание принципа

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

Применение

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

Пример

// Плохо: дублирование кода
Процедура ОбработатьДокумент1()
// Проверка прав
Если НЕ ПравоДоступа("Изменение", Метаданные.Документы.Документ1) Тогда
ВызватьИсключение "Недостаточно прав для изменения документа";
КонецЕсли;

// Логика обработки...
КонецПроцедуры;

Процедура ОбработатьДокумент2()
// Проверка прав дублируется
Если НЕ ПравоДоступа("Изменение", Метаданные.Документы.Документ2) Тогда
ВызватьИсключение "Недостаточно прав для изменения документа";
КонецЕсли;

// Логика обработки...
КонецПроцедуры;

// Хорошо: использование общей функции
Функция ПроверитьПравоНаИзменение(МетаданныеОбъекта)
Если НЕ ПравоДоступа("Изменение", МетаданныеОбъекта) Тогда
ВызватьИсключение "Недостаточно прав для изменения документа";
КонецЕсли;

Возврат Истина;
КонецФункции;

Процедура ОбработатьДокумент1()
ПроверитьПравоНаИзменение(Метаданные.Документы.Документ1);
// Логика обработки...
КонецПроцедуры;

Процедура ОбработатьДокумент2()
ПроверитьПравоНаИзменение(Метаданные.Документы.Документ2);
// Логика обработки...
КонецПроцедуры;
Преимущества DRY
  • Упрощение поддержки кода
  • Снижение риска ошибок при изменениях
  • Сокращение объема кода
  • Повышение его читаемости

Рекомендации

  1. Создавайте общие модули для часто используемых алгоритмов и проверок.

  2. Применяйте шаблоны проектирования:

    • Шаблон "Фабрика" для создания однотипных объектов
    • Шаблон "Стратегия" для вариативного поведения
    • Шаблон "Декоратор" для расширения функциональности
  3. Организуйте общие настройки через константы, параметры сеанса и функциональные опции.

Типичные проблемы при применении

  • Излишнее обобщение, которое усложняет код вместо его упрощения
  • Создание слишком абстрактных процедур, которые сложно поддерживать
  • Недостаточное документирование общих модулей, что затрудняет их использование
  • Избыточное вынесение кода в общие модули, когда это не оправдано (для небольших фрагментов)
Важно помнить

DRY не означает, что нужно во что бы то ни стало избегать любого повторения. Иногда небольшое дублирование может быть предпочтительнее излишне сложной абстракции.