Данное диагностическое правило основано на руководстве 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); }
Данная диагностика классифицируется как:
|