たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

分離と汎化

entangled -> separated -> generalized

ごちゃごちゃのコードはそのまま汎化できない.
コードを整理して機能別にまとまりを作って、共通部分を汎化用インターフェースとして切り出す.

抽象化 -> 最上層: 複雑性↓、下層: 複雑性↑

汎化用インターフェース自体が複雑性を導入する。
それに勝る、上層部での複雑性低減が目的.
その前段階となる「まとまりの分離」というか「フローの整理」的なやつは複雑性を導入しない.
コード量も階層も増えず、ただ絡まった糸を解くだけ.

最初から絡まっていないコードを書くのがプログラマの腕.

"抽象化は道具であって目的ではない"
教条的なインターフェースはYAGNI
分離さえしておけば、インターフェースの導入は簡単に終わる(必要に合わせていつでも簡単に導入できる)