When should assertions stay in production code?

Posted by Carl Seleborg on Stack Overflow See other posts from Stack Overflow or by Carl Seleborg
Published on 2008-08-20T11:01:19Z Indexed on 2010/05/19 23:00 UTC
Read the original article Hit count: 448

Filed under:
|
|

Hi all,

There's a discussion going on over at comp.lang.c++.moderated about whether or not assertions, which in C++ only exist in debug builds by default, should be kept in production code or not.

Obviously, each project is unique, so my question here is not so much whether assertions should be kept, but in which cases this is recommendable/not a good idea.

By assertion, I mean:

  • A run-time check that tests a condition which, when false, reveals a bug in the software.
  • A mechanism by which the program is halted (maybe after really minimal clean-up work).

I'm not necessarily talking about C or C++.

My own opinion is that if you're the programmer, but don't own the data (which is the case with most commercial desktop applications), you should keep them on, because a failing asssertion shows a bug, and you should not go on with a bug, with the risk of corrupting the user's data. This forces you to test strongly before you ship, and makes bugs more visible, thus easier to spot and fix.

What's your opinion/experience?

Cheers,

Carl

See related question here

© Stack Overflow or respective owner

Related posts about bugs

Related posts about quality