むかし virtual いま partial ― コード生成するなら partial を検討すべし

ドメインモデルをLINQで構築する(その5)」を読んでいて,素直におもしろいなぁと思ったのですが,ふと思い出した昔話.

  • 再利用できそうなクラスではなるべく virtual メソッドにしようぜ
  • というかむしろデフォルト virtual で (Java)
  • 派生されたくなければ明示的に final / sealed
  • やっぱりデフォルト virtual はやめた方がいいんじゃね? (C#)

みたいな議論が色々繰り返されてきましたが,今後しばらく「コード生成するなら partial class にしておくべし」みたいなのの実験タイムが来るのかもしれませんね.あと「virtual メソッドの代わりに partial メソッドにしておけ」とか.
プログラマにとってこの手のバックドア (virtual なり partial) は,「後で使うかもしれないから」症候群の蜜であり毒でもあります.
が,コード生成されたクラス特有の「堅さ」みたいなのがちょっとやわらいでいる印象を受ける partial class は,なんだかちょっと期待してしまう自分が居ます.たとえるならこんな感じ↓

ビューティフル塊魂

ビューティフル塊魂