# V707. Giving short names to global variables is considered to be bad practice.

Анализатор обнаружил в коде глобально объявленную переменную с коротким именем. Это, если и не приведёт к ошибкам, то является плохим стилем программирования и усложняет понимание программы.

Начнём с примера:

    int i;

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

    void MyFunc()
    {
      for (i = 0; i < N; i++)
        AnotherFunc();
      ....
    }

должно быть:

    void MyFunc()
    {
      for (int i = 0; i < N; i++)
        AnotherFunc();
      ....
    }

В данных ситуациях анализатор будет предлагать изменить имя переменной на более длинное. Минимальная длина, которая не является подозрительной для анализатора - три символа. Также анализатор не будет выдавать предупреждения на переменные с именами PI, SI, CR, LF.

Анализатор не выдаёт предупреждения на переменные с коротким именем, если они представляют собой структуры. Хотя это тоже плохой стиль кодирования, но случайно неправильно использовать структуру сложнее. Например, если случайно написать так:

    struct T { int a, b; } i;
    void MyFunc()
    {
      for (i = 0; i < N; i++)
        AnotherFunc();
      ....
    }

То код просто не скомпилируется.

А вот на константы с короткими именами анализатор ругается. Их нельзя менять, но ничто не мешает сделать неправильную проверку. Пример:

    const float E = 2.71828;
    void Foo()
    {
      S *e = X[i];
      if (E)
      {
       e->Foo();
      }
      ....
    }

Исправленный код:

    const float E = 2.71828;
    void Foo()
    {
      S *e = X[i];
      if (e)
      {
       e->Foo();
      }
      ....
    }

Но лучше использовать более длинное имя или обернуть такие константы в специальный namesapce:

    namespace Const
    {
      const float E = 2.71828;
    }

Взгляните на примеры ошибок, обнаруженных с помощью диагностики V707.