# V2551. MISRA. Variable should be declared in a scope that minimizes its visibility.

Данное диагностическое правило основано на руководстве MISRA (Motor Industry Software Reliability Association) по разработке программного обеспечения.

Переменные следует определять в минимально возможной области видимости. Это позволит избежать возможных ошибок, связанных со случайным использованием переменных вне предусмотренной для них области видимости, а также может помочь сэкономить потребление памяти и увеличить производительность программы.

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

    static void RenderThrobber(RECT *rcItem, int *throbbing, ....)
    {
      ....
      int width = rcItem->right - rcItem->left;
      ....

      if (*throbbing)
      {
        RECT rc;
        rc.right = width;
        ....
      }

      .... // width больше нигде не используется
    }

Переменная 'width' используется только внутри блока 'if', следовательно, будет разумным перенести переменную внутрь этого блока. Вычисление 'width' при этом будет происходить только при выполнении условия, что экономит время. Дополнительно это позволит избежать ошибочного использования этой переменной в дальнейшем.

Данная диагностика классифицируется как:

MISRA-CPP-2008-3.4.1