【Java】DIコンテナって本当に便利か?

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2008/08/20(水) 23:23:26
インターフェースクラスやら設定やら増えまくって
かなりめんどくなってんだけどw
2008/08/28(木) 00:32:17
Springスレ立てないの?
SpringMVC語ってくれる人あそこくらいだったんでよく見に行ってたんだが
2008/08/28(木) 01:32:59
>>47
もはやS2の方が完全上位なんじゃね?
49デフォルトの名無しさん
垢版 |
2008/08/28(木) 06:20:19
学べば学ぶほど悲しくなる
無知こそ最強って感じだよorz
2008/08/28(木) 06:42:56
>>24
利用するDIコンテナに強く依存
2008/08/28(木) 08:15:02
>>49
相当流行ってからじゃないと勉強もイミないかも・・・
2008/08/28(木) 19:54:11
人は流れに乗ればいい
2008/08/28(木) 22:50:00
jspを書かなくていいとか、
せっかく覚えたのに。。。
2008/08/29(金) 01:48:31
>>47
俺もSpringMVCが好きなんだけど、
じゃぁ毎日語ることがあるのかと言われると、そんなものはない。
Spring スレは3年くらいスレが保守されてたが、
1.2.x が安定したころから、特に話題もなくなった。
2008/08/30(土) 01:50:09
>>54
SpringMVC悪くないんだけど、
あのControllerの深い継承具合はどうかと。
なんだよ、あのテンプレートメソッドの嵐。
せっかくDIコンテナなんだから、
ブリッジパターンとかもーちょっとすっきりできなかったのかよ。
2008/08/30(土) 19:32:22
引数戻り値に平気でコレクションの実装クラス使う連中にDIが理解できるはずがない
57デフォルトの名無しさん
垢版 |
2008/08/31(日) 14:28:16
Springはゴミですかそーですか
2008/08/31(日) 16:20:22
>>56
気持ちはわかる。なにも考えずにそういう事する奴は確かにいる。
メソッド全部publicとかと同レベル。

でもサービスクラスを書いてるときに、要素の入れ替えがあるから
LinkedListに使ってるよーとか、こいつは要素追加するとソートされるよ
とかを利用者に伝えるために戻り値の型を実装クラスで書いた方が
いいんじゃないかと思うこともある。
2008/08/31(日) 16:37:08
ファクトリを書かなくていいのにメリットがあるのは同意だけど、
起動時遅いとかメモリ喰うとかのデメリットもあるよね。

インジェクションするクラスを設定で簡単に切り替えられるのが
一番の目的だったと思うんだけど、本番環境にデプロイするのは
1パターンだけであまりメリットが感じられない。テスト用なら
こんな高機能いらなくて設定ファイルでObjectIdと実クラス名
の紐付けできるファクトリがあればいいだけだし。

似たようなシステムをちょこっとクラス入れ替えていくつも
リリースするような時には確かに有効。ソースツリーも
一つで管理できるし。でもそんなプロジェクト一回しか経験したこと無い。
Web側(jsp)は全然違うから別ソースだし。似たようなプロジェクトの時も
反省点を踏まえて作り直したりするし。

ファクトリのコード削減とAOPによるログ出力くらいなんでしょうか。
60デフォルトの名無しさん
垢版 |
2008/08/31(日) 17:09:36
>>50のレスが秀逸すぎるわ
2008/08/31(日) 20:56:39
>>59
起動遅いのはあまり問題にならんと言うか、
モジュールレベルで完璧に作れてれば
あとは組み合わせるだけなんで、別にどうでも・・
クライアントアプリなら問題にはなるけど
あまりそういう分野で使われてないだろうし。
逆に S2みたいな Hot-Deploy を売りにするセンスが俺には理解できない。
結局つながないと開発できないのかよ、それって DI かよって。

メモリってそんなに食う?これは実感したことないや。

日頃からテストがきちんとできる仕組み用意して
それを実践してるなら、別に DI コンテナ使う必要はないよ。
俺は自分で用意するの面倒だし、
自分のコードなんて全然信用してないから
十分にテストされたものを使うだけの話。
2008/08/31(日) 21:09:44
>>59
>ファクトリのコード削減とAOPによるログ出力くらいなんでしょうか。

