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: 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: Matthew Heaney Subject: Re: Software landmines (loops) Date: 1998/10/09 Message-ID: #1/1 X-Deja-AN: 399275153 Sender: matt@mheaney.ni.net References: <6qfhri$gs7$1@nnrp1.dejanews.com> <35cb8058.645630787@news.ne.mediaone.net> <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@news.erols.com> <6sdiav$e0g$1@hirame.wwa.com> <6sfcft$70p$1@hirame.wwa.com> <1dg8p3r.vfredh1aou58iN@n207167116191.inetworld.net> <6v2nr9$t8l$1@hirame.wwa.com> NNTP-Posting-Date: Fri, 09 Oct 1998 00:01:39 PDT Newsgroups: comp.lang.eiffel,comp.object,comp.software-eng,comp.lang.ada Date: 1998-10-09T00:00:00+00:00 List-Id: "Robert C. Martin" writes: > The question that the post was addressing had to do with the definition of > structured programming. A mid exit loop does not fall within the bounds > defined by structured programming because the loop body does not then have a > single entry and a single exit. > > This has nothing to do with whether mid exit loops are good or bad. It only > has to do with whether mid exit loops conform to structured programming or > not. The specific text of what Dijkstra said is (from section 7, "On Understanding Programs"): <> [p. 19] He says later that: <> [p. 20] I think the last part is very significant. As Bob Eachus pointed out, a subprogram with an early return really does have "single exit," because all returns lead to the same place, to the POINT OF CALL. Dijkstra's complaint was that you can't tell what the program does at run-time by reading the program text. One cause is the unbridled use of the goto statement, when you can jump out of a sequential abstraction (the block to which Dijkstra refers) into any other. By returning early from a subprogram, you are not "jumping into another abstraction." You are merely tracing another edge that leads to the SAME NODE (the point of call) in the graph of the program. He sums up that section by noting that: <> [p. 23] I argue that an early return (appropriately used, of course) meets his criterion of understanding the mapping of static program text to dynamic program behavior. The whole point of structured programming is NOT to "use only these three control flow constructs." It is as he states in that last summary paragraph: that programs should be intellectually manageable. If a mid-loop exit simplifies a loop, or an early return simplifies a subprogram, then by all means use it.