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,FROM_ADDR_WS, 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: 1108a1,9a0ff0bffdf63657 X-Google-Attributes: gid1108a1,public X-Google-Thread: f43e6,9a0ff0bffdf63657 X-Google-Attributes: gidf43e6,public X-Google-Thread: 103376,4b06f8f15f01a568 X-Google-Attributes: gid103376,public From: Biju Thomas <"Biju Thomas"> Subject: Re: Software landmines (loops) Date: 1998/09/03 Message-ID: <35EEB84B.67BD@ibm.net>#1/1 X-Deja-AN: 387515207 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> <6sgror$je8$3@news.indigo.ie> <6sh3qn$9p2$1@hirame.wwa.com> <6simjo$jnh$1@hirame.wwa.com> <6sjk3p$4tc$1@hirame.wwa.com> <6skgn4$3gq$1@hirame.wwa.com> <6sm6md$3fh$1@hirame.wwa.com> X-Notice: should be reported to postmaster@ibm.net Content-Type: text/plain; charset=us-ascii X-Complaints-To: postmaster@ibm.net X-Trace: 3 Sep 1998 15:39:57 GMT, 198.133.22.211 Organization: IBM.NET MIME-Version: 1.0 Reply-To: bijuthom@ibm.net Newsgroups: comp.lang.eiffel,comp.object,comp.software-eng,comp.lang.ada Date: 1998-09-03T00:00:00+00:00 List-Id: Robert Martin wrote: > > Matthew Heaney wrote in message ... > >"Robert Martin" writes: > > >> for(;;) > >> { > >> Get(N); > >> if (N) > >> > >> else > >> break; > >> } > > > >My philosophy is, handle the simple case first, then bail out: > > > > for (;;) > > { > > Get (N); > > > > if (!N) break; > > > > > > } > > Why is it more important to get the exceptional conditions out of the way > first rather than to get right into the actual purppose of the function. Don't you feel more secure when you code like this? When I take care of the exceptional condition first and proceed to the actual process after ensuring that everything is well, I don't have to worry about exceptional and special cases anymore. This may be an illusion, but helps to keep the mind focussed on the actual purpose of the function. This is somewhat similar to ensuring pre-conditions in a function. > I prefer a style that moves into the real action of the function as quickly > as possible, while deferring the exceptional conditions to the end. > > Consider this, would you prefer that catch statements *precede* try blocks? > > catch(memerr) > { > } > catch(fileerr) > { > } > try > { > } This is a different situation. Here, you don't know that the exceptional condition has occured, whereas in the previous case, you know that it occured, and postpone the appropriate actions to a different place in the code. So, these cases are not comparable. Biju Thomas