それって大きいと思うけど。
それから宣言的トランザクションは使わないの?

今のプロジェクトで DI,AOP 使えれば良いのに、ってかなり思うよ。
ログ出力のコード分量もかなりなもんだし、
トランザクション制御の為に、サービスクラスに abstract execute() みたいなの強制してて超汚ねーし、
必要ない new をやたらと書きまくるやつはいるし(これは別問題か…)

慣れてきてから、DI 使わないプロジェクトで同じ事やろうとしてごらん。
汚いの面倒くさいの… 馬鹿らしくなるよ。
2008/08/31(日) 23:50:23
うちが使ってるフレームワークもどきみたいなのでは
ServiceとDaoは自動生成でSinleton生成コード吐くし、
bean idとクラス名結びつけるファクトリは枯れたxml読み込み
クラスを利用して1クラスで完結してるんですわ。

private AnyService anyService;
と宣言してアクセッサ用意するより
private AnyService anyService = AnyService.getInstance();
で設定したクラスをインスタンス化できた方が若干楽だし
publicなget/setAnyService()があるとそれを利用側プログラムで
呼び出していいと思われても嫌だし。springでセットしたserviceが
入ってるからgetしても問題は無いんだけど。

そうするとspringしらない技術者がヘルプで入ってきたときに
DIっていうのはねっていうところから説明するより全然
教育コストも低いんですよ。

起動が遅くなるのはEclipseでデバッグ時にちょっとした修正で
いちいち時間かかって精神衛生上よくないっていうだけで根本的な
問題ではないけど。

2008/08/31(日) 23:57:13
AOPによるログ出力はブレークポイントつけてステップ実行が当たり前に
なった今存在意義が薄いし、ソースの骨格が自動生成でこみいったとこだけ
手で実装なので、むしろうまく行っているところはトレースログとりたくないし。

トランザクションは昔から使ってるDBコネクションプールがThreadLocalで
好きなとこでstart()/commit()させてくれるのでこれをService内に
明示的に書いてある方が問題があったときにどこでcommit()/rollback()
されてるかわかりやすいと思うんだけど、もう俺の考えが古いのかなあ。
デバッグ担当する人間が全員springのxmlの仕様を知っていないと
「どこでコミットされているかすぐに把握できない」のはめんどくない?
ずっと少数精鋭主義のプロジェクトでやっていけるなら別だけど
2008/09/01(月) 00:04:32
自己レスだけど
>bean idとクラス名結びつけるファクトリは枯れたxml読み込み
>クラスを利用して1クラスで完結してるんですわ。

結局DIしてるわけだからこのスレとは違っちゃうか
2008/09/01(月) 00:29:30
>>63
それでうまくプロジェクトが回ってるならそれでいいと思う。

教育コストはDIがどうこうよりも、
テストファーストがどうこう、
ステートレスがなんやら、
疎結合だとあれこれ・・の説明に苦心しない?
「ふーん、面倒なんですね」の一言で片づけられた日には悲しくなったよ。
で、今日もまたテストケース書かないコードをコミットしやがる・・・
2008/09/01(月) 00:40:51
>AOPによるログ出力
俺もこれは例示のための例示にしか過ぎないと思う。
通常、AOPはメソッド境界で作用するけど
このレベルで横断的にログ取りたいものなんて殆どないし。
メソッド内部の動作で不審な動きがないかチェックしたいとは思うけど、
取得したい情報なんて処理ごとに異なるし、そもそもAOPでは制御不能。
AOP使う話であれば、トランザクションと認証回りが適切な例だと思う。

