Re: Early return (was: Inspiration for a Tombstone.)

From: Date: Sun, 29 Jun 2008 14:23:47 +0000
Subject: Re: Early return (was: Inspiration for a Tombstone.)
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-276109@lists.php.net to get a copy of this message
Dotan Cohen wrote:
Even your example above hints at another "political" minefield - Early Return or Multiple Return Points.... (s/Return/Exit/ in this case) Let's not even go there!!!
Why not? I do this often, but I am not a professional programmer. I find this to be very useful.
I think this was discussed on this list a while back... or perhaps it was just in an article I read... /me googles.... I think it stemmed from this article: http://www.theregister.co.uk/2007/12/04/multiple_exit_wounds/ See the comments to see how different folks agree/disagree. Personally I do use early return, and use it whenever possible. I find that deep nesting is actually harder to read and in many cases do stuff like: function foo($bar) { if ($bar) return true; return false; } Rather than: function foo($bar) { if ($bar) $rv = true; else $rv = false; return $rv; } If I did need to use a variable for a more complex function I almost always do: function foo($bar) { $rv = false; if ($bar) $rv = true; return $rv; } e.g I *always* "define" the variable at the scope in which I use it. Call me old fashioned but if I generally feel that in the example before last, $rv should not be defined outside of the if/else statement as it was not declared... I know PHP is very loose here, but from a C++ perspective: void foo(int bar) { if (bar) {
    int rv;
    rv = 1;
} else {
    int rv;
    rv = 0;
} return rv; } This clearly bombs. So you generally do: void foo(int bar) { int rv; if (bar)
    rv = 1;
else
    rv = 0;
return rv; } But then you could also do: void foo(int bar) { int rv = 0; if (bar)
    rv = 1;
return rv; } And so this is how I generally structure my code in PHP too.... call me paranoid/stuck in my ways if you like :) I appreciate I've steered this away from early return :) Col

« previous php.general (#276109) next »