Совершенный assert() для всех языков программирования
...как ни смешно, но пострадали стоматологи: стало меньше зубовного скрежета!
Когда C/C++ разработчики переключаются на другие языки, им очень не хватает привычного механизма assert()/NDEBUG. Он, в некотором смысле, позволяет получить "идеальный" метод управления Debug/Release конфигурациями:

Как вы правильно поняли, в Release конфигурации строки кода между #ifndef NDEBUG и #endif полностью исчезают, и мы получаем идеальный билд. Но идентичного результата можно добиться и с помощью комментариев... (здесь должна была быть картинка, но вставить не получается)
Гмм.. Значит будет лишь краткий конспект статьи.
ОК, как ни странно, но это правда: я создал утилиту DebRel, полезную ВСЕМ языкам программирования! Комментарии специального вида (D0 - D9 и R0 - R9) позволяют минимальными усилиями добиться "идеального" управления Debug/Release конфигурациями:
Debug конфигурация дает нам всю необходимую диагностику! С различной глубиной.
В Release конфигурации нет никаких следов Debug-а! Ни байта.
А именно:
Конфигурация RN отменяет все остальные. Релиз -- эгоист!
Конфигурация DN оставляет лишь строки от D0 до DN. Вы задаете глубину отладки.
В общем, сразу читайте https://ders.by/arch/debrel/debrel.html Там есть подробности, исходники и сам debrel.exe.