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: Tim Ottinger Subject: Re: Software landmines (loops) Date: 1998/09/01 Message-ID: <35EBF28B.FD4F38EC@oma.com>#1/1 X-Deja-AN: 386792883 Content-Transfer-Encoding: 7bit References: <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@news.erols.com> <6sdiav$e0g$1@hirame.wwa.com> <6sfcft$70p$1@hirame.wwa.com> <6sfcu4$bks@saluki-news.it.siu.edu> <35ed3d4a.2378710@news.erols.com> <6sfqul$ggg$1@hirame.wwa.com> Content-Type: text/plain; charset=us-ascii Organization: Object Mentor Mime-Version: 1.0 Newsgroups: comp.lang.eiffel,comp.object,comp.software-eng,comp.lang.ada Date: 1998-09-01T00:00:00+00:00 List-Id: Robert Martin wrote: > The the invariants of the loop body are different depending on whether the > iteration is the last or not. Also, a programmer must be aware that the > last statement in the loop body will not be executed on the last iteration. Of course, the example is "in the small". Very small things tend to be fairly easy to understand. To really appreciate the rules, you have to have a moderately complex loop with if/then/else or switch/case in the middle, preferably nested three levels deep or more ;-) I personally like checking rules at the front of a function, and returning early if conditions aren't met... at least for checking invariants. Assert is better if you want to abort when the condition isn't met. But the question I have is what happens when we have exceptions. Those are most certainly an early exit and may occur at unpredicted times. How do the rules for single entry/exit apply in an exception-supporting language? Tim