>少数精鋭主義のプロジェクトでやっていけるなら
別に精鋭じゃなくても設定くらい読めるから。
トランザクションが何か分かってるなら、書き方・読み方教えて終了。
いろんな場所でトランザクションの開始・終了が出来れば
きっと効率が良いのだろうけど、少数精鋭ならともかく
現実の開発でそれやるとロクなことにならんですよ。
好き勝手に開始して放置して、もうグダグダ。
多分、今まで少数精鋭でやってきて、そういう事態に陥らなかったんだと思う。
2008/09/01(月) 01:09:29
正直テストファーストはどうかなあと思ってる。
昔みたいにウォーターフォールで仕様変更したら別料金とりますよっていうなら
いいけど、仕様が変わる度にテストケースも保守していくのは
常に詳細設計ドキュメントを保守し続ける位面倒。んで最後にまとめて
作ろうと思って納期迫ってカバレッジ低いテストケース書いてるから
それも駄目なんだけどね。

AOPは結局ログくらいしか思いつかなかったんだよね。Webばっかりだから
認証はそれこそBaseActionかInterceptor(struts2)で入り口でやってあげれば
済むし。

springだけを教えてるなら設定くらいすぐ覚えるだろうけど、
プロジェクト参加当初は業務もプログラムも教えることいっぱいだし、
問題があったときにデバッガで追ってればすぐわかる方がいいと思うけどなあ。
トランザクションの開始・終了はServiceクラス内の同一メソッドでとルールで
縛ってるので、というかdaoも自動生成で複数テーブルに対するトランザクション
管理をしたいと思ったらこれしか書きようが無いんだ
try{
 DBManager.startTransaction();
 dao1.insert(obj1);
 dao2.insert(obj2);
 DBManager.commit();
}catch(...){
DBManager.rollback();
}
daoが自動生成なせいで、複雑なDBも処理もdaoに書いて
serviceから呼び出す、daoでトランザクション管理しない
っていうのが徹底されてるのが効いてるのかな。

2008/09/01(月) 09:45:29
横道にそれるけど、なんか同情したのでいきなりレス。

>>66
Unitテストが義務化されていないからだな。
これはかなり大変。「テストを楽にする」は
意外に動機として大きいから。

仕様書が明確に落ちて無いと末端の子に
テストファーストは難しいけど、デグレードを
未然に防ぐ為のテストセカンド(造語)くらいから
やるのはどうだろう。
自分のコードにバグが無いことの証明だから
ホントはやってて当たり前なんだけど。
7069
垢版 |
2008/09/01(月) 09:47:40
続き。

疎結合は再利用性。
「ほら、別のプロジェクトでも簡単に使いまわし
できただろ?」
って言える例を作ってやれればどうにか。

ようは教える側がメリットを示すのが良いと思う
(デグレードが減る。使いまわしが楽など)。

ただし、教えられる側が
・時間内手を動かしてさえいれば金が貰える
・バグで人に迷惑をかけてもかまわない
そんな思想だと哲学から変えないとダメ。
2008/09/01(月) 10:06:33
いろいろ経験して
「newを直に書きたくない」
という思想にいたる事が出来れば
DIコンテナのメリットが説明しやすい。

結局ある程度抽象化の概念に
同意していない人には無用の長物かも。
72デフォルトの名無しさん
垢版 |
2008/09/02(火) 00:22:13
>>70
疎結合でサービスクラスやアクションを使いまわしたりしないし
その説明では納得できん。ただ共通関数を増やしていくだけでいいだろうに
73デフォルトの名無しさん
垢版 |
2008/09/02(火) 00:29:44
個人的なDIの欠点はデバッガでなければソースを追えないって点だな。
interfaceベースで作ってたら、当たり前の現象なんだが、IDEのパワーをないがしろにしてる。
それでもDI自体は分業に向いてると思うし、俺は好きだ。
2008/09/02(火) 01:30:45
原理主義者はDIとかアスペクト好きなんだよ
もうほんと、それだけ

問題は、Javaがそもそも原理主義的なコーディングに不向きなことと
現実世界(特にビジネスまわり)がちっとも原理主義に根差してないことが原因で、
DIから得られる現実的なメリットが、ほとんど実感できないくらい
小さくなってしまっていること
2008/09/02(火) 01:59:43
現実世界も整理すればそれなりにスッキリしてるんだが
現実を現実のまま処理しようとして
ステートフルな世界に走ろうとして失敗してる人が多数居る。

