Djangoはデザイナフレンドリー? | Top | 俺がwikiを嫌う理由

 

やっぱりDIの良さがわからない

GoogleがGuiceというDIコンテナをリリースし、素早く紹介記事があがったわけだけど、やっぱりDIの良さがわからない。


はてなで貰ったコメントに突っ込んでみる。
Yoshioriさん。「AOPいいよ!!トランザクションとか自分で実装するのメンドイよ!!」
おいら「Djangoでトランザクションスコープをリクエストにしとけばいいんで…」
nekoraさん 「スクリプト言語で間に合う程度の小規模・低負荷・単純な案件ならばスクリプトで済ませるべきであるという話の一例。時に「動的言語」って何だろ」
おいら「「動的型付言語でした」。スクリプト言語で間に合わない程度というと、世界数カ所で同時にコミットするような案件位だよね。みんな凄いのやってるねぇ。とはいいながら、確かにへぼを集めてもある程度きちんと書けるのがJavaとかの良さだというのは分かってるぞ。あれ?DIの話関係無いねぇ」


これはきっと少人数開発しているからということが大きいと思うんだけど、少人数でもDIはいいんだよということを誰かが教えてくれないかなぁ。

だって、部品をテストするときに「インターフェース定義」「スタブ(モック)作成」という余計な手間と、スタブの代わりになる部品(実装)ができたときに設定を書き換える手間が増える訳じゃん。


少人数開発(実際は2チーム)で開発をしていれば、だいたい開発スピードもわかってるし、うまくスケジューリングすれば部品待ちってことも殆どないわけで。

そもそもが動的言語使っちゃえば、設定ファイルとかアノテーション書き換える時間で実装を書き換えられちゃうんだから、DIの必要性を感じたらPythonに乗り換えるタイミングなんじゃないかとか思ってしまう。
つか、Javaやめた方が良いよと言う人が最近多い。もっともだと思う。

Taged with:,,

urihttp://www.everes.net/2007/mar/15/java-di-googleguice/

Entry Date:2007-03-15 13:55

Author:makoto

ping url:http://www.everes.net/2007/mar/15/java-di-googleguice/tbping/

subscribe:feed with LDR

Comments

1 by liris

16:50 on

2007-03-15

何をおっしゃいます。DIは素晴らしいです。XMLを書き換えるだけで実装を変えられて、XMLをミスっても実行時にしかそれが分からない。まるで動的言語のようです。XMLなので、Pythonと違って汎用性が高いです。

まじめな話、オブジェクトの作成で単純な依存関係を適当に解決してくれるところはいいです。

ちなみに、Zope3もにた感じのDIもどきがいて、設計としては面白いけど、僕がZopeから離れた理由でもあります。

2 by mopemope

17:10 on

2007-03-15

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?、振る舞いはないの?構造体でよくね?」

Add Comment

コメント追加








What's Next
Tags
Blog Archive
Project
  • » pymagnolia

    ma.gnolia.comのAPIを操作するPythonライブラリ。

  • » django-ja

    Djangoと日本の仲間たち。
    Djangoに関するニュースや、「仲間たち」のブログエントリをアグリゲートしています。

  • » rhaco

    PHPのWebフレームワーク。 PHPらしさを失わず直感的に記述できることを目指している。 Djangoと同じく、他のライブラリに依存しない。また、Djangoっぽいテンプレートの作り方も可能。

  • » Tracka

    スモールチーム、家族用の知共有ウェブアプリケーション。
    テキスト、画像、youtube動画、stage6動画等をトラック!

  • » BMO

    BMOは、本、CD、DVD、ゲームに印刷されているバーコードをiSightで読み取り、AmazonのAPIを利用して画像や情報をmacに保存します。iSightのついているmacで利用してください。Leopardと呼ばれているOSX 10.5以上が必要です。 保存した情報は、OSX Leopard(10.5)から搭載されたCover FlowとQuick Lookという仕組みを利用して表示します。