Данное диагностическое правило основано на руководстве MISRA (Motor Industry Software Reliability Association) по разработке программного обеспечения.
Функция должна содержать единственный оператор 'return'. Этот оператор должен быть последним в теле функции. Множественное использование операторов 'return' может усложнить чтение и понимание кода, а также его дальнейшую модификацию.
Пример кода, на который анализатор выдаст предупреждение.
obj foo (....)
{
....
if (condition) {
return a;
}
....
if (other_condition) {
return b;
}
....
}
Исправленный вариант кода имеет одну точку выхода в конце функции:
obj foo (....)
{
....
if (condition) {
result = a;
} else {
....
if (other_condition) {
result = b;
}
}
....
return result;
}
Подобный код также будет легче поддерживать, если понадобится добавить, например, предварительную обработку возвращаемого значения, так как сделать это придётся только в одном месте:
obj foo (....)
{
....
return cache(result);
}
Данная диагностика классифицируется как:
|