インターフェースは作成するものでなく、発見されるべきもの 複雑性を上げるため、インターフェースは必要なときに作製されるべきである。
インターフェースはどこにあるべきか?
- 生産者側: 具体的な実装と同じパッケージにインターフェースが定義
- 消費者側: 使われる外部のパッケージにインターフェースを定義
Goのベストプラクティスは、インターフェースを消費者側に定義することである。
コードの抽象化は発見されるべきであり、作成されるべきではない。 クライアントごとに異なるインターフェースを作成する可能性がある。 SOLIDのI(インターフェース分離の原則)「クライアントは自分が使わないメソッドに依存することを強いられるべきではない。」に従うことができる。
project layoutと呼ばれる構造がある。 批判的な意見もあり、これがすべてではないが、デフォルトとして知っておくのは良いものだと感じる