クリーンアーキテクチャーについて少し学んだ
今迄あまり設計というものに触れてきていなかったのだけど、今回初めて「クリーンアーキテクチャ」という概念を少し学んだ。 実をいうと SOLID原則すら触れていなかった。名前は知ってたけどねぇ...
関数型を使ってることが多いのもあるけど、古いものと考えていた節は正直ある。 いざ触れてみるとやっぱり為になることが多いねぇ...
Cj-bc/3dShellの設計に悩んだ挙句、部分的に考え方を取り入れてみている。
以下は、調べている間に感じたことの個人的なメモで 技術的に但しいかは保証できない ので注意。 何かしら「これは違うぞ!!」というのがあれば、 Twitterにでも直接直リプライ等で指摘していただけるとありがたいです
クリーンアーキテクチャについて軽いメモ
クリーンアーキテクチャは「こうやって作ると良い設計になる」というだけであり、別段正解の使い方が一つあるわけではない
サンプル実装もあるにはあるがあくまでサンプル
別にもっと層があっても少なくてもいい
アーキテクチャはそれぞれの事例に合わせて作るべき
SOLID原則をつきつめるとこれになる感じがある。
Onion ArchitectureやHexagonal architecure等の共通点を取り出した(ような)もの
なので図式には共通点が色々ある
永続化の仕組みやフロントエンド、入力の取得方法等を個別のクラスに切り分けることができるので、パーツ毎の作成が楽
「DB決まってないけどフロント作って!」みたいな無茶ぶりができる
テストする時にMockにいれかえたり等できる。
インターフェースを介したやりとりには
DTO
(Data Transfer Object) を作成して行うただDBとのやりとりに
DTO
使ってない例が結構あるのでそこの匙加減わからんなぁ
大事な要素
「ドメイン・ビジネスロジックを守る」 のが何よりも大事
外から内側への依存
インターフェースを用いることにより、「具象」ではなく「抽象」への依存にする