Rumah  >  Artikel  >  pembangunan bahagian belakang  >  GO — Struktur projek

GO — Struktur projek

王林
王林asal
2024-07-17 03:41:01920semak imbas

Saya mula memprogramkan menggunakan Golang secara nyata pada tahun ini (2022), dan perkara yang saya lakukan segera ialah mencari rujukan tentang cara terbaik untuk mengubah struktur saya untuk projek itu. Siaran ini hanyalah salah satu daripada banyak lagi yang bercakap tentang subjek yang sama, dan, mungkin itulah sebabnya saya memutuskan untuk menulisnya.

Pertama, golang sudah berbeza sama sekali dalam cara ia berurusan dengan folder/pakej, dan, untuk menambah baik, ia mempunyai intipati yang sangat berpandangan, dengan banyak dokumen rasmi yang memaklumkan seperti apa "goway" melakukan sesuatu (penuh of me touch), walau bagaimanapun, dalam cara anda menyusun fail dan folder anda, sebenarnya tidak ada hala tuju, jadi setiap orang memberikan tafsiran mereka sendiri tentang dunia kepada bahagian ini.

Saya akan membahagikan siaran ini kepada 3 rujukan dan kemudian menunjukkan bagaimana gabungan rujukan ini ternyata dalam projek.

Rujukan pertama

Sistem kompleks yang berfungsi sentiasa berkembang daripada sistem mudah yang berfungsi.
-- Undang-undang Hempedu

Untuk aplikasi kecil, struktur projek hendaklah ringkas.

Imagem para um projeto simples com tudo na raiz


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

Rujukan kedua

"Komuniti" melakukan tinjauan terhadap satu set corak reka letak sejarah dan baru muncul yang biasa dalam ekosistem Go Terdapat banyak perkara menarik dalam tinjauan ini, tetapi yang menarik perhatian saya ialah folder /cmd dan /dalaman

/cmd

Aplikasi utama untuk projek ini.
Nama direktori untuk setiap aplikasi mesti sepadan dengan nama boleh laku yang anda mahu miliki (cth. /cmd/myapp).

/dalaman

Aplikasi peribadi dan kod perpustakaan. Ini adalah kod yang anda tidak mahu orang lain mengimport ke dalam aplikasi atau perpustakaan mereka. Ambil perhatian bahawa corak reka letak ini dikenakan oleh pengkompil Go itu sendiri.

Rujukan ketiga

Seni bina yang memisahkan "butiran" dengan lebih baik daripada perkara yang sebenarnya memberikan nilai.

GO — Estrutura de projetos


Hasilnya

Untuk aplikasi mudah, saya cuba untuk menjadikannya ringkas, namun, apabila skop menjadi lebih besar sedikit, saya cuba membuat sedikit perbezaan antara apa itu "teras"/domain dan apa itu perincian/infrastruktur.

GO — Estrutura de projetos


Perhatikan bahawa dalam cmd Saya tidak mempunyai folder tuttipet, seperti yang dicadangkan oleh projek rujukan. Pada mulanya saya cuba menggunakan corak yang dicadangkan, tetapi memandangkan API ini sudah pun keluar dengan antara muka baris arahan dan penyedia untuk terraform, saya memutuskan untuk meninggalkannya dengan cara ini.

GO — Estrutura de projetos


Mengambil zum masuk pantas pada teras. Saya cuba bersederhana di sini dan tidak membuat folder. Saya hanya mengekalkan 1 titik hubungan dengan dunia luar (main.go), apa sahaja yang digeneralisasikan mempunyai failnya sendiri dan apa sahaja yang tidak kekal dalam konteksnya, mudah.

GO — Estrutura de projetos


Dengan tuttipet.Baharu (pendek, ringkas dan menggugah) lapisan "kotor" boleh berinteraksi dengan kes penggunaan (saya dapati perkataan usecase lebih mudah untuk diasimilasikan daripada interaksi)

GO — Estrutura de projetos


Zum masuk pada butiran dengan cepat. Berikut ialah alat yang membolehkan domain tersebut mencapai kejayaannya.

Kesimpulan

Saya masih menolak laluan yang ditawarkan oleh Golang, masih cuba memikirkan apa yang boleh dilakukan dengannya, namun, walaupun saya tidak suka cara Go dalam melakukan beberapa perkara, ia telah terbukti agak mudah dan mantap.

Ringkasan, cuba menjadikannya ringkas apabila boleh dan jika ia menjadi terlalu rumit... Saya akan kembali ke papan lukisan.

Rujukan lain

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

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

Atas ialah kandungan terperinci GO — Struktur projek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Corak Reka Bentuk KilangArtikel seterusnya:Corak Reka Bentuk Kilang