Раньше у меня была функция отладки, которая выводила бы только финальную строку, только если был установлен флаг. Теперь я предпочитаю просто добавить if
операторов:
- они не намного длиннее
- ничего не вычисляется, если условие ложно
- при чтении кода легко увидеть, что это только для отладки
Раньше у меня также были макросы camlp4, которые генерировали бы операторы if
из функций-приложений, но это работает только в проектах, где используется camlp4, которых я стараюсь избегать в настоящее время.
Обратите внимание, что обычно я использую не один флаг отладки, а множество флагов отладки, по одному на модуль, а затем метатеги, которые запускают отладку нескольких модулей или ортогональных аспектов. Они помещаются в хеш-таблицу в виде списка флагов, и я могу установить их с помощью аргумента или переменной среды.