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: Biju Thomas Subject: Re: Software landmines (loops) Date: 1998/09/01 Message-ID: <35EC937F.94420C51@ibm.net>#1/1 X-Deja-AN: 386969202 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> <6sf87j$47n$1@hirame.wwa.com> <6shp1i$ead$1@nnrp1.dejanews.com> X-Notice: should be reported to postmaster@ibm.net Content-Type: text/plain; charset=x-user-defined X-Complaints-To: postmaster@ibm.net X-Trace: 2 Sep 1998 00:37:57 GMT, 129.37.231.109 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-01T00:00:00+00:00 List-Id: Phil Goodwin wrote: > > I write plenty of little routines that have loops in them that exit in the > middle. It doesn't make sense to me to alter the algorithm and write extra > code just so that the routine might be easier to maintain someday (if ever). > On the other hand, when I DO maintain such a routine I definitely WILL make > sure that there is only one exit point if that's what is needed to eliminate > duplicate code. > > I adopted this position in part because of some of what I've read about > Extreme Programming. I haven't adopted it wholesale, but I do like their > no-nonsense philosophy. They use two balancing maxims that I've applied to > this question: Do The Simpest Thing That Could Possibly Work; and Once And > Only Once. So when I write a function I do the simplest thing that could > possibly work, which sometimes means sticking a return right smack in the > middle of a loop. I am especially likely to do this when the loop body is > less than five lines long anyway. Then, when I have to refactor in order to > add the aquisistion and release of some resource, I rearrange the routine so > that I add the code once and only once. The justification for this is that I > don't want to adopt a coding task because it _might_ be needed during > maintenance, I would rather do it during maintenance when I KNOW that it > needs to be done. The problem with such refactoring during maintenance is that it may introduce new problems, and you need to do extensive testing to make sure that you haven't broken anything. Often, this type of extensive testing may not be feasible at all during maintenance, because of budget and time constraints. This type of attitude may explain why new releases of software (which are supposed to do bug fixing too) introduce more bugs than the original version. Biju Thomas