﻿# V8017\. The conditions of two adjacent 'if' statements are equivalent\.

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

```cpp
func Logging(s1 *string, s2 *string) {
  if s1 != nil {
    fmt.Println(*s1)
  }
  if s1 != nil {
    fmt.Println(*s2)
  }
}
```

Этот код содержит ошибку во втором условии\. В нём повторно проверяется переменная `s1`, а необходимо проверить переменную `s2`\.

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

```cpp
func Logging(s1 *string, s2 *string) {
  if s1 != nil {
    fmt.Println(*s1)
  }
  if s2 != nil {
    fmt.Println(*s2)
  }
}
```

Диагностическое правило не всегда указывает на ошибку\. Код может быть избыточен:

```cpp
func Logging2(toFile bool, s1 string, s2 string) {
  if toFile {
    fmt.Println(s1)
  }
  if toFile {
    fmt.Println(s2)
  }
}
```

Этот код корректен, но он немного неэффективен, так как два раза приходится проверять значение одной и той же логической переменной\. Его можно переписать:

```cpp
func Logging2(toFile bool, s1 string, s2 string) {
  if toFile {
    fmt.Println(s1)
    fmt.Println(s2)
  }
}
```