«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > ГО — Структура проекта

ГО — Структура проекта

Опубликовано 30 июля 2024 г.
Просматривать:648

Я начал программировать с использованием Golang по-настоящему в этом году (2022), и сразу же начал искать рекомендации о том, как лучше всего развивать структуру проекта. Этот пост будет лишь одним из многих других, посвященных той же теме, и, возможно, именно поэтому я решил его написать.

Во-первых, golang уже совершенно отличается в том, как он работает с папками/пакетами, и, в целях улучшения, он имеет очень самоуверенную суть: во многих официальных документах сообщается, каким будет «goway» способ сделать что-то (полный не трогай меня), однако в том, как вы организуете свои файлы и папки, на самом деле нет определенного направления, поэтому каждый как бы дает свою собственную интерпретацию мира в этой части.

Я разделю этот пост на 3 отсылки, а затем покажу, как сочетание этих отсылок получилось в проекте.

Первая ссылка

Сложная система, которая работает, неизменно развилась из простой системы, которая работала.
-- Закон Галла

Для небольших приложений структура проекта должна быть простой.

Imagem para um projeto simples com tudo na raiz


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

Вторая ссылка

«Сообщество» провело исследование ряда исторических и новых шаблонов макетирования, распространенных в экосистеме Go. В этом опросе есть много интересных вещей, но мое внимание привлекли папки /cmd и /internal.

/cmd

Основные приложения для этого проекта.
Имя каталога для каждого приложения должно совпадать с именем желаемого исполняемого файла (например, /cmd/myapp).

/внутренний

Частное приложение и код библиотеки. Это код, который вы не хотите, чтобы другие импортировали в свои приложения или библиотеки. Обратите внимание, что этот шаблон макета налагается самим компилятором Go.

Третья ссылка

Архитектуры, которые лучше отделяют «детали» от того, что действительно приносит пользу.

GO — Estrutura de projetos


Результат

Для простого приложения я стараюсь сделать его простым, однако, когда объем становится немного больше, я стараюсь провести небольшое различие между тем, что является «ядром»/предметом, и тем, что является деталями/инфраструктурой.

GO — Estrutura de projetos


Обратите внимание, что в cmd у меня нет папки tuttipet, как предполагает эталонный проект. Сначала я попробовал использовать предложенный шаблон, но поскольку этот API уже вышел с интерфейсом командной строки и провайдером для terraform, я решил оставить его таким.

GO — Estrutura de projetos


Быстро увеличьте ядро. Я стараюсь быть упрощенным и не создавать папки. Я поддерживаю только одну точку контакта с внешним миром (main.go), все, что обобщено, имеет свой собственный файл, а все, что не является таковым, остается в своем контексте, просто.

GO — Estrutura de projetos


С помощью tuttipet.New (коротко, лаконично и запоминающе) «грязный» слой может взаимодействовать с вариантами использования (я считаю, что слово «использование» легче усвоить, чем «интерактор»)

GO — Estrutura de projetos


Быстро увеличьте детали. Вот лишь инструменты, с помощью которых домен достигнет успеха.

Заключение

Я все еще слаб в пути, который предлагает Golang, и все еще пытаюсь понять, что с ним можно сделать, однако, хотя мне и не нравится способ выполнения некоторых вещей в Go, он оказался вполне простой и надежный.

Резюме: по возможности стараюсь сделать его простым, а если станет слишком сложным... Я вернусь к чертежной доске.

Другие ссылки

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/efficient_go#names
https://go.dev/blog/имя-пакетов

Исходное сообщение: https://medium.com/@espigah/go-layout-do-projeto-18aacce8089d

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/espigah/go-estrutura-de-projetos-1j0k?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3