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: f43e6,9a0ff0bffdf63657 X-Google-Attributes: gidf43e6,public X-Google-Thread: 1108a1,9a0ff0bffdf63657 X-Google-Attributes: gid1108a1,public From: mfinney@lynchburg.net Subject: Re: Software landmines (loops) Date: 1998/09/03 Message-ID: #1/1 X-Deja-AN: 387423933 References: <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> <6shp40$ec8$1@nnrp1.dejanews.com> <6sie46$eb7$1@hirame.wwa.com> <6siijm$h1m$1@hirame.wwa.com> X-Complaints-To: Abuse Role , We Care X-Trace: newsread.com 904812882 208.197.56.125 (Thu, 03 Sep 1998 04:54:42 EDT) Organization: Lynchburg.net (lynchburg.net) Reply-To: mfinney@lynchburg.net NNTP-Posting-Date: Thu, 03 Sep 1998 04:54:42 EDT Newsgroups: comp.lang.eiffel,comp.object,comp.software-eng,comp.lang.ada Date: 1998-09-03T00:00:00+00:00 List-Id: In <6siijm$h1m$1@hirame.wwa.com>, "Robert Martin" writes: >Lets just say, for grins, that I must make a change to the loop. For some >odd reason I must count the number of times that the loop body completes. >Where do I put the code that does this counting? I'd like to make it the >last line of the loop. But if there are early exits, then I must find each >and every early exit and add the code just before they exit. >Of course, later, someone else will make a change that forces yet another >early exit. They find where to add the early exit, but they must remember >to bump the counter before they exit. >Of course later on, someone asks us to sieze and release a mutex for each >iteration of the loop. We'd like to put the seize as the first line of the >loop body, and the release as the last line of the loop body. But if there >are early exits, then we must put a release before every exit. >Of course later on someone adds yet another early exit to the loop, and must >remember to bump the counter and release the mutex. >..... Has anybody out there ever had an experience like this? Not a problem...I would simply double click the opening {, hit tab to shift the block right, alt-{ to create a new block, a search and replace for "return" in the high-lighted block to use a different multi-level exit control structure (probably a goto to a name at the end of the block in C/C++) and add a wrapper the top of the block -- a do {/*code*/} while (false); multiLevelExitName: would do the trick nicely. My code is still tree structured, and I can now add new code just before or after the do..while to satisify your requirements. Also, the above took about 10 or 15 seconds, perhaps 30 with the search and replace. If the return has a value, then I might need to add a block variable to contain the return value and my edit for the return would be slightly more complex -- but even so, the edit cost is trivial compared to understanding the needed changes. Now...if I were still using a card punch, I would... (well, I guess that nobody cares about that anymore ) Michael Lee Finney