V8017. The conditions of the 'if' statements situated alongside each other are equivalent.
Анализатор обнаружил код, в котором рядом находятся две конструкции if с одинаковыми условиями. Это является потенциальной ошибкой или избыточным кодом.
func Logging(s1 *string, s2 *string) {
if s1 != nil {
fmt.Println(*s1)
}
if s1 != nil {
fmt.Println(*s2)
}
}
Этот код содержит ошибку во втором условии. В нём повторно проверяется переменная s1, а необходимо проверить переменную s2.
Исправленный вариант:
func Logging(s1 *string, s2 *string) {
if s1 != nil {
fmt.Println(*s1)
}
if s2 != nil {
fmt.Println(*s2)
}
}
Диагностическое правило не всегда указывает на ошибку. Код может быть избыточен:
func Logging2(toFile bool, s1 string, s2 string) {
if toFile {
fmt.Println(s1)
}
if toFile {
fmt.Println(s2)
}
}
Этот код корректен, но он немного неэффективен, так как два раза приходится проверять значение одной и той же логической переменной. Его можно переписать:
func Logging2(toFile bool, s1 string, s2 string) {
if toFile {
fmt.Println(s1)
fmt.Println(s2)
}
}