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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux