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: 1108a1,9a0ff0bffdf63657 X-Google-Attributes: gid1108a1,public X-Google-Thread: f43e6,9a0ff0bffdf63657 X-Google-Attributes: gidf43e6,public From: "Robert Martin" Subject: Re: Software landmines (loops) Date: 1998/09/01 Message-ID: <6siijm$h1m$1@hirame.wwa.com>#1/1 X-Deja-AN: 387020011 References: <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@news.erols.com> <6sdiav$e0g$1@hirame.wwa.com> <6sfcft$70p$1@hirame.wwa.com> <6shp40$ec8$1@nnrp1.dejanews.com> <6sie46$eb7$1@hirame.wwa.com> X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2106.4 Organization: WorldWide Access - Midwestern Internet Services - www.wwa.com Newsgroups: comp.lang.eiffel,comp.object,comp.software-eng,comp.lang.ada Date: 1998-09-01T00:00:00+00:00 List-Id: Ell wrote in message ... >In comp.object Robert Martin wrote: > >: Phil Goodwin wrote in message <6shp40$ec8$1@nnrp1.dejanews.com>... >:>In article <6sfcft$70p$1@hirame.wwa.com>, >:> "Robert Martin" wrote: >:>> >:>> Stephen Leake wrote in message ... >:>> >One entry, one exit. Perfectly clear. There's nothing magic about >:>> >putting the exit statement at the top or the bottom! >:>> >:>> In fact there is. If the exit condition is at the top or the bottom, >: then >:>> the body of the loop will always be excuted an exact integral number of >:>> times. However if the loop condition is in the middle, then the loop >: body >:>> will be executed a fractional number of times. >:> >:>So what? > > >: So... I can guarantee that any line of code placed at the end of the loop >: body will be executed for each iteration of the loop. > >Maybe, juuussst maybe, you like many of the rest of us might be able to >design the loop so that "any line of code placed at the end of loop" >doesn't matter if the exit/return occurs before the end of the loop? Lets just say, for grins, that I must make a change to the loop. For some odd reason I must count the number of times that the loop body completes. Where do I put the code that does this counting? I'd like to make it the last line of the loop. But if there are early exits, then I must find each and every early exit and add the code just before they exit. Of course, later, someone else will make a change that forces yet another early exit. They find where to add the early exit, but they must remember to bump the counter before they exit. Of course later on, someone asks us to sieze and release a mutex for each iteration of the loop. We'd like to put the seize as the first line of the loop body, and the release as the last line of the loop body. But if there are early exits, then we must put a release before every exit. Of course later on someone adds yet another early exit to the loop, and must remember to bump the counter and release the mutex. .... Has anybody out there ever had an experience like this? Robert C. Martin | Design Consulting | Training courses offered: Object Mentor | rmartin@oma.com | Object Oriented Design 14619 N Somerset Cr | Tel: (800) 338-6716 | C++ Green Oaks IL 60048 | Fax: (847) 918-1023 | http://www.oma.com "One of the great commandments of science is: 'Mistrust arguments from authority.'" -- Carl Sagan