Heim  >  Artikel  >  Backend-Entwicklung  >  Gegenbeispiele, die gegen Best Practices für Golang-Funktionen verstoßen

Gegenbeispiele, die gegen Best Practices für Golang-Funktionen verstoßen

王林
王林Original
2024-05-03 12:18:01614Durchsuche

Das Befolgen funktionaler Best Practices ist von entscheidender Bedeutung. Vermeiden Sie die folgenden Gegenbeispiele: Übermäßig lange Funktionen. Funktionen ohne Dokumentzeichenfolgen Um qualitativ hochwertigen Code in einer Sprache zu erhalten, ist es wichtig, funktionale Best Practices zu befolgen. Wenn Sie die folgenden Gegenbeispiele vermeiden, können Sie wartbare, lesbare und effiziente Funktionen schreiben.

Gegenbeispiele, die gegen Best Practices für Golang-Funktionen verstoßen1. Zu lange Funktionen

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
}
Best Practice:

Funktionen in kleinere, wiederverwendbare Funktionen aufteilen.

2. Funktionen ohne Dokumentzeichenfolgen

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

Best Practice: Fügen Sie für jede Funktion eine Dokumentzeichenfolge hinzu, die ihren Zweck, ihre Parameter und Rückgabewerte beschreibt.

3. Ausgabeparameter

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

Best Practice: Vermeiden Sie die Verwendung von Ausgabeparametern, da der Code dadurch schwer zu verstehen und zu debuggen ist.

4. Zu viele verschachtelte Funktionen

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

Best Practice: Verschachtelte Funktionen aus der Hauptfunktion verschieben oder Abschlüsse verwenden.

5. Funktionen geben Fehlercodes anstelle von Fehlerwerten zurück

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

Best Practice: Gemäß der Go-Sprachkonvention sollten Funktionen Fehlerwerte anstelle von Fehlercodes zurückgeben.

Praktischer Fall

Betrachten Sie die folgende Funktion, die eine Liste in ein Wörterbuch konvertieren muss:

// 不遵循最佳实践的示例
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
}
Diese Funktion hat das folgende Problem:

Der Rückgabewert ist nil, aber der docstring sagt diese Bedingung nicht. Die Funktion verarbeitet keine doppelten Elemente und die Rückgabe von nil ist ebenfalls mehrdeutig.

Beispiel für die Befolgung von Best Practices

    // 遵循最佳实践的示例
    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
    }
  • Diese Funktion löst das oben genannte Problem und gibt einen Fehlerwert für doppelte Elemente zurück. nil,但文档字符串未说明此情况。
  • 函数不处理重复元素,返回 nil

Das obige ist der detaillierte Inhalt vonGegenbeispiele, die gegen Best Practices für Golang-Funktionen verstoßen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn