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.1 required=5.0 tests=BAYES_05,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 1108a1,9a0ff0bffdf63657 X-Google-Attributes: gid1108a1,public X-Google-Thread: 103376,4b06f8f15f01a568 X-Google-Attributes: gid103376,public X-Google-Thread: fac41,9a0ff0bffdf63657 X-Google-Attributes: gidfac41,public X-Google-Thread: f43e6,9a0ff0bffdf63657 X-Google-Attributes: gidf43e6,public From: "Robert Martin" Subject: Re: Software landmines (loops) Date: 1998/09/01 Message-ID: <6si1hf$5u4$1@hirame.wwa.com>#1/1 X-Deja-AN: 386958009 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> <904556531.666222@miso.it.uq.edu.au> <6sf87j$47n$1@hirame.wwa.com> 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-01T00:00:00+00:00 List-Id: Richard Melvin wrote in message ... >In article <6sf87j$47n$1@hirame.wwa.com>, Robert Martin > writes >>bool operator==(Stack& l, Stack& r) >>{ >> bool equal = true; >> for (int index = 1; index < l.top() && equal == true; index++) >> { >> if (l[index] != r[index]) >> equal = false; >> } >> return equal; >>} > >Now, following convoluted conditionals[1] like the above always makes my >head spin, but it looks to me like the above code would always return >true when comparing against an empty stack. > >Given that this is a trivial piece of code, written by an expert, read >by half of usenet, and nobody seems to have spotted the problem, I think >this has to count as a significant data point on the side of the >multiple returns camp. Sorry, I copied the algorithm that someone else wrote, and dropped the two lines that compared the size of the stack. It was *definitely* the use of structured programming that forced me to omit those two lines! The evidence is right here folks, structured programming damages your brain. You will omit lines of code if you use it. You are better off using lots of gotos, mid function returns, breaks, and continues so that you don't ever accidentally omit a couple of lines of code again! I've certainly learned my lesson. 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