>  기사  >  백엔드 개발  >  golang 함수 모범 사례를 위반하는 반례

golang 함수 모범 사례를 위반하는 반례

王林
王林원래의
2024-05-03 12:18:01614검색

기능적 모범 사례를 따르는 것이 중요합니다. 다음 반례를 피하세요: 지나치게 긴 함수 독스트링이 없는 함수 출력 매개변수 함수 중첩 함수가 너무 많음 오류 값 대신 오류 코드 반환 ​​

golang 함수 모범 사례를 위반하는 반례

Go 언어 함수 모범 사례

를 위반하는 반례 5개 Go에서 high를 작성할 때 -언어의 품질 코드를 작성하려면 기능적 모범 사례를 따르는 것이 중요합니다. 다음 반례를 피하면 유지 관리 가능하고 읽기 쉽고 효율적인 함수를 작성하는 데 도움이 될 수 있습니다.

1. 지나치게 긴 함수

func DoEverything(a, b int, c string, d bool) (int, error) {
    if c == "" {
        return 0, errors.New("c cannot be empty")
    }
    if !d {
        return 1, errors.New("d must be true")
    }
    return a + b, nil
}

모범 사례: 함수를 더 작고 재사용 가능한 함수로 나눕니다.

2. 독스트링이 없는 함수

func DoSomething(x int) int {
    return x * x
}

모범 사례: 각 함수에 해당 목적, 매개변수 및 반환 값을 설명하는 독스트링을 추가하세요.

3. 출력 매개변수

func Swap(a, b *int) {
    tmp := *a
    *a = *b
    *b = tmp
}

모범 사례: 출력 매개변수를 사용하면 코드를 이해하고 디버깅하기가 어려워지므로 사용하지 마세요.

4. 중첩된 함수가 너무 많습니다.

func Nested(x int) int {
    if x > 10 {
        func inner(y int) int {
            return y + 1
        }
        return inner(x)
    }
    return x
}

모범 사례: 중첩된 함수를 기본 함수 밖으로 이동하거나 클로저를 사용하세요.

5. 함수는 오류 값 대신 오류 코드를 반환합니다. ​

func OpenFile(name string) int {
    f, err := os.Open(name)
    if err != nil {
        return -1
    }
    return f.Fd()
}

모범 사례: Go 언어 규칙에 따르면 함수는 오류 코드 대신 오류 값을 반환해야 합니다.

실용 예

목록을 사전으로 변환해야 하는 다음 함수를 고려하세요.

// 不遵循最佳实践的示例
func ConvertListToDict(list []string) map[string]bool {
    dict := make(map[string]bool)
    for _, v := range list {
        dict[v] = true
    }
    if len(dict) != len(list) {
        return nil
    }
    return dict
}

이 함수에는 다음과 같은 문제가 있습니다.

  • 반환 값은 nil이지만 docstring은 이 조건을 말하지 않습니다. nil,但文档字符串未说明此情况。
  • 函数不处理重复元素,返回 nil
  • 이 함수는 중복된 요소를 처리하지 않으며 nil을 반환하는 데에도 모호성이 있습니다.

다음 모범 사례의 예

// 遵循最佳实践的示例
func ConvertListToDict(list []string) (map[string]bool, error) {
    dict := make(map[string]bool)
    for _, v := range list {
        if _, ok := dict[v]; ok {
            return nil, errors.New("duplicate element in list")
        }
        dict[v] = true
    }
    return dict, nil
}

이 함수는 위의 문제를 해결하고 중복 요소에 대해 오류 값을 반환합니다. 🎜

위 내용은 golang 함수 모범 사례를 위반하는 반례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.