# V3029. The conditional expressions of the 'if' statements situated alongside each other are identical.

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

Рассмотрим пример:

    public void Logging(string S_1, string S_2)
    {
      if (!String.IsNullOrEmpty(S_1))
        Print(S_1);
      if (!String.IsNullOrEmpty(S_1))
        Print(S_2);
    }

Этот код содержит ошибку во втором условии. В нём повтороно проверяется переменная 'S_1', а необходимо проверить переменную с именем 'S_2'.

Исправленный вариант:

    public void Logging(string S_1, string S_2)
    {
      if (!String.IsNullOrEmpty(S_1))
        Print(S_1);
      if (!String.IsNullOrEmpty(S_2))
        Print(S_2);
    }

Данная диагностика не всегда указывает на ошибку. Часто код просто избыточен:

    public void Logging2(bool toFile, string S_1, string S_2)
    {
      if(toFile)
        Print(S_1);
      if (toFile)
        Print(S_2);
    }

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

    public void Logging2(bool toFile, string S_1, string S_2)
    {
      if(toFile)
      {
        Print(S_1);
        Print(S_2);
      }
    }

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