else

// некая программная обработка этой ситуации

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

Встраивание такого рода проверок в код программы при ее разработке сокращает общее время отладки программы. Фактически, это отладка по ходу дела в противоположность единой монолитной фазе тестирования.

Использование assert. Используется assert достаточно прямолинейным образом: для проверки утверждений достаточно просто включить заголовок assert.h. Помните, что assert прерывает выполнение программы, поэтому оставлять его в скомпилированном коде не стоит. К счастью, этот механизм очень легко выключить — для этого надо просто определить символ NODEBUG прямо перед включением файла assert.h. »

Можно порекомендовать следующий образ действий: включая файл assert.h, сразу вставляйте закомментированную строку NODEBUG, чтобы не забыть своевременно дезавуировать assert. Это выглядит так:

// #define NODEBUG // для отключения assert раскомментировать #include <assert.h>

Используя эти две строки совместно, вы заодно дадите знать своим последователям, как отменить проверки инвариантов, не удаляя ничего из текста модуля.

Сняв комментарии с NODEBUG, вы можете не опасаться, что пропущен какой-либо вызов assert. А когда обнаружится ошибка или возникнет необходимость доработать программу, для разрешения утверждений достаточно будет поставить на NODEBUG комментарий и перекомпилировать программу.

Чтобы лучше понять возможности применения препроцессора для управления размещением отладочного кода, попробуйте вслед за автором assert создать аналогичное макроопределение. Тем самым вы приведете в порядок свой отладочный код.

Методы написания аккуратного отладочного кода

Многие программисты самой разной квалификации рассматривают написание отладочного кода практически как самую последнюю стадию разработки программ. Неизвестно, следствие ли это их мироощущения, или их так учили университеты и наставники.