GoogleがGuiceというDIコンテナをリリースし、素早く紹介記事があがったわけだけど、やっぱりDIの良さがわからない。
はてなで貰ったコメントに突っ込んでみる。
Yoshioriさん。「AOPいいよ!!トランザクションとか自分で実装するのメンドイよ!!」
おいら「Djangoでトランザクションスコープをリクエストにしとけばいいんで…」
nekoraさん 「スクリプト言語で間に合う程度の小規模・低負荷・単純な案件ならばスクリプトで済ませるべきであるという話の一例。時に「動的言語」って何だろ」
おいら「「動的型付言語でした」。スクリプト言語で間に合わない程度というと、世界数カ所で同時にコミットするような案件位だよね。みんな凄いのやってるねぇ。とはいいながら、確かにへぼを集めてもある程度きちんと書けるのがJavaとかの良さだというのは分かってるぞ。あれ?DIの話関係無いねぇ」
これはきっと少人数開発しているからということが大きいと思うんだけど、少人数でもDIはいいんだよということを誰かが教えてくれないかなぁ。
だって、部品をテストするときに「インターフェース定義」「スタブ(モック)作成」という余計な手間と、スタブの代わりになる部品(実装)ができたときに設定を書き換える手間が増える訳じゃん。
少人数開発(実際は2チーム)で開発をしていれば、だいたい開発スピードもわかってるし、うまくスケジューリングすれば部品待ちってことも殆どないわけで。
そもそもが動的言語使っちゃえば、設定ファイルとかアノテーション書き換える時間で実装を書き換えられちゃうんだから、DIの必要性を感じたらPythonに乗り換えるタイミングなんじゃないかとか思ってしまう。
つか、Javaやめた方が良いよと言う人が最近多い。もっともだと思う。
何をおっしゃいます。DIは素晴らしいです。XMLを書き換えるだけで実装を変えられて、XMLをミスっても実行時にしかそれが分からない。まるで動的言語のようです。XMLなので、Pythonと違って汎用性が高いです。
まじめな話、オブジェクトの作成で単純な依存関係を適当に解決してくれるところはいいです。
ちなみに、Zope3もにた感じのDIもどきがいて、設計としては面白いけど、僕がZopeから離れた理由でもあります。
DI x AOPがいいわけでDIだけで評価してもよくないに決まってる。
逆にAOPさえあればいいんですよ。
むしろJava屋にあってるのはRubyですよ。Ruby!
3 by makoto
19:30 on
2007-03-15
あぁ、Java屋がRubyに追いやられてるw
実際、AOPはフック?って気がしちゃって。
フックとかイベント発行は好き。
4 by Hoge
14:26 on
2007-03-19
単純に言うとオブジェクト指向言語であるJavaを手続き型言語っぽく使いたい!って人達がいて、DIを推奨しているわけです。なんで、DIがJavaの中心にきてしまうようならJavaなんか捨ててしまった方がいいと思います。
違う見方をすれば、DIが動的言語への移行を後押ししてしまっているのが現状かと。
5 by makoto
22:46 on
2007-03-19
Hogeさん、ありがとうございます。
ふーむ。
確かにJavaはJavaらしさを失いつつありますよね。
「テストをする時に!」とか言われると、結局何をしたいのかわからなくなりますが、「手続き型言語っぽく使いたい」と言われれば、便利かもしれないwと感じたりして。
ただ、Javaってオブジェクト指向なのか?と最近は疑問です。言語というよりは、書き方が。
「POJO?、振る舞いはないの?構造体でよくね?」
1 by liris
16:50 on
2007-03-15