ホームページ  >  記事  >  バックエンド開発  >  GO — プロジェクト構造

GO — プロジェクト構造

王林
王林オリジナル
2024-07-17 03:41:01934ブラウズ

私は今年 (2022 年) から実際に Golang を使ったプログラミングを始めました。すぐにやったことは、プロジェクトの構造を進化させる最善の方法は何かについての参考資料を探すことでした。この投稿は、同じテーマについて話している他の投稿のうちの 1 つにすぎません。おそらくそれが私がこの投稿を書こうと思った理由です。

第一に、golang はフォルダー/パッケージの処理方法がすでに大きく異なっており、さらに改善するには、非常に独自の本質を持っており、何かを行うための「goway」方法がどのようなものかを示す多くの公式ドキュメントが含まれています (fullただし、ファイルやフォルダーの整理方法には実際の方向性がないため、この部分については誰もが独自の世界解釈を行っています。

この投稿を 3 つの参考資料に分割し、これらの参考資料の組み合わせがプロジェクトでどのようになったかを示します。

最初の参考資料

常に機能する複雑なシステムは、機能する単純なシステムから進化しました。
-- ガルの法則

小規模なアプリケーションの場合、プロジェクト構造はシンプルである必要があります。

Imagem para um projeto simples com tudo na raiz


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

2番目の参考資料

「コミュニティ」は、Go エコシステムで一般的な一連の歴史的デザイン レイアウト パターンと新しいデザイン レイアウト パターンの調査を行いました。この調査には素晴らしい点がたくさんありますが、私の注意を引いたのは /cmd フォルダーと /internal フォルダーです。 .

/cmd

このプロジェクトの主な用途
各アプリケーションのディレクトリ名は、必要な実行可能ファイルの名前と一致する必要があります (例: /cmd/myapp)。

/内部

プライベートアプリケーションおよびライブラリコード。これは、他の人がアプリケーションやライブラリにインポートしたくないコードです。このレイアウト パターンは Go コンパイラー自体によって強制されることに注意してください。

3番目の参考資料

実際に価値をもたらすものから「詳細」をより適切に分離するアーキテクチャ。

GO — Estrutura de projetos


結果

単純なアプリケーションの場合はシンプルに保つよう努めますが、範囲が少し大きくなると、「コア」/ドメインと詳細/インフラストラクチャを少し区別するように努めます。

GO — Estrutura de projetos


参照プロジェクトが示唆しているように、cmd には tuttipet フォルダーがないことに注意してください。最初は提案されたパターンを使用しようとしましたが、この API にはコマンド ライン インターフェイスと Terraform 用のプロバイダーがすでに提供されているため、このままにすることにしました。

GO — Estrutura de projetos


コアを素早くズームインします。ここでは単純化してフォルダーを作成しないようにします。私は外部世界との接点を 1 つだけ維持します (main.go)。一般化されたものはすべて独自のファイルを持ち、そうでないものはそのコンテキスト内に残ります。シンプルです。

GO — Estrutura de projetos


tuttipet.New (短く、簡潔で、刺激的) を使用すると、「ダーティ」レイヤーがユースケースと対話できます (ユースケースという言葉はインタラクターよりも理解しやすいと思います)

GO — Estrutura de projetos


詳細をすばやく拡大します。ここにあるのは、ドメインが成功を達成するためのツールです。

結論

私はまだ Golang が提供する道を進んでいる子供で、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-structor/
https://github.com/bnkamalesh/goapp
https://www.wolfe.id.au/2020/03/10/how-do-i-structural-my-go-project/
https://blog.logrocket.com/ flat-structure-vs-layered-architecture-structuring-your-go-app/
https://developer20.com/how-to-structural-go-code/
https://dev.to/jinxankit/go-project-structor-and-guidelines-4ccm
https://github.com/bxcodec/go-clean-arch
https://golangexample.com/example-go-clean-architecture-folder-pattern/
https://www.calhoun.io/フラットアプリケーション構造/
https://go.dev/doc/Effective_go#names
https://go.dev/blog/package-names

元の投稿: https://medium.com/@espigah/go-layout-do-projeto-18aacce8089d

以上がGO — プロジェクト構造の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。