assert(condition[, message]) patch

Derek Parnell derek at psych.ward
Wed May 31 15:25:44 PDT 2006


On Thu, 01 Jun 2006 04:38:50 +1000, Sean Kelly <sean at f4.ca> wrote:

> Walter Bright wrote:
>> braddr at puremagic.com wrote:
>>> I have been toying with D to bring myself up to speed and I found  
>>> myself writing
>>> a lot of unit tests, always a good thing.  In those unit tests I found  
>>> myself
>>> writing a lot of blocks like:
>>>
>>> if (cond)
>>> {
>>> writefln("some debugging output to make my life easier");
>>> assert(false);
>>> }
>>>
>>> I know many don't like unit tests to have output, but I do.
>>  Why not:
>>      assert(!cond); // some debugging output to make my life easier
>>  ? You'll need to go look at the source anyway when the assert trips,  
>> so what advantage is there to print the comment?
>
> Some applications ship with asserts left on, and the more information  
> the user has about why the application just halted the better.  As  
> others have noted, an optional message also allows state information to  
> be conveyed, which can be useful in the absence of a core dump.

And this is a deployment/development strategy that is flawed. It would be  
better to ship a product without asserts turned on, but if you have to  
show internal issues to a customer then don't use asserts - use exceptions  
or similar to do this at run time. Just use asserts for quality assurance  
prior to shipping.

For me, the golden rule with D is don't use asserts to report errors in  
production releases.



-- 
Derek Parnell
Melbourne, Australia



More information about the Digitalmars-d mailing list