«Не предполагай, утверждай»

Хотел бы я раньше в своей карьере понять, насколько полезны утверждения. Это не будет большой новостью для большинства программистов, но по какой-то причине это никогда не было привычкой, пока я не начал программировать на C++.

Всегда пишите утверждения в коде. Будь то аргументы функции или предварительные условия, утверждения сделают ваш код более явным, самодокументируемым и более легким для отладки.

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

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

Обычно полезно иметь возможность передать строку сообщения, которая будет напечатана для описания проблемы, если только ваш компилятор или интерпретатор не может напечатать код для условия, которое не было выполнено.

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