Skip to content

Latest commit

 

History

History
175 lines (97 loc) · 10.3 KB

File metadata and controls

175 lines (97 loc) · 10.3 KB

Карта архитектурных признаков

Производный файл — источник истины signs-map.json. Правки вносить туда, эту страницу перегенерировать: node tools/gen-signs-map-md.mjs.

Признак — это симптом, а не диагноз. Он говорит «здесь стоит присмотреться», а не «здесь ошибка»: у каждого есть контр-сигнал — законная форма, в которой это не дефект.

Тексты принципов здесь не хранятся — запрашиваются по URL через MCP v8std.

Порядок работы с каждым признаком: измерить сигнал → проверить контр-сигнал → запросить принцип по ссылке → сформулировать целевую структуру. Ложноположительная архитектурная находка дороже пропущенной, поэтому контр-сигнал проверяется всегда.

ARCH-A1 · Модуль-комбайн

Сигнал: экспортные методы кластеризуются по несвязанным предметным группам

Порог: >=3 несвязанные группы ИЛИ вызывающие из >=3 подсистем

Контр-сигнал (когда это НЕ дефект): фасад подсистемы: >=80% экспортов — делегирования в 5 строк или короче

Требует индекс кода: без графа вызовов признак не проверяется — это skipped, а не «чисто».

Принципы:

Стандарты: #std440

ARCH-A2 · Ветвление вместо полиморфизма

Сигнал: цепочка ИначеЕсли по типу значения или строковому коду

Порог: >=4 ветви ИЛИ 2 цепочки по одному признаку

Контр-сигнал (когда это НЕ дефект): единственный метод-диспетчер с однострочными делегированиями — в 1С это и есть полиморфизм

Принципы:

ARCH-A3 · Дубль-алгоритм, форк-парсер

Сигнал: >=2 метода одинаковой структуры, различие только в литералах

Порог: 2 копии — сигнал, 3 — нарушение

Контр-сигнал (когда это НЕ дефект): форма входа доказуемо не выражается общим дескриптором

Принципы:

Стандарты: #std440

ARCH-A4 · Параллельная коллекция вместо поля в носителе

Сигнал: результаты цикла собираются в Соответствие и связываются обратно по ключу из исходной коллекции

Порог: наличие пары «сбор + обратное связывание»

Контр-сигнал (когда это НЕ дефект): связываются наборы из разных источников, и объединение в один носитель невозможно

Принципы:

ARCH-A5 · Перекладка локальных переменных

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

Порог: >=4 звена

Контр-сигнал (когда это НЕ дефект): шаги содержательно различны и каждый ветвится по-своему

Принципы:

Стандарты: #std453

ARCH-A6 · Инлайн-конструирование контракта

Сигнал: >=4 подряд Вставить в структуру, которая возвращается из экспортной функции

Порог: >=4 вставок плюс возврат структуры

Контр-сигнал (когда это НЕ дефект): одноразовая локальная структура на 1-2 поля внутри приватного метода

Принципы:

ARCH-A7 · Дублирующая валидация

Сигнал: одна и та же проверка заполненности или типа у вызывающего и внутри вызываемого

Порог: 2 уровня проверки одного значения

Контр-сигнал (когда это НЕ дефект): вызываемый метод экспортный и имеет несколько независимых вызывающих

Требует индекс кода: без графа вызовов признак не проверяется — это skipped, а не «чисто».

Принципы:

ARCH-A8 · Инфраструктура в прикладном коде

Сигнал: HTTP-соединение, внешняя компонента или COM-объект прямо в модуле объекта либо формы

Порог: любое вхождение

Контр-сигнал (когда это НЕ дефект): одноразовая служебная обработка без прикладной логики

Принципы:

ARCH-A9 · Экспорт без потребителей

Сигнал: экспортный метод, у которого не найдено ни вызывающих, ни триггеров

Порог: нет точных вызывающих И нет триггеров

Контр-сигнал (когда это НЕ дефект): ВАЖНО: в 1С экспорт вызывается из XML (подписки, команды, регламентные задания, настройки библиотек), из расширений и внешних обработок — без проверки триггеров находка не выводится вообще

Требует индекс кода: без графа вызовов признак не проверяется — это skipped, а не «чисто».

Принципы:

ARCH-A10 · Переусложнение, преждевременная гибкость

Сигнал: механизм расширяемости с единственной реализацией; абстракция без второй точки изменения

Порог: 1 реализация

Контр-сигнал (когда это НЕ дефект): вторая реализация уже спроектирована и запланирована в этой же задаче

Принципы:

ARCH-A11 · Проверки по обе стороны вопроса пользователю

Сигнал: в цепочке одного действия пользователя проверки выполняются и до асинхронного диалога, и после ответа

Порог: >=1 проверка после ответа пользователя, вход которой был доступен до вопроса

Контр-сигнал (когда это НЕ дефект): после ответа данные перечитываются под блокировкой перед необратимой операцией; либо вход проверки появляется только из самого ответа пользователя

Требует индекс кода: без графа вызовов признак не проверяется — это skipped, а не «чисто».

Принципы:

Стандарты: #std487, #std636, #std629