Impressed

Regan Heath regan at netmail.co.nz
Fri Jul 27 07:28:00 PDT 2012


On Fri, 27 Jul 2012 15:09:14 +0100, Kagamin <spam at here.lot> wrote:

> On Friday, 27 July 2012 at 14:03:05 UTC, Marco Leise wrote:
>> Also when I have a sequence of steps to be done and some steps may jump  
>> back a few steps, I prefer labels with good names + goto, over blocks  
>> of for/while/if, which distract from the sequential nature of the code.
>
> Huh, but such code is not sequential, it's spaghetti.

Spaghetti goes in many directions, the code above always flows downhill  
but sometimes jumps/loops back up.  As long as the jumps are in one  
direction and not both, it's typically easy enough to follow.

IMO, goto is a tool like any other, in the wrong hands it can make bad  
code, in the right hands, used sparingly and only when it makes code  
easier to follow it's the right tool and avoiding it due to dogma is just  
plain silly.

My main use in the past has been to jump to clean up code, which is not  
always necessary with D as we have finally and scope(exit).

If I have the choice between a loop construct which only ever executes  
once with 'break' to simulate goto vs using goto, I will chose the latter  
because it's clearer what the intent of the code is, it actually makes the  
code cleaner and easier to follow.

I tend to code in the style of check for error and fail/return/exit vs  
layered scopes (if inside if inside if ..) because the flatter the code  
the easier I find it to reason about code paths and logic, goto can help  
to keep a piece of code flat and make it easier to reason about.

I almost always use goto to jump down a function, and almost never up.   
Loop constructs are with 'continue' are a better match for the latter.

R

-- 
Using Opera's revolutionary email client: http://www.opera.com/mail/


More information about the Digitalmars-d mailing list