Maison > développement back-end > Golang > le corps du texte

GO — Structure du projet

王林
Libérer: 2024-07-17 03:41:01
original
920 Les gens l'ont consulté

J'ai commencé à programmer en utilisant Golang pour de vrai cette année (2022), et ce que j'ai immédiatement fait a été de chercher des références sur quelle serait la meilleure façon de faire évoluer ma structure pour le projet. Cet article ne sera qu'un parmi tant d'autres qui parlent du même sujet, et c'est peut-être pour cela que j'ai décidé de l'écrire.

Premièrement, golang est déjà très différent dans la façon dont il traite les dossiers/packages, et, pour l'améliorer, il a une essence très opiniâtre, avec de nombreux documents officiels informant quelle serait la manière « goway » de faire quelque chose (version complète de moi touche), cependant, dans la façon dont vous organisez vos fichiers et dossiers, il n'y a pas vraiment de direction, donc chacun donne en quelque sorte sa propre interprétation du monde à cette partie.

Je vais diviser cet article en 3 références puis montrer comment le mélange de ces références s'est révélé dans le projet.

Première référence

Un système complexe qui fonctionne a invariablement évolué à partir d'un système simple qui fonctionnait.
-- Loi de Gall

Pour les petites applications, la structure du projet doit être simple.

Imagem para um projeto simples com tudo na raiz


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

Deuxième référence

La « communauté » a mené une enquête sur un ensemble de modèles de conception historiques et émergents courants dans l'écosystème Go. Il y a beaucoup de choses intéressantes dans cette enquête, mais ce qui a attiré mon attention, ce sont les dossiers /cmd et /internal. .

/cmd

Principales applications de ce projet.
Le nom du répertoire de chaque application doit correspondre au nom de l'exécutable que vous souhaitez avoir (par exemple /cmd/myapp).

/interne

Application privée et code de bibliothèque. Il s'agit d'un code que vous ne souhaitez pas que d'autres importent dans leurs applications ou bibliothèques. Notez que ce modèle de mise en page est imposé par le compilateur Go lui-même.

Troisième référence

Des architectures qui séparent mieux les « détails » de ce qui apporte réellement de la valeur.

GO — Estrutura de projetos


Résultat

Pour une application simple, j'essaie de rester simple, cependant, lorsque la portée s'agrandit un peu, j'essaie de faire une légère différenciation entre ce qui est « noyau »/domaine et ce qui est détail/infrastructure.

GO — Estrutura de projetos


Notez que dans cmd je n'ai pas le dossier tuttipet, comme le suggère le projet de référence. Au début, j'ai essayé d'utiliser le modèle suggéré, mais comme cette API était déjà disponible avec une interface de ligne de commande et un fournisseur pour Terraform, j'ai décidé de le laisser ainsi.

GO — Estrutura de projetos


Faire un rapide zoom sur le noyau. J'essaie d'être simpliste ici et de ne pas créer de dossiers. Je n'entretiens qu'1 seul point de contact avec le monde extérieur (main.go), ce qui est généralisé a sa propre fiche et ce qui ne l'est pas reste dans son contexte, simple.

GO — Estrutura de projetos


Avec tuttipet.New (court, concis et évocateur) la couche « sale » peut interagir avec les cas d'utilisation (je trouve le mot cas d'utilisation plus facile à assimiler qu'interacteur)

GO — Estrutura de projetos


Zoomez rapidement sur les détails. Voici simplement les outils grâce auxquels le domaine atteindra son succès.

Conclusion

Je suis encore un enfant sur le chemin proposé par Golang, je cherche toujours ce qu'on peut en faire, cependant, même si je n'aime pas la façon de faire de Golang, cela s'est avéré assez simple. et robuste.

Résumé, j'essaie de faire simple quand c'est possible et si ça devient trop complexe... je retourne à la planche à dessin.

Autres références

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

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!