Diese Regel mag in C gelten, kann aber in C++ aufgrund von Ausnahmen als veraltet betrachtet werden. Sobald Ihre Funktion eine Ausnahme auslöst oder eine Funktion aufruft, die eine Ausnahme auslösen kann, haben Sie einen zusätzlichen Exit-Point:
int f()
{
//...
g(); // g() may throw: you have an exit point here
//...
throw exc; // another possible exit point
//...
return returnValue; // Nice try, but you have additional exit points
}
Dies kommt zu dem in anderen Antworten gemachten Punkt hinzu: Diese Regel soll den Code übersichtlicher machen, aber es ist leicht, Beispiele zu finden, bei denen dies nicht zutrifft. Viel besser:
if (condition)
return a;
if (condition2)
return b;
if (condition3)
return c;
// Insert all your code for the general case
als:
int returnValue;
if (!condition) {
if (!condition2) {
if (!condition3) {
// Insert your code here
}
else {
returnValue = c;
}
returnValue = b; // Where am I now?
}
returnValue = a;
}
return returnValue;
Und dann gibt es noch den Fall, dass Sie den Rückgabewert in einer switch
:
switch (a)
{
case 1: return 10;
case 2: return 20;
case 3: return 40;
default: return 50;
}
statt:
int returnValue;
switch (a)
{
case 1: returnValue = 10; break;
case 2: returnValue = 20; break;
case 3: returnValue = 40; break;
default: returnValue = 50; break;
}
return returnValue; // Where is the clarity gained?