Заменяем лишние 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; } // ... } хотя можно...

Хабр

Design by Contract на минималках: пишем assertions и улучшаем устойчивость на Go

Всем привет! Меня зовут Александр Иванов, я старший разработчик в YADRO, работаю над созданием средств управления элементами опорной сети и пишу на Go. Мы с командой разрабатываем продукт для сервисов сотовой связи — качество нашей работы влияет на пользовательский опыт тысяч людей. Поэтому часто мы ищем решения, как повысить устойчивость работы кода в продакшене. Об одном из таких решений я расскажу в этой статье. Design by Contract — подход к проектированию ПО, в котором взаимодействие компонентов системы основано на контрактах. Контракты описывают ожидания вызываемой и вызывающей функции и улучшают производительность кода.

https://habr.com/ru/companies/yadro/articles/888374/

#dbc #design_by_contract #defensive_programming #assertion #assert #продакшен #производительность

Design by Contract на минималках: пишем assertions и улучшаем устойчивость на Go

Всем привет! Меня зовут Александр Иванов, я старший разработчик в YADRO , работаю над созданием средств управления элементами опорной сети и пишу на Go. Мы с командой разрабатываем продукт для...

Хабр