Правило кластерного индекса
Целеполагание: сделать код легкочитаемым.
Формулировка правила
Везде, где каким-либо образом задействован перечень строковых величин, они должны располагаться в алфавитном порядке.
Раскроем целеполагание. Для понимания необходимости данного правила достаточно посмотреть на пример в листинге 3.7.
Листинг 3.7. Неупорядоченная куча литералов
ПараметрыОткрытия = Новый Структура("Ссылка,Комментарий,Наименование,
|Ответственный,ПоУмолчанию,ПометкаУдаления,
|НавигационнаяСсылкаНаУсловие,
|Порядок,ГруппаТомов,ПредставлениеУсловия,
|УникальныйИдентификаторФормыРодителя,
|ЕстьПравилоПоУмолчанию");
Теперь читателю предлагается простое упражнение — засеките на секундомере, сколько времени вам потребуется, чтобы посредством лишь пристального взгляда определить, содержит ли описанная структура свойство ГруппаТомов. А теперь предлагается повторить это же упражнение на листинге 3.8 и сравнить показатели.
Листинг 3.8. Упорядоченный по алфавиту массив литералов
ПараметрыОткрытия = Новый Структура("ГруппаТомов,ЕстьПравилоПоУмолчанию,
|Комментарий,НавигационнаяСсылкаНаУсловие,
|Наименование,Ответственный,ПометкаУдаления,
|Порядок,ПоУмолчанию,ПредставлениеУсловия,
|Ссылка,УникальныйИдентификаторФормыРодителя");
Не будем приводить классическое определение кластерного индекса. Достаточно элементарного общечеловеческого примера: во всех словарях и энциклопедиях статьи расположены в алфавитном порядке. То есть индекс (элемент механики быстрого поиска) не хранится где-то отдельно, а заключается внутри хранимых данных, точнее, в их взаимном расположении.
При разработке программного кода правило кластерного индекса должно применяться ко всем ситуациям, где только возможно:
при перечислении свойств и колонок, для объектов и реквизитов в дереве метаданных и даже для методов внутри области модуля (да, это жестко, но нет лучшего способа дисциплинировать ум, чем следование таким вот жестким правилам).
Если же не придерживаться этого правила, чтение кода частенько обрастает дополнительной паразитической геймификацией в стиле детской игры «Найди Вальдо».
Исключение из правила: те немногие ситуации, когда порядок объектов, реквизитов или литералов оказывает непосредственное влияние на бизнес-логику программного кода. Например, порядок следования измерений регистра. Менее удачный пример см. в «Кофе-паузе #4» (перечисление «Месяц года») в главе 2.
Сухой остаток: если что-то внутри кода можно отсортировать по алфавиту, новый элемент необходимо сразу размещать в правильном месте. И никак иначе.
Путь 1С-разработки. Не спеша, эффективно и правильно
·
Зайцев Н.В.