From d.scott at auckland.ac.nz  Tue Feb 15 23:59:35 2011
From: d.scott at auckland.ac.nz (David Scott)
Date: Wed, 16 Feb 2011 11:59:35 +1300
Subject: [Rd] Request: Suggestions for "good teaching" packages,
 esp. with C code
In-Reply-To: <C9805C71.23A27%ken.williams@thomsonreuters.com>
References: <C9805C71.23A27%ken.williams@thomsonreuters.com>
Message-ID: <4D5B0557.9020108@auckland.ac.nz>

On 16/02/2011 11:43 a.m., Ken.Williams at thomsonreuters.com wrote:
>
> On 2/15/11 4:35 PM, "Gabor Grothendieck"<ggrothendieck at gmail.com>  wrote:
>
>> I think the real good programming practice is to have a single point
>> of exit at the bottom.
>
> I disagree, it can be extremely useful to exit early from a function.  It
> can also make the code much more clear by not having 95% of the body in a
> huge else{} block.
>
>
>> If that is how you program all your functions
>> then you don't need to explicitly put a return in since it always
>> returns from the bottom anyways and the return would just clutter your
>> code.
>
> For someone else reading your code, they wouldn't know that you always do
> this unless they're very familiar with your coding style.  Even then, it
> needs to be manually checked by inspection because nobody sticks with the
> "rule" 100% of the time, so it renders the benefit moot.
>
> --
> Ken Williams
> Senior Research Scientist
> Thomson Reuters
> Phone: 651-848-7712
> ken.williams at thomsonreuters.com
> http://labs.thomsonreuters.com
>
>
Some interesting discussion on this point. Enlightening for me at least.

A quick test showed me that an explicit return does produce about a 20% 
time hit in a one-line function (obviously a lesser % in a non-trivial 
function) but enough to convince me not to use an explicit return in 
functions where what is being returned is obvious.

Gabor's point is a good one, there *should* be a single exit point at 
the bottom, but I have certainly had situations where an early exit 
seems preferable as Ken suggests. Then an explicit return may make the 
code sufficiently clear for a violation of Gabor's principle to be 
acceptable.

David Scott






-- 
_________________________________________________________________
David Scott	Department of Statistics
		The University of Auckland, PB 92019
		Auckland 1142,    NEW ZEALAND
Phone: +64 9 923 5055, or +64 9 373 7599 ext 85055
Email:	d.scott at auckland.ac.nz,  Fax: +64 9 373 7018

Director of Consulting, Department of Statistics



[Rd] Request: Suggestions for "good teaching" packages, esp. with C code
David Scott