ところで原理主義って何?
76デフォルトの名無しさん
垢版 |
2008/09/02(火) 03:03:42
ジャヴァはブルーカラーからのラングエジじゃなかったか?
2008/09/02(火) 03:40:53
DIはログとかトランザクションの管理に便利。
共有リソースの管理に便利。
2008/09/02(火) 04:39:25
なんと言う後付けユーティリティ
2008/09/02(火) 04:53:57
なにか問題でも?
逆に、共有リソースの管理がスタティック変数でまかなえる場合や、ログ・トランザクションをそこまで徹底しない場合は、DIコンテナ不要。
2008/09/02(火) 04:54:48
ログ・トランザクションは徹底というか、単純なルールが適用できる場合にDIが有効か。
8169
垢版 |
2008/09/02(火) 09:21:14
>>72
ごめんね。俺が思ってた疎結合の話に
君が思うようなサービスクラスやアクションを
含んでいなかった。
そしてDIにたどり着く前の段階の前提なんだ。

>>66の言う教育の時に自分がどう行動するかを
書いてみた。
サービスとかアクションならモックを引き合いに
出すかなぁ。モックの意味を理解する人ならわかって
くれるかもと思う。

>>72を説き伏せようとは思っていないから
けんか腰にならないでね。
2008/09/02(火) 09:30:42
>>73
同じ事がインターフェースを
たくさん使ったソースコード(非DI)を
新人さんが読んでいる時に起こっていた。

あるメソッドが呼ばれているはずなんだけど
呼び元にEclipseで飛んでもインターフェース
にしか辿り着けないという形。

力技でもどうにかできるようにしたければ
インターフェース使わずに書くのも良いと思う。
どこで切るのかの問題かもしれないけど。
83デフォルトの名無しさん
垢版 |
2008/09/02(火) 12:15:15
つctrl+t
俺もDIは好かんけど
eclipseもまともに使えないヤツには無理
2008/09/02(火) 16:36:26
なんですとぉ!?
85デフォルトの名無しさん
垢版 |
2008/09/02(火) 23:56:13
POJOってどうよ。アレを実現するための設定も
面倒に感じるんだが。
2008/09/03(水) 00:43:13
>>85
あまりに漠然としすぎててどの話をしてるのか分からん。

>>68
ネストしたトランザクションがスマートに記述できない時点で
もう面倒だと思いますよ、俺は。
それでもなお俺様フレームワーク最高ですか?そうですか。
2008/09/03(水) 01:11:41
トランザクションのネストってどんなケース?
外側トランザクションの中に内トランザクションがいくつかあるの?
内トランザクション1がコミット成功して内トランザクション2で
失敗したらどうなるの?
2008/09/03(水) 01:32:12
内1のトランザクション状態を内2で引き継いで
内2で失敗した時点で内1もひっくるめてロールバックされる。
コミットが行われるのは外のトランザクションが成功した時。
2008/09/03(水) 01:37:24
外側で宣言してれば内側のコミットは無視されて、
内1だけ呼びたい時は内1のコミットをアテにして、
内1、内2って呼びたいときは内1の中に書いてあるトランザクション処理を
無視できるから楽ってこと?
2008/09/03(水) 22:57:52
>>85
POJO と abstract class タイプフレームワークの綱引きがあって、
睡眠不足で寝ぼけてると、見当違いのところに abstract class タイプのフレームワークを適応しちゃったりする。
使い分けは、きっちりやりたいね。
ちゃんと睡眠とって、すっきり脳味噌で POJO を書こう。
今大人気だから覚えといて損はないよ
91デフォルトの名無しさん
垢版 |
2008/09/04(木) 00:20:52
POJOはフレームワークに依存、
StrutsクラスはStrutsに依存。

