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: f43e6,9a0ff0bffdf63657 X-Google-Attributes: gidf43e6,public X-Google-Thread: 1108a1,9a0ff0bffdf63657 X-Google-Attributes: gid1108a1,public X-Google-Thread: 103376,4b06f8f15f01a568 X-Google-Attributes: gid103376,public From: "Robert Martin" Subject: Re: Software landmines (loops) Date: 1998/08/30 Message-ID: <6sbuod$fra$1@hirame.wwa.com>#1/1 X-Deja-AN: 386175702 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> X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2106.4 Organization: WorldWide Access - Midwestern Internet Services - www.wwa.com Newsgroups: comp.lang.eiffel,comp.object,comp.software-eng,comp.lang.ada Date: 1998-08-30T00:00:00+00:00 List-Id: Matthew Heaney wrote in message ... >If theory says use a construct, but observation reveals that programmers >who use the construct produce more errors, then the theory needs to be >thrown out. All else being equal, that would be so. But when observation shows that the construct reduces the overall cost of maintaining the program, regardless of its initial cost, then it ought not be thrown out. >For example, there's a pernicious myth that exiting (or returning) from >the middle of a loop is bad, and that the only proper way to write a >loop is to state the termination condition explicitly, as a predicate >appearing at the top of the loop. Yes. That pernicious myth is called "structured programming". >This theory was indeed put to the test, and guess what? Programmers >using a test-and-exit from the middle of the loop produced fewer errors >than those programmers who tried to put the test at the top of the loop. >Cognitive Strategies and Looping Constructs: An Empirical Study >Soloway, Bonar, Ehrlich >CACM, Nov 83, Vol 26, No 11, p 853-860 Do you know if the citing is on line? Was the experiment controlled? Did the experiment measure long term cost? Were the participants engineers who had been used to min-loop exits, and were strugging with a new concept? My own experience is counter to the results of this study. It is far easier to understand a loop if the looping criteria are present in one place; and the loop has a single, well known, exit. >The researchers found that the exit-from-the-middle construct had a >better "cognitive fit" than the other constructs. "Cognitive fit" is probably not a very good criterion for good engineering. GOTO has a very good cognitive fit. So does a flat Earth. >The goodness of a language construct should not be determined by >doctrinaire computer scientists or mathematicians. The only thing that >matters is whether working programmers think it's easier to understand, >and whether by using the construct programmers inject fewer errors into >the code. And whether or not the construct is maintainable over the long term. There are lots of constructs that make writing the initial program easy, but make maintaining it hard. The practice of using such constructs, i.e. ignoring long term effects, is sometimes called "hacking". > >I think it was Stroustrup who said, "Programming is a human activity. Forget that, and all is lost." Precisely! Programming is an activity of human creativity and human frailty. Forget either part, and all is lost. Robert C. Martin | Design Consulting | Training courses offered: Object Mentor | rmartin@oma.com | Object Oriented Design 14619 N Somerset Cr | Tel: (800) 338-6716 | C++ Green Oaks IL 60048 | Fax: (847) 918-1023 | http://www.oma.com "One of the great commandments of science is: 'Mistrust arguments from authority.'" -- Carl Sagan