関数が引数に要求するラムダ式のシグニチャ設計

自分メモ。

はじめは悩んだ挙句以下のようなシグニチャにしていたが

public static ITree Convert(
  this ITree srctree, Dictionary<IKey,Func<ITree>> map) {...}
...
  tree.Convert(new Dictionary<IKey,Func<ITree>>
  {
    { "PLACEHOLDER1", ()=>TreeFactory.Create(...) },
    ...

今思うと以下のようにすべきだったかもしれない事例が発生。

public static ITree Convert(
  this ITree srctree, Dictionary<Func<Context,Itree>> map)
...
  tree.Convert(new Dictionary<IKey,Func<Context,Itree>>
  {
    { "PLACEHOLDER1", (_)=>TreeFactory.Create(...) },
    ...//Contextを利用する場合もある!
  ...

なるべくシンプルにしたいのが人情だけど、この局面では渡せるものはちゃんと渡すようにしておかないとリファクタが必要になる