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: 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: "Gene Gajewski" Subject: Re: Software landmines (loops) Date: 1998/09/02 Message-ID: <6sl6ar$e8g$1@fir.prod.itd.earthlink.net>#1/1 X-Deja-AN: 387377540 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> X-Posted-Path-Was: not-for-mail X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3155.0 X-ELN-Date: Wed Sep 2 21:35:39 1998 Organization: EarthLink Network, Inc. Newsgroups: comp.lang.eiffel,comp.object,comp.software-eng,comp.lang.ada Date: 1998-09-02T00:00:00+00:00 List-Id: Robert Martin wrote in message <6sh3qn$9p2$1@hirame.wwa.com>... >However, multiple exits to a single destination represent a problem. The >two exits come from two different states within the algorithm. If the >single destination must do some work that depends upon that state (or if in >the future, that single destination must be modified to do work that depends >upon that state), then the code in the single destination is going to get >pretty ugly. This statement could be true if computers were not the discontinous machines they are. Code is not executed all at once, hence 'state' is a fact of life. The existance of the exit itself is proof that the coder of the algorithm has considered state as a factor and has determined that it is 'safe to exit'. A maintainer of code knows intuititvely that any states he introduces affects all code following it. There is no choice but to encapsulate the existing code. If a particular function is written with a single exit point, it will be easy to encapsulate simply by making changes before and after the loop. No examination of the contents of the loop appear to be necessary. However, the procedures and actions performed by the function are no longer the same, the computer not being absolute at all times, some may say that the function is not the same. My preference is to avoid modifying a function that is correct. If additional functionality is needed within a program, than the program needs modification, not the function. It would be better to create a new function containing the new state which than calls the original function - all for what will be a new program. A modified program is new in the essence it is not the same program, although it may appear identical from the outside. This may not seem acceptable to some, especially if the function to be modified is referenced in many places. On the other hand, a function so often refrenced should be simple in design. A gross change in functionality would indicate a poor original analysis, IMO. This is the sort of particular problem that can be solved administratively.