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: Ole-Hjalmar Kristensen Subject: Re: Software landmines (loops) Date: 1998/09/03 Message-ID: #1/1 X-Deja-AN: 387420592 X-NNTP-Posting-Host: fwall.clustra.com Sender: ohk@maestro.clustra.com References: <6rfra4$rul$1@nnrp1.dejanews.com> <35DBDD24.D003404D@calfp.co.uk> <6sbuod$fra$1@hirame.wwa.com> <904556531.666222@miso.it.uq.edu.au> <6sgror$je8$3@news.indigo.ie> <6sh3qn$9p2$1@hirame.wwa.com> <6simjo$jnh$1@hirame.wwa.com> <6sjk3p$4tc$1@hirame.wwa.com> Newsgroups: comp.lang.eiffel,comp.object,comp.software-eng,comp.lang.ada X-Complaints-To: abuse@telia.no Date: 1998-09-03T00:00:00+00:00 List-Id: Patrick Logan writes: > In comp.object Matthew Heaney wrote: > : "Robert Martin" writes: > > : > >So it's the structured approach which causes the redundancy, becuase Get > : > >must be called twice. > : > > : > Consider: > : > > : > do { > : > Get(N); > : > if (N) > : > > : > } while (N); > : > > : > Structured programming allows the loop condition to be either at the top or > : > the bottom. > > : The thing I dislike about the above code fragment is that N gets tested > : twice. > > If you memoize the result of the first test, then the second test is > about as fast as can be... > > boolean test; > ... > do { > ... > test = N; > if (test) > ... > } while (test); > > This does not add a new state to a decision table. It provides a > mnemonic for the test condition. The redundant test is minimal > compared to the other work in the loop, not to mention the rest of the > application. If you are writing small methods anyway, then it is very > clear what is occurring. > > -- > Patrick Logan (H) mailto:plogan@teleport.com > (W) mailto:patrickl@gemstone.com > http://www.gemstone.com If you believe that this assingnment makes the second test faster in the general case, you are very wrong. It may even make the loop slower, depending on the optimizer. I've had this happen to me more than once. I have to side with the middle exit guys in this case. One of the reasons why I like the Ada loop construct.