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

David Scott d.scott at auckland.ac.nz
Tue Feb 15 23:59:35 CET 2011

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 

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

More information about the R-devel mailing list