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,FREEMAIL_FROM, 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: sureshvv@hotmail.com Subject: Re: Software landmines (loops) Date: 1998/09/09 Message-ID: <6t4jcs$736$1@nnrp1.dejanews.com>#1/1 X-Deja-AN: 389202827 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> <6skqf3$9g0$1@hirame.wwa.com> <6smmhv$1kp$1@nnrp1.dejanews.com> <6smsi3$n8i$1@hirame.wwa.com> <35F2496D.7C4BDC42@earthlink.net> <6su70s$db8$1@hirame.wwa.com> X-Http-Proxy: 1.0 x12.dejanews.com:80 (Squid/1.1.22) for client 207.71.79.77 Organization: Deja News - The Leader in Internet Discussion X-Article-Creation-Date: Wed Sep 09 00:50:37 1998 GMT Newsgroups: comp.lang.eiffel,comp.object,comp.software-eng,comp.lang.ada X-Http-User-Agent: Mozilla/2.0 (compatible; MSIE 3.02; Update a; Windows NT) Date: 1998-09-09T00:00:00+00:00 List-Id: In article <6su70s$db8$1@hirame.wwa.com>, "Robert Martin" wrote: > > Charles Hixson wrote in message <35F2496D.7C4BDC42@earthlink.net>... > >Robert Martin wrote: > >... > >> if (condition.1) return; > >> else if (condition.2) return; > >> else do something useful; > >> return; > >> }; > >> > >> Which, in reality, is: > >> > >> void f() > >> { > >> if (condition.1) return; > >> else{ > >> if (condition.2) return; > >> else { > >> do something useful; > >> } > >> } > >> }; > >> > >> So, early returns do not actually reduce nesting; they just appear to. But appearance is important. If we make the code appear simpler yet retaining its functionality, we have made it more readable/maintainable. I diasagree with your notion that creating placeholders in code where you might end up adding code in future is the way to make code more maintainable. On the contrary, maintainability is when the code is sufficiently decoupled that you may rip out any one piece (eg., class method), be able to totally rewrite it and rebuild the system without breaking it. > > Early returns form a boolean equation which is an OR of terms: > > if this then return. > or > if that then return. > or > if the_other then return > or > do something useful. > > But, as you noted, we can apply Demorgan's theorem and turn this into an AND > of factors > > if (!this AND !that AND !the_other) > then do something useful > > Just a transformation, And one that turns a multiple exit function into an > se/se function. > This is why I added a couple of realistic requirements, where - a different message should be logged for each input condition - a different value has to be returned for each input condition With these requirements a simple transformation will not do and the se/se solution becomes less readable. > we might then decide that long boolean equations are better split apart: > > if (!this) > if (!that) > if (!the_other) > then do something useful. > > Which is an idiom that we can learn to read as a set of ANDS. Wonderfully adaptable creatures that we are, we can learn to do almost anything :-) But why? suresh -----== Posted via Deja News, The Leader in Internet Discussion ==----- http://www.dejanews.com/rg_mkgrp.xp Create Your Own Free Member Forum