기능적 모범 사례를 따르는 것이 중요합니다. 다음 반례를 피하세요: 지나치게 긴 함수 독스트링이 없는 함수 출력 매개변수 함수 중첩 함수가 너무 많음 오류 값 대신 오류 코드 반환
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!