GO — プロジェクト構造
私は今年 (2022 年) から実際に Golang を使ったプログラミングを始めました。すぐにやったことは、プロジェクトの構造を進化させる最善の方法は何かについての参考資料を探すことでした。この投稿は、同じテーマについて話している他の投稿のうちの 1 つにすぎません。おそらくそれが私がこの投稿を書こうと思った理由です。
第一に、golang はフォルダー/パッケージの処理方法がすでに大きく異なっており、さらに改善するには、非常に独自の本質を持っており、何かを行うための「goway」方法がどのようなものかを示す多くの公式ドキュメントが含まれています (fullただし、ファイルやフォルダーの整理方法には実際の方向性がないため、この部分については誰もが独自の世界解釈を行っています。
この投稿を 3 つの参考資料に分割し、これらの参考資料の組み合わせがプロジェクトでどのようになったかを示します。
最初の参考資料
常に機能する複雑なシステムは、機能する単純なシステムから進化しました。
-- ガルの法則
小規模なアプリケーションの場合、プロジェクト構造はシンプルである必要があります。
2番目の参考資料
「コミュニティ」は、Go エコシステムで一般的な一連の歴史的デザイン レイアウト パターンと新しいデザイン レイアウト パターンの調査を行いました。この調査には素晴らしい点がたくさんありますが、私の注意を引いたのは /cmd フォルダーと /internal フォルダーです。 .
/cmd
このプロジェクトの主な用途
各アプリケーションのディレクトリ名は、必要な実行可能ファイルの名前と一致する必要があります (例: /cmd/myapp)。
/内部
プライベートアプリケーションおよびライブラリコード。これは、他の人がアプリケーションやライブラリにインポートしたくないコードです。このレイアウト パターンは Go コンパイラー自体によって強制されることに注意してください。
3番目の参考資料
実際に価値をもたらすものから「詳細」をより適切に分離するアーキテクチャ。
結果
単純なアプリケーションの場合はシンプルに保つよう努めますが、範囲が少し大きくなると、「コア」/ドメインと詳細/インフラストラクチャを少し区別するように努めます。
参照プロジェクトが示唆しているように、cmd には tuttipet フォルダーがないことに注意してください。最初は提案されたパターンを使用しようとしましたが、この API にはコマンド ライン インターフェイスと Terraform 用のプロバイダーがすでに提供されているため、このままにすることにしました。
コアを素早くズームインします。ここでは単純化してフォルダーを作成しないようにします。私は外部世界との接点を 1 つだけ維持します (main.go)。一般化されたものはすべて独自のファイルを持ち、そうでないものはそのコンテキスト内に残ります。シンプルです。
tuttipet.New (短く、簡潔で、刺激的) を使用すると、「ダーティ」レイヤーがユースケースと対話できます (ユースケースという言葉はインタラクターよりも理解しやすいと思います)
詳細をすばやく拡大します。ここにあるのは、ドメインが成功を達成するためのツールです。
結論
私はまだ 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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?
