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/09/02 Message-ID: <6skqf3$9g0$1@hirame.wwa.com>#1/1 X-Deja-AN: 387325343 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> <6shbca$66c$1@news.indigo.ie> <6shhq7$lut$1@hirame.wwa.com> <6sjbso$1lk$2@news.indigo.ie> <6sjijg$36r$1@hirame.wwa.com> <6skhcm$1dr$2@news.indigo.ie> 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-09-02T00:00:00+00:00 List-Id: Gerry Quinn wrote in message <6skhcm$1dr$2@news.indigo.ie>... >In article <6sjijg$36r$1@hirame.wwa.com>, "Robert Martin" wrote: >> >>Gerry Quinn wrote in message <6sjbso$1lk$2@news.indigo.ie>... >> >>>I would say rather that [spaghetti] is an objective term, nowadays used >>>incorrectly as a term of abuse by those who do not actually understand >>>the meaning of the word. >> >> >>FYI, here is the entry in the Hacker Jargon Dictionary: >> >>spaghetti code /n./ Code with a complex and tangled control structure, esp. >>one using many GOTOs, exceptions, or other `unstructured' branching >>constructs. Pejorative. The synonym `kangaroo code' has been reported, >>doubtless because such code has so many jumps in it. >> > >Seems clear enough. Single entry and multiple exits is not a >complex or tangled structure. Nor did I say it was. I simply said that it carries certain risks. ==================================================================== I have found the enthusiasm for this thread quite interesting; but also a bit disquieting. Structured Programming is one of the foundational elements of software engineering. Knowledge of the benefits and costs of single-entry/single-exit functions should be firmly ingrained in all software engineers. In this thread I have not demanded that everyone *must* use se/se, nor have I accused anyone of writing spaghetti, nor have I said that people who use multiple exits are wrong to do so. What I have done is discuss and demonstrate some of the risks of multiple exits, and some of the benefits of se/se. I have pointed out that "readability" is not the only concern, and that the simplest modules are not always the most maintainable. And yet the reactions have ranged from: "the benefits of se/se don't really exist" to "se/se is not a fundemental part of structured programming". I find these reactions puzzling, at best. Are tree structures OK? The word OK has no meaning in this context. They have a benefit, and they have a cost, and in some situations the cost and benefit will work out such that there is a net gain. Is it OK to write code with multiple exits? In some cases, yes; in others, no. The important thing is not whether a technique is "good" or "bad", the important thing is to understand the costs and benefits of a technique. Engineering is the ability to make trade-offs. To make those decisions, we must know what we are trading off for what. We cannot rely on simple maxims like "readability is best", or "never use gotos", or "only do the minimum", or "never use multiple exits". We have to be more intelligent than that. We have to be engineers. 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