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: 1108a1,9a0ff0bffdf63657 X-Google-Attributes: gid1108a1,public X-Google-Thread: f43e6,9a0ff0bffdf63657 X-Google-Attributes: gidf43e6,public From: "Robert Martin" Subject: Re: Software landmines (loops) Date: 1998/09/02 Message-ID: <6sknla$7so$1@hirame.wwa.com>#1/1 X-Deja-AN: 387315359 References: <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> <6sgror$je8$3@news.indigo.ie> <6sh3qn$9p2$1@hirame.wwa.com> <35ece7ee.1489912@news.erols.com> <35ED7082.1889@hfl.tc.faa.gov> <8SeH1.542$495.132579351@newsreader.digex.net> <35EDAC92.538A@hfl.tc.faa.gov> 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: Robert Oliver wrote in message <35EDAC92.538A@hfl.tc.faa.gov>... > >I am not arguing against all use of multiple returns in a procedure or >function. I often write a function like this: > >void AFunction(...) >{ > if (SomeCondition) return; > if (AnotherCondition) return; > if (AThirdCondition) return; > > // now do the real work... > > return; >} > >I think this makes sense when AFunction is called from many places and >the >conditions need to be tested each time. I can look at the beginning of >the >function and know that there will be nothing done in these three >circumstances. >It's not without danger as RCM has pointed out, but I often choose to >live >with the risk. *Deciding* to live with the risk is perfectly legitimate. There is no way to eliminate all risk. Thus we must choose the risks we live with. But it is important that the risks be understood. > >Of course, it could also be written as: > >void AFunction(...) >{ > if not (SomeCondition) and > not (AnotherCondition) and > not (AThirdCondition) then > > // now do the real work... > > endif > return; >} Which is usually how I would choose to write it. (Active voice instead of passive voice. ;^) 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