При разработке большого проекта программирования на С++ со многими разработчиками мы столкнулись с проблемами с ненадлежащим использованием assert() в коде, что приводит к низкому качеству, когда утверждение действительно происходит, и продукт выходит из строя.
Вопрос в том, какие хорошие принципы применимы для использования assert() соответственно? Когда правильно использовать assert(), а когда нет? Есть ли список критериев, которые должны пройти каждое утверждение, чтобы быть законными? Как мы можем поощрять правильное использование assert()?
В качестве первой трещины в этом я бы сказал, что assert() следует использовать только для документирования условия, которое, как считается, невозможно достичь, и которое должно быть идентифицировано как отказ assert() во время выполнения, когда оно когда-либо возникают из-за нарушения программных допущений.
Могут ли люди сделать это лучше? Каков ваш опыт работы с assert()?