おまえらバカなんじゃね?
2008/09/04(木) 00:35:08
意味不明
2008/09/04(木) 00:38:06
>>91
依存してるかどうかじゃなくて依存をコントロールできることが重要なのに、何言ってんだおまえは。
2008/09/04(木) 00:46:32
たかが Bean Builder に御大層な名前が付いただけ。
2008/09/04(木) 01:57:13
長くこの業界にいて思うこと。
構造化プログラミングの時だってごく少数の優秀な人は
わかりやすくて綺麗な構造化をしていた。OOPの時代になっても
優秀な人の割合は変わってない。凡人がソースを書くときの
汚さが、構造化の時よりちょっとマシになっただけ。
でもその恩恵はインターネットの普及により情報が得やすく
なったせいかもしれない。
2008/09/04(木) 02:20:31
根幹部分は自分で書いて、ビジネスロジックだけ構造化OOP使いに書かせるから問題なし。
DIなら上流PGの実装が間に合わない時はDAOの具体実装をダミーにしとくとか調整も出来るよ。
2008/09/04(木) 03:18:44
>>89
このケースに限ってはそう。

でも本質はコードに横断的情報が含まれないことが
多くの利益をもたらすって話なんだけど。

そのロジックの処理の本質にトランザクション管理が関与するのかって話。
必要ないのに手続きのために書いてるのなら、
ノイズが乗ってるのと同じこと。
追い出せるなら追い出したいと、なぜ考えないのか。

>>95
情報が得やすくなったのは確かだけど
情報を得ようとする人がたいして増えてないのもまた事実で。
成長待ってても埒があかないから、いろいろな話をしてみるけど徒労に終わる。

探せば情報が得られる分、スキルの格差はむしろ広がってるのでは。
2008/09/04(木) 05:21:34
>なぜ考えないのか。

なぜそんな上から目線なのか

どこからどこまでを同じトランザクションにまとめないといけないのか、
は本質的な処理だろ。マーチンファウラーの提唱するような薄いサービス層の
ポリシーを守っていれば、トランザクション管理をxmlに置くのか
Serviceメソッド内に置くのかの違いでしかない。トランザクションの
範囲を確認するのに設定ファイルを別に開くよりは見やすい。

注文と残高を同時更新する場合と、残高だけを更新する場合で
Serviceを分けなくても良い(前者の場合でも残高だけ更新Serviceを呼び出しても
よい)というのは確かにメリットだと思う。

2008/09/04(木) 11:32:30
今はネットで回答だけ得られるからね。
昔は本とか読むしかなかったから、いきなり答えが得られることは少なかった。
だからどうしても書いてあることを理解して自分で応用する必要があった。

2008/09/04(木) 15:02:30
宣言的トランザクションは実装としてAOPを利用しているけど、
特定のメソッドから特定のメソッドの間でトランザクションを定義することは
横断的な情報、つまりAOPじゃないよね
2008/09/04(木) 15:53:23
うんそう思う。
ただしトランザクションをどう実装するかはコードの本質ではない。
2008/09/05(金) 01:27:42
どこからどこまでをトランザクションの範囲にするかってことが
必ずしも本質的な処理とは思えないんだが・・・
むしろ「モデルの状態を元あった状態に戻す」ためのひとつの実装パターンに
すぎないのでは?
2008/09/05(金) 10:31:45
そうじゃなくて、少なくともこのメソッドのスコープ内は
トランザクション処理しなきゃならないとかそういう話。
2008/09/05(金) 23:02:14
>>103はだれにレスしてんだ?
2008/09/06(土) 01:42:18
オライリーのインターフェイス指向設計を読み終えた。
わりと良書だったが、悲しいかなDIの話題はなかった。
(チラッと名前だけ出る程度。)
代わりにサービスをルックアップするコードが記述されていた。

今時どうかと思った。
2008/09/06(土) 20:42:33
>>95
普通の人が書いた汚いコードなら、構造化プログラミングとかのほうがよっぽどマシ。
OOPわかってない奴が書いたOOPっぽいコードなんて、汚な過ぎて見てると吐きそうになるだろ?
2008/09/06(土) 20:52:30
>>106
なる。
ドメインオブジェクトに関わりの薄いロジックが入っていたり、
固有のクラスでしか行われない処理が基底クラスに入っていたり

ス○ー○ジッ○のソースはひどかった
2008/09/06(土) 21:30:18
スターロジック?
聞いたことねえや

