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=0.2 required=5.0 tests=BAYES_00,INVALID_MSGID, REPLYTO_WITHOUT_TO_CC 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: Nick Leaton Subject: Re: Software landmines (loops) Date: 1998/09/02 Message-ID: <35ECFF89.52235555@calfp.co.uk>#1/1 X-Deja-AN: 387065369 Content-Transfer-Encoding: 7bit X-NNTP-Posting-Host: calfp.demon.co.uk:158.152.70.168 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> <35EAEC47.164424A7@s054.aone.net.au> <35EBBFAF.DE38C061@s054.aone.net.au> <35EC1590.D50DB8F6@tisny.com> Content-Type: text/plain; charset=us-ascii X-Complaints-To: abuse@demon.net X-Trace: news.demon.co.uk 904724397 nnrp-07:9267 NO-IDENT calfp.demon.co.uk:158.152.70.168 MIME-Version: 1.0 Reply-To: nickle@pauillac Newsgroups: comp.lang.eiffel,comp.object,comp.software-eng,comp.lang.ada Date: 1998-09-02T00:00:00+00:00 List-Id: Mike Spille wrote: > > Would your average programmer ask the question "Where will the loop > terminate?", or "What does the function do?". I think the latter > question is alot more important. I personally subscribe to > the technique of "bailing-out" as soon as possible in a function. > > This has two effects: nesting later on is greatly reduced (I find > if-else nesting affects readability), and the early-bailouts give > me guarantees later in the code that I don't need to check for. > This doesn't tend to happen in Eiffel, all because of preconditions. The preconditions and postconditions, name of the routine and a comment tell you what the routine does. Early bailout is usually implements checks on arguments passed in, and if they are not consistent, then exits with an error. In Eiffel, this is removed because of the support for DBC. As such, you don't get much nesting, and as has been posted, you can solve the compare two stacks without the loop in an if-then statement. The nesting of the loop in the if then statement is a optimisation, which with a decent compiler, would be optimised out anyway. -- Nick