抽象化
#WIP
良い抽象化、とは
間違った抽象化、とは
今後、変更の余地があるものに対して ref
考えられる最もシンプルな状態にしておく
これがYAGNIでもない、最適な「変更にopenな状態」なのかも
最小化
minimalism
インターフェースを通して公開するものを最小化する
詳細を公開しすぎると、クライアントに統合されてしまう
蒸留
拡張性
extensibility
抽象自体が拡張に開いているように設計する
合成可能性
composability
モジュールとして抽象を設計すると、抽象どうして組み合わせることができる
副作用を持たないように気にかけるなど
メソッドチェーン的なデザインも含まれる?
関連
https://postd.cc/how-dhh-organizes-his-rails-controllers/
コードの重複を見つけたとき、
そのコードの重複が、「偶然の重複」なのか「本物の重複」なのかを見抜く必要がある
偶然の重複なのであれば、重複すべできではない
ref 『Clean Architecture』.icon p.163
関数型言語は計算を抽象化し、OOPは対象を抽象化する
という考え方は、圏論の本質が自然返還であることと関連がありそうmrsekut.icon
https://qtamaki.hatenablog.com/entry/2017/03/10/142428
関連
漏れのある抽象化の法則
YAGNI
DRY
https://creators-note.chatwork.com/entry/2020/11/06/101118
UpdaterとSelctorの2つに抽象化する
reducerや、FCもこの2つで表現できる
参考
適切に抽象化されたコードとはなにかって話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
https://nekogata.hatenablog.com/entry/2015/08/05/001742