Симптом: «толстый» компонент, который страшно трогать

Знакомая ситуация: компонент каталога или корзины разросся до огромного файла, где намешано всё — чтение входных параметров, запросы к базе, бизнес-проверки, расчёты и сборка HTML. Никто в команде не хочет его трогать, потому что неясно, что сломается.

Для бизнеса это означает медленные и рискованные доработки: каждая правка превращается в мини-расследование, а сроки растут на ровном месте.

Явные входные параметры вместо «магического массива»

Первый шаг к порядку — сделать входные данные компонента явными. Вместо того чтобы по всему коду доставать значения из общего массива параметров и надеяться, что они там есть, описываем понятный объект входных данных: какие параметры нужны, какого типа, что обязательно.

Это сразу убирает целый класс ошибок «а тут параметр не пришёл» и делает понятным, что компонент вообще ожидает на вход.

Сборка зависимостей и вызов сценария

Дальше компонент перестаёт сам «всё делать». Его задача — собрать нужные зависимости и вызвать бизнес-сценарий (use case), который и содержит логику. Сам сценарий не знает про Bitrix-компонент и поэтому легко тестируется отдельно.

Так ответственность разделяется: компонент отвечает за связь с фреймворком, сценарий — за бизнес-правила. Менять одно, не задевая другое, становится безопасно.

Готовая модель для шаблона (ViewModel)

Шаблон не должен содержать расчётов и обращений к базе. Поэтому компонент отдаёт в шаблон готовую модель отображения — структуру, где уже всё посчитано и подготовлено: цены отформатированы, флаги выставлены, тексты собраны.

Шаблон становится простым: он только выводит готовые данные. Это упрощает работу верстальщику и снижает риск, что правка дизайна случайно сломает логику.

Понятные ошибки без утечки технических деталей

Отдельная тема — ошибки. В «толстом» компоненте сбой часто выглядит как белый экран или непонятное сообщение. Правильнее обрабатывать ошибки централизованно: показывать пользователю человеческое сообщение, а технические детали писать в лог для разработчика.

Это улучшает и поведение для клиента, и поддерживаемость: по логам понятно, что произошло, а пользователь не видит внутренностей системы.

Практический результат

Логику можно тестировать отдельно от Bitrix — меньше «проверок руками».
Шаблон легко менять, не боясь сломать бизнес-правила.
Входные параметры явные — меньше случайных ошибок.
Ошибки понятны пользователю и видны разработчику в логах.
Новые разработчики быстрее разбираются в компоненте.