checkedint call removal
    Daniel Gibson via Digitalmars-d 
    digitalmars-d at puremagic.com
       
    Fri Aug  1 07:09:31 PDT 2014
    
    
  
Am 01.08.2014 05:27, schrieb Walter Bright:
> On 7/31/2014 1:11 PM, Daniel Gibson wrote:
>> I guess in many cases I'd avoid using assert() in fear of breaking my
>> defensively written program (like that example from earlier: assert(x
>> !is null);
>> if(x) { x.foo = 42; }).
>
> I just hang my head in my hands at that code :-)
>
> Really, you're much better off writing something like:
>
>     if (x) {
>        x.foo = 42;
>     }
>     else {
>        writeln("Sack the QA dept. for not testing this code");
>        abort();
>     }
>
> which expresses what you intend directly and would be perfectly fine.
>
Not exactly - in release mode I don't want it to abort.
But it could be rewritten as
if(check(x != null, "Sack the QA dept. for not testing this code")) {
     x.foo = 42;
}
where check throws in debug mode and returns false in release mode if 
the condition fails.
I just never considered assert() to have the meaning you're giving it, 
even though maybe it was always considered to be like that but just not 
implemented "properly" by common languages. I wrote a bit more about 
this in another reply.
Cheers,
Daniel
    
    
More information about the Digitalmars-d
mailing list