DRY - Не повторяйся
DRY (Don't Repeat Yourself) - Не повторяйся
Описание принципа
Принцип DRY означает, что каждый фрагмент знания должен иметь единственное, недвусмысленное, авторитетное представление в системе. Иными словами, любой фрагмент кода или логики не должен дублироваться.
Применение
- Выносите повторяющийся код в отдельные процедуры/функции
- Используйте общие модули для хранения часто используемых алгоритмов
- Применяйте шаблоны проектирования для уменьшения дублирования кода
- Создавайте общие подсистемы для функциональности, которая используется в разных местах конфигурации
Пример
// Плохо: дублирование кода
Процедура ОбработатьДокумент1()
// Проверка прав
Если НЕ ПравоДоступа("Изменение", Метаданные.Д окументы.Документ1) Тогда
ВызватьИсключение "Недостаточно прав для изменения документа";
КонецЕсли;
// Логика обработки...
КонецПроцедуры;
Процедура ОбработатьДокумент2()
// Проверка прав дублируется
Если НЕ ПравоДоступа("Изменение", Метаданные.Документы.Документ2) Тогда
ВызватьИсключение "Недостаточно прав для изменения документа";
КонецЕсли;
// Логика обработки...
КонецПроцедуры;
// Хорошо: использование общей функции
Функция ПроверитьПравоНаИзменение(МетаданныеОбъекта)
Если НЕ ПравоДоступа("Изменение", МетаданныеОбъекта) Тогда
ВызватьИсключение "Недостаточно прав для изменения документа";
КонецЕсли;
Возврат Истина;
КонецФункции;
Процедура ОбработатьДокумент1()
ПроверитьПравоНаИзменение(Метаданные.Документы.Документ1);
// Логика обработки...
КонецПроцедуры;
Процедура ОбработатьДокумент2()
ПроверитьПравоНаИзменение(Метаданные.Документы.Документ2);
// Логика обработки...
КонецПроцедуры;
Преимущества DRY
- Упрощение поддержки кода
- Снижение риска ошибок при изменениях
- Сокращение объема кода
- Повышение его читаемости
Рекомендации
-
Создавайте общие модули для часто используемых алгоритмов и проверок.
-
Применяйте шаблоны проектирования:
- Шаблон "Фабрика" для создания однотипных объектов
- Шаблон "Стратегия" для вариативного поведения
- Шаблон "Декоратор" для расширения функциональности
-
Организуйте общие настройки через константы, параметры сеанса и функциональные опции.