Go-Coding-Konventionen bei BankSalad
(blog.banksalad.com)- Das BankSalad-Team hat Go vier Jahre lang intensiv verwendet und dabei verschiedenste Fehler und Irrwege erlebt, aus denen diese Coding-Konventionen entstanden sind.
Nützliche Lektüre vorab
Verschiedene Konventionsleitfäden und Best-Practice-Materialien, die man mindestens einmal lesen sollte
- The Zen of Go
- Detaillierte Erklärung zu jeder Aussage: The Zen of Go | Dave Cheney
- Koreanische Übersetzung: Die Philosophie von Go | marsettler.com
- Go Proverbs
- Effective Go | go.dev
- CodeReviewComments · golang/go Wiki | GitHub
- Practical Go | Dave Cheney
- Style Guide des Thanos-Teams (Koreanisch, Original)
- Style Guide des Uber-Teams (Koreanisch, Original)
- Ashley McNamara + Brian Ketelsen. Go best practices | YouTube
- Idiomatic Go | Sourcegraph
- Go Style Best Practices | Google
Coding Practices
- Don't panic
- Funktionen, die einen Panic auslösen können, mit dem Prefix
mustversehen / Panic vs Fatal - Panic-sichere Goroutines / Concurrent-sicheres Einsammeln von Ergebnissen
- Error stacking / Error handling / Error logging
- No named return
- HTTP-Client-Konfiguration / Wiederverwendung von HTTP-Verbindungen
- Beim Deklarieren von Slices
lenundcapsetzen / Nil slice vs Empty slice - Bool-Maps und
struct{}-Maps / Beim Map-Zugriffokprüfen / Avoid map loop - Beim Iterieren über Strings
rangeverwenden / String-Länge - Lieber
context.Background()alscontext.TODO()verwenden - Early return aktiv nutzen
time.Durationverwenden / Zeitzonen- Tabellengetriebene Tests / No monkey patch / Deterministic test
- Avoid reflect
- Functional options
Coding-Stil
Die beschriebenen Inhalte sind der Stil des BankSalad-Teams; es wird empfohlen, die einzelnen Punkte nicht einfach unverändert zu übernehmen, sondern sie an die jeweilige Organisation anzupassen.
- Reihenfolge der Funktionsargumente
- Benennung von Testfunktionen
- Reihenfolge von Deklarationen innerhalb einer Datei
- Import-Reihenfolge
- Singular ist get, Plural ist list
- Mehrdeutige Wörter vermeiden
- Benennung von Konstanten
- Paketbenennung
- Projektstruktur
2 Kommentare
:woman_running:
Guter Artikel, ich habe ihn mit Interesse gelesen. Ich denke, dass in Korea zwei Unternehmen Go am besten nutzen: BankSalad und AB180.