- 2005-07-06
- programming
よくDIの説明を見ると、「オブジェクトの生成を自動化する」とか「依存性をソースコードから排除する」とか書いてある。
でも、だったらソース書き換えてもいいじゃん。って思ってるんです。面倒臭い?それは書く手段っつーか記法の問題で、賢いIDEとかが解決してくれるかもしれないじゃん。DIコンテナの設定ファイルを書き換えるのと同じくらい簡単にソースコードを書き換えられればいいんだよね。
というのは半分アオリで言ってますが。Javaだったらそもそもjarだけでソースが無いって状況もあるわけで。
ただ、DIコンテナが解決してくれる諸問題を、解決する別の方法があるんじゃないかとは思っている。特にDIコンテナっていうのはJavaのような言語にはマッチした方法なんだけど、(よくアチコチで僕が言ってますが)PHPのような言語に適応するのであれば、やっぱ別の方法を探したくなる。
例えば、命名規則によって、変更があった時も機械的に書き換えられるコードを書くという方法もあるだろう。あるいは、中間言語っつーか中間記法を作ってそこからソースコードを生成する、みたいなアプローチの方がいいかもしれない。依存関係はソコだけに記述する。するとその依存関係に基づいたソースを生成してくれる。と。
記法って重要だと最近思う。JavaとGroovyみたいに、同じ機能(API)にアクセスできる別の記法があるというのはすごくイイと思う。フレームワークを書く人とちょっとしたプログラムを書く人が別の記法を使うというのはすごく正常だと思う。(でも僕がイイと思うものはあまり流行った試しがない)。
Smartyのアプローチが好きなのは、あれが中間言語であり(構文はともかく)、PHPのソースコードジェネレータだからだ。
関係無いけど、ソースコードジェネレータっていう手法があ流行らないのは、自分で書いたコードしか信じられないというプログラマーの精神的障壁が邪魔してるのかな。とか。