/note/tech

GoのWebアプリ開発でフラットパッケージにした話

簡単にまとめです。

  • .goのファイル数が100未満であれば、フラットパッケージ、オススメです
  • パッケージもシンプルにして、同時に極力Struct, Interfaceを排除した
  • handler(Endpoint) –> usecase –> repositoryといった流れで制御フローが流すことが世の中多そうだが、endpoint側にロジックを実装、repositoryは無くして直接db層の関数を呼び出した。初期化はdb.goにdbのclientを初期化してそれを使う
  • modelになるべくロジックを寄せたた
  • testはhandlerの関数単位で行う
  • DB層をインターフェースを経由せずに扱うことはLocalStackなど外部モックサービスを利用すれば問題にならなかった

上記によって色々柔軟性は失われたかもしれませんが、少なくてもコード量はグッと減り開発スピードの向上に寄与できるかもしれません。

Clean Architectureに盲目的に従おうとする人が多い中、いい感じに取捨選択できていて素晴らしい。

Clean Architectureは「Javaで」「最大限柔軟に」を目指したひとつのサンプルだから全てを模倣する必要はないというのに。