03 / РУКОВОДСТВА
Форматируйте и проверяйте JSON до ревью
Процедура ревьюера для нагрузок API и конфигурационных файлов: сначала форматирование, проверка структуры как дерева и детерминированное сравнение двух документов — без отправки данных куда-либо.
Почему форматирование идёт первым
Минифицированный JSON создан для машин: одна строка, без отступов, ключи в том порядке, какой выдал сериализатор. Заставить глаза ревьюить эту стену — значит позволить удалённому разрешению, перевёрнутому флагу или неожиданному эндпоинту проскользнуть.
Принтер форматирования — ещё и самая дешёвая проверка валидности из доступных. Документ, который не парсится, и в продакшене не заработал бы, а узнать об этом во вкладке ревью куда лучше, чем из журнала деплоя.
- Только читаемостьФорматирование — преобразование читаемости: оно меняет пробелы и переносы строк, но никогда данные, поэтому отформатированную копию всегда безопасно сверять с оригиналом.
- Глубина — сигналЕдинообразные отступы мгновенно показывают глубину вложенности, а глубина — то место, где прячутся ошибки конфигурации: опция, лежащая на уровень глубже, просто игнорируется.
- Поставляйте ожидаемую формуРевьюьте отформатированную копию, но поставляйте ту форму, которую ждёт система: pretty-printing — для людей, а не для сети.
Осматривайте дерево, а не только текст
Древовидное представление отвечает на вопросы, которые ревьюер реально задаёт, — какие есть ключи, какого типа каждое значение, насколько глубока структура, — без подсчёта скобок. Сырой текст ни на один из них быстро не отвечает.
JSON Tree Viewer парсит явно: ничего не отображается, пока вы не нажмёте Parse JSON, а невалидный ввод получает ошибку с позицией и подсказкой по исправлению вместо молчаливого отказа. Результат открывается раскрывающимся деревом с типами и счётчиками по узлам, а вкладка Formatted показывает нормализованный документ с выбранным вами отступом.
Сводка парсинга сообщает число узлов и максимальную глубину — быстрая проверка на здравомыслие против того, что нагрузка должна содержать. Зарезервированные ключи прототипа отклоняются, поэтому враждебная нагрузка не сможет притвориться безобидной, пока вы её осматриваете.
Дерево упрощает и разговор на ревью: «у третьего элемента items цена равна null» — комментарий, который любой проверит за секунды, а байтовое смещение в минифицированной строке — нет.
Открыть JSON Tree ViewerСравнивайте два документа детерминированно
Сравнение двух JSON глазами ломается, как только меняется порядок ключей. Структурный diff парсит обе стороны и сообщает, что действительно изменилось, — добавленные, удалённые и изменённые значения — независимо от порядка и пробелов.
Text & JSON Diff предлагает три режима: строки, символы и JSON. JSON-режим — детерминированный для ревью: оба документа парсятся, а затем сравниваются значение за значением, поэтому переставленные ключи и переформатированные пробелы корректно признаются идентичными.
Для не-JSON текста режимы строк и символов включают переключатели игнорирования пробелов и нормализации переносов строк, а сводка считает добавления, удаления и изменения. Используйте JSON-режим для нагрузок и конфигурации; переходите в режим строк, когда одна из сторон вообще не является валидным JSON.
Детерминизм важен не только удобством. Когда два ревьюера запускают одно и то же сравнение, они должны получить один и тот же ответ — иначе ревью превращается в торг об инструментах вместо решения об изменении.
Открыть Text & JSON DiffЗнайте пределы локальных сред
Это локальные среды с явными потолками, рассчитанные на нагрузки ревью, а не на массовую обработку данных. Зная потолок, вы понимаете, когда пора взять настольный инструмент.
Потолки существуют потому, что парсинг и diff работают в той же вкладке, где вы читаете; честный предел лучше зависшей страницы, а пространство сообщает о превышении явной ошибкой, а не молчаливым усечением.
- Потолок просмотрщикаJSON Tree Viewer принимает до 256 КиБ ввода, сорок уровней вложенности и десять тысяч узлов — с запасом хватает для ответа API или конфигурационного файла.
- Потолок diffText & JSON Diff сравнивает до 256 КиБ с каждой стороны и сообщает не более десяти тысяч записей различий, после чего объявляет сравнение слишком сложным.
- За пределами браузераБолее крупные выгрузки — дампы баз данных, архивы журналов, сгенерированные фикстуры — территория настольного редактора или консольного инструмента, а не вкладки браузера.
Пятиминутный чек-лист ревью
Короткая процедура, которая ловит большинство проблем нагрузок до их попадания в продакшен.
Прогоняйте чек-лист и на образцовых данных производителя, и на живой нагрузке; фикстура, расходящаяся с реальностью, обесценивает ревью так же надёжно, как и баг.
- ПарсингСначала отформатируйте и распарсьте: убедитесь, что документ валиден, и бегло сверьте число узлов и глубину с ожиданиями.
- ОсмотрОсмотрите дерево: проверьте типы в листьях — числовой идентификатор, пришедший строкой, классическая ошибка интеграции.
- DiffСравните с последней известно-рабочей версией в JSON-режиме и прочитайте каждое сообщённое изменение до одобрения.
Оставьте нагрузку на своём устройстве
Нагрузки ревью часто содержат записи клиентов, токены или внутренние URL. Локальный просмотрщик держит этот материал во вкладке: текст парсится кодом, работающим на вашем устройстве, и никогда не передаётся в рамках операции.
Именно эта граница позволяет использовать эти инструменты с настоящими стейджинг-нагрузками во время ревью. Она не снимает ваших собственных обязательств: скачанные экспорты, содержимое буфера обмена и скриншоты дерева остаются в вашей ответственности и после выхода из пространства.
Если фрагмент нагрузки всё же нужно показать в ревью, вставьте минимальный фрагмент, демонстрирующий проблему, и сначала зачищайте идентификаторы — та же дисциплина, которую просят каналы поддержки.
Почему локальная проверка — правдоподобное заявление.
Узнайте, как браузерные среды держат данные на устройстве, и как проверить путь данных любого инструмента, которым вы ревьюите.