When the code flow is like this:
if(check())
{
...
...
if(check())
{
...
...
if(check())
{
...
...
}
}
}
I have generally seen this work around to avoid the above messy code flow:
do {
if(!check()) break;
...
...
if(!check()) break;
...
...
if(!check()) break;
...
...
} while(0);
What are some better ways that avoid this work-around/hack so that it becomes a higher-level (industry level) code?
Any suggestions which are out of the box are welcome!
It is considered acceptable practice to isolate these decisions in a function and use return
s instead of break
s. While all these checks correspond to the same level of abstraction as of the function, it is quite logical approach.
For example:
void foo(...)
{
if (!condition)
{
return;
}
...
if (!other condition)
{
return;
}
...
if (!another condition)
{
return;
}
...
if (!yet another condition)
{
return;
}
...
// Some unconditional stuff
}