2017-03-09 6 views
2

私はGo TourとGoogled "golangパッケージ"を読んだことがありますが、中程度のサイズのアプリケーションを整理するためのGoのベストプラクティスについてのアドバイスはまだ見つかりませんでした。Goプログラム - パッケージなどを整理していますか?

概念的にいくつかの異なる部分(おそらく10^3-10^4 LOC)があり、他のアプリケーションで使用するために再利用可能なライブラリを作成するつもりはない場合、すべてのソースコードファイルはpackage main ?永続的に保存されたデータ

  • の束を管理

    • 何か:たとえば...

      を明確にするために


      、私のプログラムは、次の主要なチャンクを持つことになりますと言うことができます通常の作成、読み取り、更新、削除の操作を許可する

  • ヒト/座標
  • 何かが定期的にSOAPを使用して、Webサービスからのデータ更新をフェッチこれら
  • 何かの間で仲介格納されたデータを表示することができ
  • 何か。

これはMVCとデータのフェッチャーになります。人々は何をすべきかで周り見てから

は、私は今、私は

  • package mainとその中のfunc main() { ... }といくつかのmain.goを入れてそこに
  • $GOPATH/src/myprogramnameを作成する必要があります疑い。
  • 常にどこパッケージ名など、これらのサブディレクトリ内のファイル.GOはpackage fetchで始まる必要があり
    • $GOPATH/src/myprogramname/model
    • $GOPATH/src/myprogramname/view
    • $GOPATH/src/myprogramname/control
    • $GOPATH/src/myprogramname/fetch
  • のようないくつかのサブディレクトリを作成しますサブディレクトリ名と一致します。
  • main.goの成長に合わせて私のmain.goはおそらくimport (... "fetch"; "model"; "view"; "control")
  • 、目的に応じて名付けられ、他の適度なサイズの.GOのファイルに分割します。
  • cd $GOPATH/src/myprogramname 
    go build 
    

することにより、上記のパッケージサブディレクトリに* .GOを含むプログラムの構築は、すべて私が行う必要があるということですか?それは物事を整理するための適切な慣用的なGoの方法ですか?私は知っているべきであるか、または考えているべきことがさらにありますか?いくつかの標準的なWebページやPDFが見落とされていますが、この情報を見つけるために読むべきですか?

要するに、私は10000行main.goにすべてが入っていることを望んでいません。よく知られている構造化プログラミングやOOの原則に従って、ファイル、サブディレクトリ、パッケージ、およびその他の組織単位にコードを編成するための慣用的なGoの原則は何ですか?

答えて

1

機能のカプセル化レベルに基づいて、つまりメインパッケージの別のパッケージとロジック機能で低レベルの機能を持つことによって、プロジェクトを複数のレイヤに分割できます。 (あなたはMVCのようなアーキテクチャーに夢中になるかもしれません) 私たちはあなたのコードについて詳しくは分かっていないので、どのようなアーキテクチャーが最適かは分かりません。

最終的には、コードのシンプルさと再利便性のバランスに基づいて選択します。

+0

これは一般的なアドバイスですが、詳細を探していましたが、明確にするために質問を更新します。 – RedGrittyBrick

+0

詳細をつけてこれ以上のことをすることはできませんでした。私はあなたのアップデートをチェックし、私の答えに提案を追加します:) – Chryor

0

Goの一般的なベストプラクティスは、各パッケージにタイプまたはサービスを提供されているようです。標準ライブラリのほとんどのパッケージは、1つまたは2つのタイプと、それらのタイプを扱う関数を公開しています。 net/httpやtestingのようなものは、サービス自体を実行可能なものの「マイクロサービス」という意味ではなく、特定の活動に関連する機能のセットを提供します。

関連する問題