Santi via fpc-pascal said on Sat, 1 Jul 2023 10:22:48 +0200 >El 16/06/2023 a las 16:09, Mattias Gaertner via fpc-pascal escribió: >> On Fri, 16 Jun 2023 20:51:42 +0700 >> Hairy Pixels via fpc-pascal <fpc-pascal@lists.freepascal.org> wrote: >> >>>> On Jun 16, 2023, at 6:23 PM, Thomas Kurz via fpc-pascal >>>> <fpc-pascal@lists.freepascal.org> wrote:
>> 20 years ago there were some programmers, claiming a loop condition >> must only be at start or end, but not in the middle. >I mostly agree with that programmers. That's called structured >programming. "Break" and "continue" are in fact, a subset of GOTO I agree, although they're less damaging than goto, which I haven't used since 1982 using 6800 hex machine language, where I learned how much less damaging jump to subroutine and return from subroutine are than goto. >When you see a structure, a block, you know at the beginning (or end >of the block) the exit conditions. So you can skip the block and you >know the conditions after the block. It is very useful when you are >skimming the code or debugging. You don't have the investigate the >inner loop to see if there are hidden GOTOs. I agree, although there are some practical concerns, which you go on to mention... > >But, as any other golden rule, you must know when it makes sense to >ignore it. >I use the break, but only at the beginning of the loop. (or exit in >function/procedure) >And sometimes with deep nested loops, but, when I commit such crime, I >highlight it with neon lights in the comments. I tend to put continue statements at or near the top of the block, to summarily rule out some obvious irrelevant iterations without all sorts of if/then/else nesting. As a practical matter it's more readable and more maintainable. Also, when I'm in a rush, I'll do while(True) and then just put one or more breaks in the block, with the full intention of going back and doing it the right way, but then forget to. I apologize to the maintenance programmer who follows me, because this is bad practice. Sometimes I use breaks when the loop test condition would be so hairy as to be difficult to understand. This happens a lot when things get very stateful. But your post got me to thinking that maybe this is a symptom that I made a poor design. > >I really hate having the read the full code to guess whats happening. >Structured programming is your friend. Xactly! SteveT Steve Litt Autumn 2022 featured book: Thriving in Tough Times http://www.troubleshooters.com/bookstore/thrive.htm _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal