vendredi 4 avril 2014

Efficiency over Do-While(false) block vs return


Vote count:

0




So the question is which of these implementation has better performance and readability.


Imagine you have to write a code that each step is dependent of the success of the previous one, something like:



bool function()
{
bool isOk = false;

if( A.Func1() )
{
B.Func1();

if( C.Func2() )
{
if( D.Func3() )
{
...
isOk = true;
}
}
}

return isOk;
}


Let's say there are up to 6 nested IFs, since I don't want the padding to grow too much to the right, and I don't want to nest the function calls because there are several parameters involved, the first approach would be using the inverse logic:



bool function()
{

if( ! A.Func1() ) return false:

B.Func1();

if( ! C.Func2() ) return false;

if( ! D.Func3() ) return false;
...

return true;
}


But what about avoiding so many returns, like this:



bool function()
{
bool isOk = false;

do
{
if( ! A.Func1() ) break:

B.Func1();

if( ! C.Func2() ) break;

if( ! D.Func3() ) break;
...
isOk = true;
break;

}while(false);

return isOk;
}


asked 2 mins ago






Aucun commentaire:

Enregistrer un commentaire