Заменяем лишние if-проверки на assert для инвариантов кода в C/C++

Многие разработчики привыкли везде ставить if-проверки, даже для условий, гарантированных кодом. Зачем проверять то, что не может нарушиться? Такие проверки создают шум в коде и мусор в релизе. Assert решает эту проблему: документирует допущения и исчезает из финальной сборки. В статье покажу все преимущества assert'ов и предостерегу от подводных камней их использования.

https://habr.com/ru/articles/962668/

#C++ #C #assert #инварианты #ifelse #NDEBUG #Design_by_Contract #код_как_документация

Заменяем лишние if-проверки на assert для инвариантов кода в C/C++

В коде часто встречаются проверки вида: void process(Config* config) { if (config == nullptr) { // Но config создается в этом же модуле! log_error("Config is null"); return; } // ... } хотя можно...

Хабр