Mit KI generiertes Bild
Ich werde immer vorsichtig, wenn ich ein Go-Paket sehe, das eine Init-Funktion verwendet. Init-Funktionen können in bestimmten Situationen hilfreich sein, aber die meisten Leute missbrauchen sie.
In Go wird die Funktion init() als Teil der Paketinitialisierung ausgeführt, direkt nachdem Variablen initialisiert und Werte festgelegt wurden.
Dieser Vorgang findet statt, wenn ein Paket importiert wird, unabhängig davon, was im Paket verwendet wird.
Ich sehe oft Logik innerhalb der Init-Funktionen, die niemals vorhanden sein sollte.
Instanzen einer Struktur erstellen
Daten innerhalb einer Struktur auffüllen
Initialisierung anderer Abhängigkeiten
Das Problem ist das Testen.
Den glücklichen Weg zu testen ist vielleicht einfach, aber was ist mit Fehlerszenarien?
Wenn Sie den Init-Funktionen Logik hinzufügen, die sich unter verschiedenen Bedingungen unterschiedlich verhalten könnte, wird es schwierig, diese Szenarien zu duplizieren.
Denken Sie daran, dass der Schlüssel zur Entwicklung zuverlässiger Software darin besteht, Tests zu schreiben, die dieselben Funktionen wiederholt mit unterschiedlichen Eingaben ausführen, um unterschiedliche Ergebnisse zu validieren. Mit Init-Funktionen ist das nicht einfach, deshalb schreiben die Leute diese Tests nicht.
Eine übermäßige Verwendung der Init-Funktion führt letztendlich dazu, dass Code schwieriger zu testen und zu warten ist und unzuverlässig wird.
Meine Empfehlung ist, die Init-Funktion ganz zu vermeiden. Normalerweise ist die Verwendung eines Konstruktors wie einer New()-Funktion der richtige Weg.
Das obige ist der detaillierte Inhalt vonVermeiden Sie die Go-Init-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!