> OOPわかってない奴が書いたOOPっぽいコード
ああ、見てるとイラッと来る
自分も一度は通った道ではあるものの
109デフォルトの名無しさん
垢版 |
2008/09/07(日) 00:55:05
Struts知ってる俺がS2Strutsを触ったが全然動かない・・・
おまいらコレすっと動いた?
2008/09/07(日) 02:25:30
激しくスレ違い
2008/09/07(日) 11:46:30
>>107
恨みでもあるの?
そこで名前を出す意味が分からないな
112デフォルトの名無しさん
垢版 |
2008/09/07(日) 21:13:24
>>109
ずっとうごいたけど
113デフォルトの名無しさん
垢版 |
2008/09/14(日) 21:08:26
DIって、フレームワークを提供する側や、業務パッケージを作成する場合なんか
には有効かもだけど、1から作るような業務アプリではメリット感じない。
大体、1から作るような業務アプリという時点で泥くさいことやらなきゃいけない
ケースが多いし、インターフェースが有効なケースもあんましない。
(パッケージ使用しない時点で、客は泥くさい対応を求めてくる。)
1インターフェースで1パターンだったら、密結合でも疎結合でもどっちゃでもいいん
じゃない。影響極少だし。

まぁ設計力の問題かもしれない。業務アプリでうまく交通整理できた具体例なんかが
あれば、ほんと具体的に教えてほしい。
2008/09/14(日) 21:11:59
>>113
その業務は未来永劫仕様が変らないの?
115デフォルトの名無しさん
垢版 |
2008/09/14(日) 21:15:24
こんなわかりやすくて便利なもんがこの評価か・・・VBerを思いだす
2008/09/14(日) 21:22:13
>>114
そんなことはない。ただ小変更の場合は実装クラス内の変更にとどまる
ことが多い。大きな変更の場合は、設計の根幹を揺るがすようなことが
ままある。実際客にとり、メリットあるのは、大きな変更のほうなん
だが、その場合は残念ながら、DIは無力だと思う。
117デフォルトの名無しさん
垢版 |
2008/09/14(日) 21:44:38
正直AOPやDIがJavaの限界に思う。
下位互換にこだわりすぎる言語の宿命だよ。
明らかに無理し過ぎてる。
2008/09/14(日) 22:02:49
>>115
今はそういうのはPHPerが担ってるよ
2008/09/14(日) 23:04:57
一から作るならGuiceあたり使っておけばいい。
JavaEEはJSF+Faceletsを使って、WebBeansは出たら採用する。
正直SpringだのS2だのへの投資は無駄な投資。
2008/09/14(日) 23:22:56
>>117
DIなんて実行時に今までやっていたことを設計時に限定する代わりに
設定ファイルで簡単に記述できるようにしただけだよね。
言語使用でサポートするとしたらどうなるのかな。
121デフォルトの名無しさん
垢版 |
2008/09/15(月) 07:00:32
>>113
に一票だなぁ。
>>114
とかは、微笑ましく思える。
2008/09/15(月) 15:50:28
業務自体の変更はDIの範疇じゃないと思うが、
業務の本体じゃない横断的な事象を切り出すには便利に使えると思うよ。
ただの道具として利用するレベルでも。
横断的関心事を業務の本体から切り離すってのはまあ、AOPの範疇かもしれんが。
2008/09/15(月) 15:56:50
業務プログラムがテンプレートメソッドパターンに落とせないのであれば、
インタフェースベースの設計をする価値はないだろうね。
2008/09/15(月) 18:19:23
2008/09/15(月) 18:23:01
なんらかの業務処理をプログラムに落とし込む必要があって、
それに対してインターフェイスを書かない状況ってのは、ちょっと分からないな。

