﻿# V2506\. MISRA\. A function should have a single point of exit at the end\.

Данное диагностическое правило основано на руководстве [MISRA](https://www.misra.org.uk/) \(Motor Industry Software Reliability Association\) по разработке программного обеспечения\.

Функция должна содержать единственный оператор 'return'\. Этот оператор должен быть последним в теле функции\. Множественное использование операторов 'return' может усложнить чтение и понимание кода, а также его дальнейшую модификацию\. 

Пример кода, на который анализатор выдаст предупреждение\.

```cpp
obj foo (....)
{
  ....
  if (condition) {
    return a;
  }
  ....
  if (other_condition) {
    return b;
  }
  ....
}
```

Исправленный вариант кода имеет одну точку выхода в конце функции:

```cpp
obj foo (....)
{
  ....
  if (condition) {
    result = a;
  } else {
    ....
    if (other_condition) {
      result = b;
    }
  }
  ....
  return result;
}
```

Подобный код также будет легче поддерживать, если понадобится добавить, например, предварительную обработку возвращаемого значения, так как сделать это придётся только в одном месте:

```cpp
obj foo (....)
{
  ....
  return cache(result);
}
```