HDA как библиотека: почему модульность важнее универсальности
Вы уже умеете создавать HDA. Скорее всего, у вас есть набор
инструментов, которые кочуют из проекта в проект. И, скорее всего, один из них
со временем превратился в «черный ящик», который страшно открывать.
инструментов, которые кочуют из проекта в проект. И, скорее всего, один из них
со временем превратился в «черный ящик», который страшно открывать.
Это не ошибка новичка — это естественный рост инструмента
вместе с задачами.
Но в какой-то момент такой HDA перестает быть инструментом и становится риском
для всего пайплайна.
вместе с задачами.
Но в какой-то момент такой HDA перестает быть инструментом и становится риском
для всего пайплайна.
Как инструмент теряет форму
Все начинается прозрачно: одна задача — один вход — понятные
параметры.
Но приходит новый проект, и вы добавляете toggle. Потом еще один. Потом ветку
для «уникального» случая, который внезапно повторяется снова и снова.
параметры.
Но приходит новый проект, и вы добавляете toggle. Потом еще один. Потом ветку
для «уникального» случая, который внезапно повторяется снова и снова.
Итог через год:
- 40+ параметров в интерфейсе
- половина из них работает только при определенных комбинациях
- документации нет
- внутренняя логика — «спагетти» из нод и условий
Главный симптом: вы боитесь менять логику, потому что не
знаете, где всё «посыплется».
знаете, где всё «посыплется».
Когда пора дробить?
Разделение — это не рефакторинг ради красоты. Это вопрос
выживаемости инструмента.
выживаемости инструмента.
Есть простой сигнал: если вы боитесь открыть свой HDA — он уже слишком большой.
Еще несколько признаков:
- дебаг занимает часы вместо минут
- часть логики можно использовать отдельно, но она «зашита» внутрь
- никто кроме вас не понимает, как это работает
Если внутри HDA есть логика, которая полезна сама по себе —
она заслуживает отдельного инструмента.
она заслуживает отдельного инструмента.
Проверка на «глагол»
Попробуйте описать задачу инструмента одним глаголом:
- «Скаттерит точки» — отлично
- «Скаттерит, группирует и готовит под инстансинг» — это уже три разных инструмента
Если в описании больше одного действия — у вас не
инструмент, а мини-пайплайн внутри HDA.
инструмент, а мини-пайплайн внутри HDA.
Практический профит: забор vs дорога
Представьте HDA процедурного забора. Он генерирует столбы,
расставляет секции и — самое важное — адаптирует их под рельеф.
расставляет секции и — самое важное — адаптирует их под рельеф.
В следующем проекте вам нужно адаптировать под рельеф
дорогу.
дорогу.
Если логика «зашита» в забор: вы копируете куски нод вручную. Через месяц у вас два разных варианта одного и
того же алгоритма, которые нужно поддерживать отдельно.
того же алгоритма, которые нужно поддерживать отдельно.
hda