そもそも、それって Java使う必要あんの?
LLの方が向いてない?
2008/09/15(月) 19:10:18
ソフトウェアカスタマイズなら割とある。
2008/09/15(月) 22:05:04
そりゃ、〜〜業務を1メソッドや1クラスにだらだら書いているなら、
DIなんて何の意味もないだろうさ。
2008/09/15(月) 22:53:41
何か頭の悪い誇張野郎が沸いてるな。
129デフォルトの名無しさん
垢版 |
2008/09/16(火) 00:12:09
AOPやDIで業務システム作ったけど大した恩恵は受けてない。画面や検索条件。業務ロジックの修正がほとんど。結局LLでやればよかったと思ってる
2008/09/16(火) 02:18:19
>>129
本質的な部分の修正だけですむのはDIの恩恵を受けてるんじゃないか?
2008/09/16(火) 02:39:07
>>130
なんでもDIのおかげにしたいんですね。
2008/09/16(火) 02:48:59
>>130
それ言うなら、どっちかっつうとAOPの恩恵なんじゃね?
2008/09/16(火) 20:40:32
>>130,132
それはMVCをきちっとわけてれば出来ることだし、
OO以前の構造化設計でもきちんと設計が出来ていればできること
2008/09/16(火) 21:24:30
その「きちんと」を楽にするためにOO言語なりツールがあるわけで。
「楽したい」と考えないエンジニアは碌なもんじゃないと思うんです。
2008/09/16(火) 23:27:14
別にDIとかAOPによって不可能だったことが可能になったわけじゃないんだから。
より楽な、より便利な使える道具ができたってだけのことだろう。
2008/09/17(水) 01:14:46
本質以外のことはやりたくないからどんどん外に出した。
外出ししたオブジェクトをルックアップするコードを書くのも面倒になった。
何使うかだけ書いといて、あとは外から勝手に注入してもらえば楽くね?

これだけだぞ、DIコンテナの本質は。

これがどういう意味を持つか分かる人以外には
どれだけ触っても全くの時間の無駄だ。
2008/09/17(水) 01:45:51
楽くね?
くねくね?
138デフォルトの名無しさん
垢版 |
2008/09/17(水) 05:05:33
DIって普通はリンカが自動的にやってることを、手動で設定してるようなイメージ。
139デフォルトの名無しさん
垢版 |
2008/09/17(水) 12:32:29
退化
2008/09/17(水) 12:41:16
DIで楽が出来るのはわかってる。学習コストとメリットを天秤にかけた時に
業務アプリで使うのはどうかって話だ。今のspring他の実装はまだ過渡期で、
5年後には設定方法やデファクトのDIツールすら変わってる可能性が
大いにある。Apache Torqueなんてまだ使ってるやついるか?
いたらゴメンね。でメインの開発者がとっくに退社してる場合、
今更Torqueなんてメンテし続けたくねーとか、Apache ECSなんて
jsp出てきた時点で終わってんだろ、とか思う訳じゃない。
それを繰り返したくない。ちょっとファクトリクラス書くのが
楽になる程度の使い方なら、後の人がすぐ追えるようにシンプルな
ファクトリを書いておいたいいんじゃないか、と悩んだ事は何度もある。

いい加減springなら平気だろと思って使ってるわけだけど
2008/09/17(水) 14:07:48
Guiceくらい便利に使って欲しいところだけど、俺の周囲じゃ正直無理だと思った。
設計思想というものが前提的に存在しない層とはJavaは相容れないな。
2008/09/17(水) 14:34:53
開発者の質が悪いからってのも、本末転倒な話だな。
むしろ、低レベルな開発者を排除すべきだと思うんだが。

優秀な人間だけ集めると、開発ペースがメチャメチャ速くなるぞ。
無駄なドキュメントは作らなくてすむし、くだらないバグも仕込まれないし。
2008/09/17(水) 14:37:24
そんなことが簡単に出来たら苦労はないわ
2008/09/17(水) 14:53:38
100人月とかの開発をやったこと無いんだろう
2008/09/17(水) 15:02:53
Guiceいいかもと思ってGuiceスレに行ったら泣けてきた。
あんまし使われとらんの?
2008/09/17(水) 17:15:04
日本人が作ってないからヲチネタが少ないだけ
2008/09/17(水) 21:51:04
>>143
そりゃ、簡単には出来ないよ。

>>144
普通の会社が100人月かけるところを、30人月とかでやってしまうってことだよ。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況