アダプティブコードの根っこの根っこ
引き続き単一責務について考える。
プログラムって極限まで抽象化すると。
1.引数、戻り値の無い処理
2.引数だけがある処理
3.戻り値だけがある処理
4.引数も戻り値もある処理
の4パターン、たったこれだけ
.net frameworkの定義済みデリゲートを割り当ててみると
1.引数、戻り値の無い処理
Action()
2.引数だけがある処理
Action<T>(T obj)
3.戻り値だけがある処理
Func<TResult>()
4.引数も戻り値もある処理
Func<TResult,T>(T arg)
となる。(引数がいくつも連なるのは割愛するとして)
PredicateやConverterなんかは目的に特化しているけども、4.と同じ。
この辺は特化させた方が人の理解を促すから??
1~4をインターフェースで表すと。
こんな感じ?