„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > GO – Projektstruktur

GO – Projektstruktur

Veröffentlicht am 30.07.2024
Durchsuche:305

Ich habe dieses Jahr (2022) angefangen, wirklich mit Golang zu programmieren, und habe sofort nach Referenzen gesucht, wie ich meine Struktur für das Projekt am besten weiterentwickeln kann. Dieser Beitrag wird nur einer von vielen anderen sein, die sich mit demselben Thema befassen, und vielleicht habe ich mich deshalb entschieden, ihn zu schreiben.

Erstens ist Golang bereits völlig anders in der Art und Weise, wie es mit Ordnern/Paketen umgeht, und zur Verbesserung hat es ein sehr eigensinniges Wesen, wobei viele offizielle Dokumente darüber informieren, wie „Goway“ etwas tun würde (vollständig Allerdings gibt es in der Art und Weise, wie Sie Ihre Dateien und Ordner organisieren, keine wirkliche Richtung, sodass jeder diesem Teil seine eigene Interpretation der Welt gibt.

Ich werde diesen Beitrag in 3 Referenzen unterteilen und dann zeigen, wie die Mischung dieser Referenzen im Projekt ausgefallen ist.

Erster Hinweis

Ein komplexes System, das funktioniert, hat sich immer aus einem einfachen System entwickelt, das funktioniert.
-- Gallsches Gesetz

Bei kleinen Anwendungen muss die Projektstruktur einfach sein.

Imagem para um projeto simples com tudo na raiz


https://innovation.enova.com/gophercon-2018-how-do-you-structure-your-go-apps/

Zweite Referenz

Die „Community“ hat eine Reihe historischer und neuer Design-Layoutmuster durchgeführt, die im Go-Ökosystem üblich sind. In dieser Umfrage gibt es viele coole Dinge, aber was meine Aufmerksamkeit erregte, waren die Ordner /cmd und /internal .

/cmd

Hauptanwendungen für dieses Projekt.
Der Verzeichnisname für jede Anwendung muss mit dem Namen der gewünschten ausführbaren Datei übereinstimmen (z. B. /cmd/myapp).

/intern

Privater Anwendungs- und Bibliothekscode. Dies ist Code, den andere nicht in ihre Anwendungen oder Bibliotheken importieren sollen. Beachten Sie, dass dieses Layoutmuster vom Go-Compiler selbst vorgegeben wird.

Dritte Referenz

Architekturen, die die „Details“ besser von dem trennen, was wirklich Wert liefert.

GO — Estrutura de projetos


Ergebnis

Für eine einfache Anwendung versuche ich, sie einfach zu halten. Wenn der Umfang jedoch etwas größer wird, versuche ich, leicht zwischen „Kern“/Domäne und Detail/Infrastruktur zu unterscheiden.

GO — Estrutura de projetos


Beachten Sie, dass ich in cmd nicht über den Tuttipet-Ordner verfüge, wie das Referenzprojekt vermuten lässt. Zuerst habe ich versucht, das vorgeschlagene Muster zu verwenden, aber da diese API bereits mit einer Befehlszeilenschnittstelle und einem Anbieter für Terraform herauskam, habe ich beschlossen, es dabei zu belassen.

GO — Estrutura de projetos


Machen Sie einen kurzen Blick auf den Kern. Ich versuche hier einfach zu sein und keine Ordner zu erstellen. Ich pflege nur einen Kontaktpunkt mit der Außenwelt (main.go), alles, was verallgemeinert wird, hat seine eigene Datei und alles, was nicht, bleibt einfach in seinem Kontext.

GO — Estrutura de projetos


Mit tuttipet.New (kurz, prägnant und eindrucksvoll) kann die „schmutzige“ Ebene mit den Anwendungsfällen interagieren (ich finde das Wort „Usecase“ leichter zu assimilieren als Interaktor)

GO — Estrutura de projetos


Machen Sie einen kurzen Blick auf die Details. Hier sind einfach die Werkzeuge, mit denen die Domain ihren Erfolg erzielen wird.

Abschluss

Ich bin immer noch schwach in Bezug auf den Weg, den Golang bietet, und versuche immer noch herauszufinden, was man damit machen kann. Obwohl mir die Go-Methode, einige Dinge zu tun, nicht gefällt, hat sie sich jedoch als recht erwiesen einfach und robust.

Zusammenfassung: Ich versuche, es möglichst einfach zu halten, und wenn es zu komplex wird ... gehe ich zurück ans Zeichenbrett.

Weitere Referenzen

https://dev.to/booscaaa/implementando-clean-architecture-com-golang-4n0a
https://github.com/golang-standards/project-layout
https://blog.boot.dev/golang/golang-project-structure/
https://github.com/bnkamalesh/goapp
https://www.wolfe.id.au/2020/03/10/how-do-i-structure-my-go-project/
https://blog.logrocket.com/flat-structure-vs-layered-architecture-structuring-your-go-app/
https://developer20.com/how-to-structure-go-code/
https://dev.to/jinxankit/go-project-structure-and-guidelines-4ccm
https://github.com/bxcodec/go-clean-arch
https://golangexample.com/example-go-clean-architecture-folder-pattern/
https://www.calhoun.io/flat-application-structure/
https://go.dev/doc/ Effective_go#names
https://go.dev/blog/package-names

Originalbeitrag: https://medium.com/@espigah/go-layout-do-projeto-18aacce8089d

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/espigah/go-estrutura-de-projetos-1j0k?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3