[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
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
More information about the R-devel
mailing list