"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > GO — Structure du projet

GO — Structure du projet

Publié le 2024-07-30
Parcourir:952

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à complètement 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 ne me touche pas), 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


Faites un zoom rapide sur le noyau. J'essaie d'être simpliste ici et de ne pas créer de dossiers. Je n'entretiens qu'un 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


Faites un zoom rapide sur les détails. Voici simplement les outils grâce auxquels le domaine atteindra son succès.

Conclusion

Je suis encore faible dans la voie proposée par Golang, j'essaie toujours de comprendre ce qu'on peut en faire, cependant, même si je n'aime pas la façon dont Golang fait certaines choses, elle s'est avérée assez simple et robuste.

Résumé, j'essaie de garder les choses simples lorsque cela est possible et si cela 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

Déclaration de sortie Cet article est reproduit sur : https://dev.to/espigah/go-estrutura-de-projetos-1j0k?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3