При добавлении компонента через визуальный редактор 1С-Битрикс система формирует вызов с полным набором параметров. В результате даже простой bitrix:news.list может занимать несколько десятков строк.
Формально такой код корректен. В нём перечислены все доступные настройки компонента, указаны параметры кеширования, сортировки, постраничной навигации, AJAX-режима, цепочки навигации и обработки ошибок.
Но есть проблема: большая часть этих параметров в конкретном проекте обычно не меняется. Они содержат значения по умолчанию и не несут полезной информации для разработчика, который читает код.
Поэтому в своих проектах на 1С-Битрикс у меня родился принцип, который можно назвать Bitrix Minimal, или принципом минимально достаточной конфигурации компонентов.
Его основная идея проста:
При вызове компонента следует указывать не все существующие параметры, а только те, которые действительно важны для конкретной задачи.
Проблема перегруженных вызовов компонентов
Рассмотрим полный вызов стандартного компонента bitrix:news.list:
IncludeComponent(
'bitrix:news.list',
'',
[
'DISPLAY_DATE' => 'Y',
'DISPLAY_NAME' => 'Y',
'DISPLAY_PICTURE' => 'Y',
'DISPLAY_PREVIEW_TEXT' => 'Y',
'AJAX_MODE' => 'Y',
'IBLOCK_TYPE' => 'news',
'IBLOCK_ID' => '3',
'NEWS_COUNT' => '20',
'SORT_BY1' => 'ACTIVE_FROM',
'SORT_ORDER1' => 'DESC',
'SORT_BY2' => 'SORT',
'SORT_ORDER2' => 'ASC',
'FILTER_NAME' => '',
'FIELD_CODE' => ['ID'],
'PROPERTY_CODE' => ['DESCRIPTION'],
'CHECK_DATES' => 'Y',
'DETAIL_URL' => '',
'PREVIEW_TRUNCATE_LEN' => '',
'ACTIVE_DATE_FORMAT' => 'd.m.Y',
'SET_TITLE' => 'Y',
'SET_BROWSER_TITLE' => 'Y',
'SET_META_KEYWORDS' => 'Y',
'SET_META_DESCRIPTION' => 'Y',
'SET_LAST_MODIFIED' => 'Y',
'INCLUDE_IBLOCK_INTO_CHAIN' => 'Y',
'ADD_SECTIONS_CHAIN' => 'Y',
'HIDE_LINK_WHEN_NO_DETAIL' => 'Y',
'PARENT_SECTION' => '',
'PARENT_SECTION_CODE' => '',
'INCLUDE_SUBSECTIONS' => 'Y',
'CACHE_TYPE' => 'A',
'CACHE_TIME' => '3600',
'CACHE_FILTER' => 'Y',
'CACHE_GROUPS' => 'Y',
'DISPLAY_TOP_PAGER' => 'Y',
'DISPLAY_BOTTOM_PAGER' => 'Y',
'PAGER_TITLE' => 'Новости',
'PAGER_SHOW_ALWAYS' => 'Y',
'PAGER_TEMPLATE' => '',
'PAGER_DESC_NUMBERING' => 'Y',
'PAGER_DESC_NUMBERING_CACHE_TIME' => '36000',
'PAGER_SHOW_ALL' => 'Y',
'PAGER_BASE_LINK_ENABLE' => 'Y',
'SET_STATUS_404' => 'Y',
'SHOW_404' => 'Y',
'MESSAGE_404' => '',
'PAGER_BASE_LINK' => '',
'PAGER_PARAMS_NAME' => 'arrPager',
'AJAX_OPTION_JUMP' => 'N',
'AJAX_OPTION_STYLE' => 'Y',
'AJAX_OPTION_HISTORY' => 'N',
'AJAX_OPTION_ADDITIONAL' => '',
]
);
Чтобы понять реальную конфигурацию этого компонента, разработчику приходится просматривать весь массив и искать среди десятков строк несколько действительно важных параметров:
'IBLOCK_TYPE' => 'news', 'IBLOCK_ID' => '3', 'NEWS_COUNT' => '20',
Остальные параметры могут быть нужны компоненту, но это ещё не означает, что их необходимо указывать при каждом вызове.
Такой код содержит много информационного шума. Он показывает не только то, как компонент используется на странице, но и почти всё, что компонент вообще умеет.
В результате по вызову сложно быстро определить:
- из какого инфоблока загружаются элементы;
- какой шаблон используется;
- какие свойства нужны шаблону;
- включена ли нестандартная сортировка;
- какие стандартные действия компонента были намеренно отключены;
- какие параметры действительно менялись разработчиком.
Чем больше лишних настроек находится в массиве, тем сложнее заметить важные.
Что такое минимально достаточная конфигурация
Минимально достаточная конфигурация — это набор параметров, который полностью описывает использование компонента в конкретном месте, но не дублирует все его стандартные настройки.
Например:
IncludeComponent(
'bitrix:news.list',
'item',
[
'IBLOCK_TYPE' => 'content',
'IBLOCK_ID' => 1,
'NEWS_COUNT' => 10,
'PROPERTY_CODE' => [
'PRICE',
'DURATION',
],
'CACHE_TYPE' => 'A',
'CACHE_TIME' => 3600,
'SET_TITLE' => 'N',
'INCLUDE_IBLOCK_INTO_CHAIN' => 'N',
'ADD_SECTIONS_CHAIN' => 'N',
],
false
);
В этом варианте сразу видно основную конфигурацию:
- используется компонент bitrix:news.list;
- подключён шаблон item;
- данные берутся из инфоблока типа content с ID 1;
- выводится не более десяти элементов;
- шаблону нужны свойства PRICE и DURATION;
- используется автоматический режим кеширования;
- компонент не должен менять заголовок страницы;
- инфоблок и разделы не добавляются в навигационную цепочку.
Чтобы понять назначение такого вызова, не нужно просматривать пятьдесят строк.
При этом компонент продолжит работать со всеми остальными параметрами. Просто для них будут использованы стандартные значения.
Значения по умолчанию — часть контракта компонента
Иногда отсутствие параметра воспринимается как незавершённая конфигурация. Кажется, что разработчик забыл его указать или не учёл какое-то поведение.
Но у стандартных компонентов 1С-Битрикс уже существуют значения по умолчанию. Они задаются в описании параметров или обрабатываются внутри компонента.
Неуказанный параметр не исчезает. Компонент всё равно получает определённое поведение.
Этот подход давно используется в PHP. Например:
function getItems(int $limit = 10): array
{
return [];
}
При вызове функции необязательно каждый раз явно передавать стандартное значение:
$items = getItems(10);
Если значение 10 уже установлено по умолчанию, достаточно написать:
$items = getItems();
Аргумент стоит передавать тогда, когда необходимо изменить стандартное поведение:
$items = getItems(50);
С компонентами можно работать по тому же принципу.
Если стандартное значение параметра подходит, его необязательно повторять. Если поведение нужно изменить или явно зафиксировать, параметр следует добавить в вызов.
Таким образом, отсутствие параметра может быть осознанным решением:
Мы не забыли указать настройку. Мы намеренно используем стандартное поведение компонента.
Код должен описывать конкретное использование компонента
Вызов компонента — это не справочник по всем его возможностям. Его задача — показать, как именно компонент настроен в данном разделе сайта.
Полный массив отвечает на вопрос:
Какие параметры вообще существуют у этого компонента?
Минимально достаточный массив отвечает на другой вопрос:
Что важно для работы этого компонента на текущей странице?
Для чтения и сопровождения проекта второй вопрос намного полезнее.
Разработчику обычно не нужно каждый раз видеть настройки AJAX-режима, параметры верхней и нижней пагинации, формат даты, параметры метатегов и пустые значения фильтров.
Ему нужно быстро понять особенности конкретного вызова.
Например, такая строка содержит полезную информацию:
'SET_TITLE' => 'N',
Она показывает, что компоненту намеренно запрещено менять заголовок страницы.
А такая строка зачастую не добавляет новой информации:
'AJAX_OPTION_ADDITIONAL' => '',
Пустое значение никак не помогает понять логику страницы. Оно лишь увеличивает массив.
Преимущества короткой конфигурации
Код быстрее читается
Основные параметры находятся перед глазами. Разработчику не приходится искать IBLOCK_ID, FILTER_NAME или PROPERTY_CODE среди нескольких десятков настроек.
Особенно это заметно в файлах, где подключается сразу несколько компонентов.
Лучше видны изменения стандартного поведения
Когда в массиве только значимые параметры, любая строка привлекает внимание.
Например:
'CHECK_DATES' => 'N',
Сразу понятно, что компонент должен выводить элементы независимо от ограничений по датам активности.
В полном массиве такая строка может затеряться среди других настроек.
Проще сопровождать проект
При доработке страницы разработчик быстрее понимает текущую конфигурацию и реже меняет параметры, не относящиеся к задаче.
Чем меньше лишнего кода, тем меньше область, которую необходимо анализировать.
Меньше бездумного копирования
Вызовы компонентов часто копируются с одной страницы на другую. Вместе с ними переносятся параметры, которые были важны только для исходной страницы.
Например:
'FILTER_NAME' => 'catalogFilter',
или:
'PAGER_BASE_LINK_ENABLE' => 'Y',
После копирования разработчик может забыть удалить эти настройки. В результате новый компонент получает ненужное или неожиданное поведение.
Минимальная конфигурация снижает количество подобных случайных зависимостей.
Уменьшается информационный шум
Большой объём кода не всегда означает большую определённость.
Если из пятидесяти параметров только семь имеют отношение к текущей задаче, остальные сорок три не делают код понятнее. Наоборот, они мешают увидеть главное.
Минимальная конфигурация не означает минимальное количество строк
Цель подхода — не сократить код любой ценой.
Следующий вызов действительно короткий:
IncludeComponent(
'bitrix:news.list',
'item',
[
'IBLOCK_ID' => 1,
]
);
Но его нельзя автоматически считать хорошим.
Из него непонятно:
- сколько элементов должно выводиться;
- какие свойства нужны шаблону;
- должен ли компонент менять заголовок;
- должно ли содержимое попадать в навигационную цепочку;
- какая стратегия кеширования ожидается;
- важен ли определённый порядок сортировки.
Минимально достаточная конфигурация — это не самый маленький возможный массив. Это массив, в котором нет лишних настроек, но присутствуют все значимые.
Нужно указывать не минимальное количество параметров, а минимально достаточное.
Какие параметры стоит указывать явно
Набор параметров зависит от конкретной задачи, однако можно выделить несколько основных категорий.
Источник данных
Обычно следует явно задавать:
'IBLOCK_TYPE' => 'content', 'IBLOCK_ID' => 1,
Эти параметры определяют, с какими данными работает компонент.
Даже если компонент теоретически может определить их другим способом, явное указание источника обычно делает код понятнее.
Количество элементов
'NEWS_COUNT' => 10,
Количество элементов часто является частью требований к блоку. Поэтому его стоит оставлять в конфигурации.
Сортировка
Если порядок элементов имеет значение, его лучше указать явно:
'SORT_BY1' => 'SORT', 'SORT_ORDER1' => 'ASC', 'SORT_BY2' => 'ID', 'SORT_ORDER2' => 'DESC',
Не следует полагаться на стандартную сортировку, если от неё зависит логика страницы.
Фильтрация
Если используется внешний фильтр:
'FILTER_NAME' => 'tourFilter',
это обязательно должно быть видно в вызове компонента.
Поля и свойства
В конфигурации стоит перечислять поля и свойства, которые необходимы шаблону:
'FIELD_CODE' => [
'ID',
'NAME',
'PREVIEW_PICTURE',
],
'PROPERTY_CODE' => [
'PRICE',
'DURATION',
],
Это помогает понять, какие данные использует шаблон, и не загружать лишние свойства без необходимости.
Кеширование
Параметры кеширования часто имеет смысл задавать явно:
'CACHE_TYPE' => 'A', 'CACHE_TIME' => 3600,
Кеширование влияет на производительность и актуальность данных, поэтому оно является важной частью поведения компонента.
Если в проекте для всех компонентов принят единый стандарт кеширования, некоторые параметры можно не повторять. Но решение должно быть осознанным и понятным команде.
Побочные эффекты компонента
Стандартные компоненты могут менять заголовок страницы, метатеги и навигационную цепочку.
Если компонент используется как небольшой блок внутри страницы, такое поведение часто нежелательно:
'SET_TITLE' => 'N', 'SET_BROWSER_TITLE' => 'N', 'SET_META_KEYWORDS' => 'N', 'SET_META_DESCRIPTION' => 'N', 'INCLUDE_IBLOCK_INTO_CHAIN' => 'N', 'ADD_SECTIONS_CHAIN' => 'N',
Необязательно добавлять все эти параметры в каждый вызов. Но те побочные эффекты, которые принципиально важно отключить, лучше обозначить явно.
Постраничная навигация
Параметры пагинации стоит добавлять только тогда, когда она действительно используется и её поведение отличается от стандартного:
'DISPLAY_BOTTOM_PAGER' => 'Y', 'PAGER_TEMPLATE' => 'load-more', 'PAGER_SHOW_ALWAYS' => 'N',
Если блок выводит пять элементов без навигации, нет смысла перечислять все доступные параметры пагинатора.
Обработка ошибок и 404
Для страниц разделов и детальных страниц могут быть важны параметры:
'SET_STATUS_404' => 'Y', 'SHOW_404' => 'Y',
Они влияют на HTTP-статус, SEO и поведение сайта при отсутствии данных. Такие параметры лучше не скрывать за неявными предположениями.
Когда значение по умолчанию лучше зафиксировать явно
Не каждый параметр, совпадающий со стандартным значением, нужно удалять.
Иногда явное значение выполняет роль документации и защищает важное поведение проекта.
Параметр отражает бизнес-правило
Например:
'CHECK_DATES' => 'Y',Если принципиально важно показывать только элементы, активные по датам, параметр можно оставить явно, даже если это стандартное поведение компонента.
Строка показывает намерение разработчика и требования проекта.
От параметра зависит безопасность или доступ
Например, настройка кеширования по группам пользователей:
'CACHE_GROUPS' => 'Y',Если содержимое зависит от прав доступа, этот параметр может быть критически важен. В таком случае лучше зафиксировать его явно.
Изменение значения по умолчанию может сломать страницу
Стандартные значения компонентов могут меняться после обновлений ядра или доработки собственного компонента.
Если проект зависит от конкретного поведения, его следует закрепить в конфигурации:
'INCLUDE_SUBSECTIONS' => 'N',Даже если сейчас это значение используется по умолчанию, явное указание защищает компонент от неожиданного изменения поведения.
Параметр объясняет неочевидное решение
Иногда строка нужна не только компоненту, но и разработчику:
'HIDE_LINK_WHEN_NO_DETAIL' => 'Y',Если шаблон выводит ссылки только при наличии детальной страницы, параметр помогает быстрее понять логику блока.
Главный критерий здесь — не совпадение со значением по умолчанию, а значимость для понимания и стабильности проекта.
Как узнать о параметрах, которых нет в вызове
Основное возражение против минимальной конфигурации обычно звучит так:
Если параметр не указан в массиве, как разработчик узнает, что он существует?Ответ достаточно простой: из документации.
Вызов компонента не должен заменять документацию компонента.
Если требуется добавить новую возможность, разработчик может посмотреть:
- официальную документацию 1С-Битрикс;
- файл .parameters.php стандартного или собственного компонента;
- код класса компонента;
- настройки компонента в визуальном редакторе;
- документацию проекта;
- параметры аналогичных вызовов в кодовой базе.
Полный массив в шаблоне страницы не является хорошей документацией.
Во-первых, он показывает только параметры, существовавшие в момент добавления компонента. После обновления ядра могут появиться новые настройки, но в старом вызове их не будет.
Во-вторых, значения в скопированном массиве могут быть устаревшими или ошибочными.
В-третьих, наличие параметра в коде ничего не объясняет без понимания его назначения.
Например:
'PAGER_DESC_NUMBERING_CACHE_TIME' => 36000,
Само присутствие строки не рассказывает разработчику, как работает обратная навигация и в каких случаях этот параметр нужен. Для этого всё равно придётся обратиться к документации.
Поэтому полезно разделять ответственность:
Документация описывает все возможности компонента, а вызов компонента — только его текущую конфигурацию.
А разве полный список не удобнее для будущих изменений?
Ещё один аргумент в пользу полного массива:
Если все параметры уже находятся перед глазами, нужную настройку можно быстро изменить.
На первый взгляд это удобно. Но стоит учитывать частоту двух действий:
- код читают регулярно;
- новый параметр добавляют сравнительно редко.
Получается, что ради редкого будущего изменения мы постоянно усложняем чтение и сопровождение файла.
Кроме того, наличие полного списка не гарантирует правильной настройки. Разработчику всё равно нужно узнать:
- какие значения поддерживает параметр;
- как он связан с другими настройками;
- влияет ли он на кеш;
- используется ли он выбранным шаблоном;
- актуален ли он для текущей версии компонента.
Поиск параметра в документации обычно занимает меньше времени, чем постоянный анализ перегруженных вызовов по всему проекту.
Не стоит ухудшать ежедневную читаемость кода ради гипотетического удобства будущей доработки.
Практические правила Bitrix Minimal
Подход можно свести к нескольким правилам.
1. Указывайте только значимые параметры
В вызове должны оставаться настройки, которые:
- определяют источник данных;
- меняют стандартное поведение;
- отражают бизнес-логику;
- необходимы шаблону;
- влияют на кеширование, безопасность или SEO;
- помогают понять назначение компонента.
2. Не копируйте результат визуального редактора без проверки
Визуальный редактор полезен для первоначальной настройки, но сгенерированный массив следует пересмотреть.
После добавления компонента можно:
- определить параметры, которые действительно были изменены;
- проверить важные значения по умолчанию;
- удалить пустые и незначимые настройки;
- привести код к стилю проекта;
- сгруппировать параметры по назначению.
3. Не передавайте пустые значения без необходимости
Такие строки обычно можно удалить:
'FILTER_NAME' => '', 'DETAIL_URL' => '', 'PARENT_SECTION' => '', 'PARENT_SECTION_CODE' => '', 'MESSAGE_404' => '', 'AJAX_OPTION_ADDITIONAL' => '',
Исключение — ситуации, когда пустая строка имеет особый смысл и отличается от отсутствующего параметра.
4. Порой группировка делает параметры более понятными
Даже короткий массив проще читать, если настройки сгруппированы:
[
// Источник данных
'IBLOCK_TYPE' => 'content',
'IBLOCK_ID' => 1,
// Выборка
'NEWS_COUNT' => 10,
'SORT_BY1' => 'SORT',
'SORT_ORDER1' => 'ASC',
// Данные для шаблона
'FIELD_CODE' => [
'NAME',
'PREVIEW_PICTURE',
],
'PROPERTY_CODE' => [
'PRICE',
],
// Кеширование
'CACHE_TYPE' => 'A',
'CACHE_TIME' => 3600,
// Поведение страницы
'SET_TITLE' => 'N',
'ADD_SECTIONS_CHAIN' => 'N',
]
Комментарии к каждой группе необязательны. В небольшом массиве логические блоки можно разделить пустыми строками.
5. Используйте современный синтаксис PHP
В новых проектах лучше использовать:
вместо короткого открывающего тега;[]вместоarray();- целые числа вместо строк там, где ожидаются числа;
- единый стиль кавычек;
- форматирование по PSR-12.
Например:
'IBLOCK_ID' => 1, 'NEWS_COUNT' => 10, 'CACHE_TIME' => 3600,
вместо:
'IBLOCK_ID' => '1', 'NEWS_COUNT' => '10', 'CACHE_TIME' => '3600',
Компоненты Битрикс часто корректно работают и со строками, однако типизированные значения точнее отражают смысл данных.
6. Проверяйте значение по умолчанию перед удалением
Не следует удалять параметры вслепую.
Перед сокращением массива нужно проверить:
- какое значение используется при отсутствии параметра;
- не меняет ли шаблон этот параметр;
- нет ли дополнительной обработки в result_modifier.php;
- не зависит ли от параметра кеш;
- не является ли значение частью требований страницы.
Bitrix Minimal — это осознанная конфигурация, а не механическое удаление строк.
7. Не используйте вызов как справочник
Полный перечень параметров должен находиться в документации, а не в каждом файле подключения компонента.
Если у собственного компонента сложная конфигурация, лучше подготовить отдельную документацию с описанием параметров, типов и значений по умолчанию.
Пример до и после
Рассмотрим перегруженный вариант:
IncludeComponent(
'bitrix:news.list',
'tour',
[
'DISPLAY_DATE' => 'Y',
'DISPLAY_NAME' => 'Y',
'DISPLAY_PICTURE' => 'Y',
'DISPLAY_PREVIEW_TEXT' => 'Y',
'IBLOCK_TYPE' => 'content',
'IBLOCK_ID' => '1',
'NEWS_COUNT' => '10',
'SORT_BY1' => 'ACTIVE_FROM',
'SORT_ORDER1' => 'DESC',
'SORT_BY2' => 'SORT',
'SORT_ORDER2' => 'ASC',
'FILTER_NAME' => '',
'FIELD_CODE' => [],
'PROPERTY_CODE' => [
'PRICE',
'DURATION',
],
'CHECK_DATES' => 'Y',
'DETAIL_URL' => '',
'ACTIVE_DATE_FORMAT' => 'd.m.Y',
'SET_TITLE' => 'N',
'SET_BROWSER_TITLE' => 'Y',
'SET_META_KEYWORDS' => 'Y',
'SET_META_DESCRIPTION' => 'Y',
'INCLUDE_IBLOCK_INTO_CHAIN' => 'N',
'ADD_SECTIONS_CHAIN' => 'N',
'PARENT_SECTION' => '',
'PARENT_SECTION_CODE' => '',
'INCLUDE_SUBSECTIONS' => 'Y',
'CACHE_TYPE' => 'A',
'CACHE_TIME' => '3600',
'CACHE_FILTER' => 'N',
'CACHE_GROUPS' => 'Y',
'DISPLAY_TOP_PAGER' => 'N',
'DISPLAY_BOTTOM_PAGER' => 'N',
'PAGER_TITLE' => 'Туры',
'PAGER_SHOW_ALWAYS' => 'N',
'PAGER_TEMPLATE' => '',
],
false
);
После проверки требований и значений по умолчанию вызов можно сократить:
IncludeComponent(
'bitrix:news.list',
'tour',
[
'IBLOCK_TYPE' => 'content',
'IBLOCK_ID' => 1,
'NEWS_COUNT' => 10,
'PROPERTY_CODE' => [
'PRICE',
'DURATION',
],
'CACHE_TYPE' => 'A',
'CACHE_TIME' => 3600,
'SET_TITLE' => 'N',
'INCLUDE_IBLOCK_INTO_CHAIN' => 'N',
'ADD_SECTIONS_CHAIN' => 'N',
],
false
);
Второй вариант заметно короче, но главное преимущество не в количестве строк.
Теперь каждая настройка несёт смысловую нагрузку. По вызову можно быстро понять источник данных, объём выборки, необходимые свойства, кеширование и влияние компонента на страницу.
Возможные недостатки подхода
У минимальной конфигурации есть не только преимущества.
Поведение может измениться после обновления
Если новая версия компонента изменит значение по умолчанию, вызов без явно указанного параметра может начать работать иначе.
Поэтому критически важные настройки следует фиксировать явно.
Не всегда очевидно, что было удалено намеренно
Другой разработчик может не знать, проверялось ли значение по умолчанию или параметр просто забыли добавить.
Эта проблема решается единым стандартом команды и код-ревью.
Для собственных компонентов нужна хорошая документация
Минималистичный вызов удобен только тогда, когда разработчик может быстро найти описание остальных параметров.
Если документации нет, компонент становится сложнее использовать.
Получается, что Bitrix Minimal предъявляет дополнительные требования не к вызову, а к качеству самого компонента и его документации.
Где провести границу
Универсального списка обязательных параметров не существует.
Для одного проекта достаточно указать только инфоблок и количество элементов. В другом проекте критически важны сортировка, права доступа, параметры кеширования, обработка 404 и навигационная цепочка.
Поэтому решение стоит принимать по следующему принципу:
Если удаление параметра затрудняет понимание логики или может изменить важное поведение, параметр следует оставить.
И наоборот:
Если параметр лишь повторяет стандартное значение и ничего не объясняет, его можно убрать.
Заключение
Хороший вызов компонента должен показывать не всё, что компонент умеет, а только то, как он используется в конкретном месте.
Полный список параметров полезен в документации и визуальном редакторе. В коде страницы он часто превращается в информационный шум.
Принцип минимально достаточной конфигурации помогает:
- быстрее читать код;
- лучше видеть нестандартное поведение;
- уменьшать количество случайных параметров;
- упрощать сопровождение;
- снижать риск бездумного копирования настроек;
- отделять конфигурацию от документации.
При этом подход не требует удалять все параметры со стандартными значениями. Важные настройки, бизнес-правила и критические особенности поведения стоит фиксировать явно.
Главная идея Bitrix Minimal выражается одной фразой:
Указывайте не все доступные параметры компонента, а все значимые параметры конкретного вызова.
Это не минимализм ради короткого кода. Это способ сделать конфигурацию компонента понятной, осознанной и удобной для сопровождения.