From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fac41,9a0ff0bffdf63657 X-Google-Attributes: gidfac41,public X-Google-Thread: 103376,4b06f8f15f01a568 X-Google-Attributes: gid103376,public X-Google-Thread: f43e6,9a0ff0bffdf63657 X-Google-Attributes: gidf43e6,public X-Google-Thread: 1108a1,9a0ff0bffdf63657 X-Google-Attributes: gid1108a1,public From: "Mattias Lundstr�m" Subject: Re: Software landmines (loops) Date: 1998/08/31 Message-ID: <35EAB5B1.1DA1986B@ehpt.com>#1/1 X-Deja-AN: 386444132 Content-Transfer-Encoding: 7bit References: <902934874.2099.0.nnrp-10.c246a717@news.demon.co.uk> <6r1glm$bvh$1@nnrp1.dejanews.com> <6r9f8h$jtm$1@nnrp1.dejanews.com> <6renh8$ga7$1@nnrp1.dejanews.com> <6rf59b$2ud$1@nnrp1.dejanews.com> <6rfra4$rul$1@nnrp1.dejanews.com> <35DBDD24.D003404D@calfp.co.uk> <6sbuod$fra$1@hirame.wwa.com> <35f51e53.48044143@ <904556531.666222@miso.it.uq.edu.au> Organization: Ericsson HP X-Priority: 3 (Normal) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 Newsgroups: comp.lang.eiffel,comp.object,comp.software-eng,comp.lang.ada Date: 1998-08-31T00:00:00+00:00 List-Id: Andrew Hussey wrote: > > In Matthew Heaney writes: > >Using an exit from the middle avoids the headaches (literally) > >engendered by using an extra flag in the predicate. When you want to > >exit, you just say that you want to exit, directly. No mental > >gymnastics are required in order to determine whether you'll "really" > >exit, as would be the case using the flag approach. > > That's brilliant, now your code is much easier to write! > Now let's see who has an easier time *testing* their code. > I think you'll find the control-flow errors you introduce > in the spaghetti you produce will more than make up for > any gain you have from rapid coding. I just have to butt in here. Why would this code become harder to test? If we take a simple example (more or less C++) 1. Flag solution while( ... && retval == OK ) { ... if( ... ) retval = NOT_OK; } return retval; vs 2. Multiple exits while( ... ) { ... if( ... ) return NOT_OK; } return OK; the control flow is basically the same (the same number of paths functionally identical) so the number and nature of tests that are needed have not been affected. Personally I prefer the second version in many cases since I believe it is normally easier to write as well as understand. (Specifically the exceptional exits are handled in this way (with return codes) in our projects). (Ie The maintenance argument - that the second code version becomes harder to read and understand (and thus maintain) - since the return statement may well not be obvious if there is a lot of other code within the loop. I do not agree with this, but it is certainly an argument worth considering. IMHO This should be covered by good comments where applicable.) - Mattias