「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > GO — プロジェクト構造

GO — プロジェクト構造

2024 年 7 月 30 日に公開
ブラウズ:871

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

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

この投稿を 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-structor-my-go-project/
https://blog.logrocket.com/フラット構造-vs-layered-architecture-structuring-your-go-app/
https://developer20.com/how-to-structural-go-code/
https://dev.to/jinxankit/go-project-structural-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

リリースステートメント この記事は次の場所に転載されています: https://dev.to/espigah/go-estrutura-de-projetos-1j0k?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3