国産DIコンテナSeasar その7at TECH
国産DIコンテナSeasar その7 - 暇つぶし2ch970:デフォルトの名無しさん
06/12/07 23:03:27
インタフェース切るのって、ただ、
AOPの適用ポイント明確にするぐらいにしか使わなくね?

Action - Logic - Dao構成なら、
どーせActionなんてテストしないんだから、
Logicのインタフェースは作成不要じゃね?

971:デフォルトの名無しさん
06/12/07 23:13:31
声がもっとしっかり聞こえればよかったけど、
Web放送勉強になりました。


972:デフォルトの名無しさん
06/12/07 23:25:49
>>970
とりあえず動くけどパフォーマンス的に問題があるロジッククラスがある場合に、
新しいロジッククラスに差し替えたいって要求が場合が他社と連携しての
開発ではあったりする。糞クラスを納品されたって訳だ。

そーゆー時に、俺らはチューニングされた新しいロジッククラスを設定ファイルを
書き換えるだけで投入できる。便利じゃないか?

俺らのチューニングしたロジッククラスは確かに早かった。
だが!ある特定の条件で発生する例外的な処理に対応しきれていなかった!!
修正するには根本的過ぎてかなり難しい!
クラスに実装してたら、元ののバージョンを取得しようにも
他のクラスに手が入ってて入っている部分と切り出して
チェックアウトするのがかなり難しいかもしれない!!

そんな時、設定ファイルを書き換えるだけで、すばやくもとの実装に戻し、難を逃れる。
便利じゃないか?

973:デフォルトの名無しさん
06/12/07 23:32:49
便利!!!

974:デフォルトの名無しさん
06/12/07 23:37:37
>>973
分かってくれたか!!!!

975:デフォルトの名無しさん
06/12/07 23:52:47
テレビショッピングか何かを思い出したが、まさにそんな感じだな。

interface 作る・メンテするコストなんてたかが知れてる。
もともと実装クラスに存在する public なメソッドのいくつかを切り出すだけ。
修正する時の手間も本来の修正分(=実装クラスの修正)に
interface のメソッドが増えるとか、シグネチャが変わる程度。

得られる効果は972氏のケースとか、
障害調査用実装とスイッチさせたりとか
モック作ったりとか、そりゃもう夢は広がりんぐ。

もちろん、そういうことする必要に迫られない時も多々あるだろうけど、
せいぜい第二段落の作業が無駄になった程度。
僅かな手間をケチって何がそんなに嬉しいのか。
DIコンテナ使わなければそりゃ得るものは少ないだろうけど
DIコンテナ使ってるなら問答無用でかけるべき手間。

定数が必要になった時、一箇所からしか使わないからって
リテラルにマジックナンバー埋め込むかって話だ。

976:デフォルトの名無しさん
06/12/08 00:26:35
最後の例がちょっと分かりやすいと感じた。

977:デフォルトの名無しさん
06/12/08 00:34:54
超適当なインターフェイスの作り方

1.実装クラス~Implを先に作る。
2.Eclipseでクラスを右クリック→リファクタリング→インターフェースの抽出を選択
3.インターフェイスに定義したいpublicメソッドを選んで、クラス名からImplを外して実行
4.パッケージが~.implだった場合は、パッケージ名を修正して出来上がり

だいたい15秒くらいでできるよw

978:wildcats
06/12/08 00:39:36
>>975
別に手間をケチってる訳じゃないよ?
インタフェイス抽出なんて僅かな手間だよね。

979:デフォルトの名無しさん
06/12/08 00:54:55
そもそも、この議論の起点になった奴が必要なときには
インターフェイスの抽出で済むじゃんって言ってるが、
多分、大体のときに必要になるのはインターフェイスを抽出する作業じゃなくて、
インターフェイスを残して、実装を退避させる作業なんだと思うけどなぁ。

それに、実クラスだとどうしても直接インスタンスを生成できちゃうから、
面倒なときにはDI使わずに自分で new しちゃったりするんよねぇ。
そーゆーのを後から抽出したインタフェイスに置き換えていくのって面倒じゃない?

「ぎょぎょ、業務で固有なロジック限定って言ったでしょ!!誤読厳禁!」

つってるけど、週次処理をこの場合には特別に実行するだとか、
そーゆー風に利用箇所が分散する観点がすっぽり抜け落ちてる。

多分Seasar全般に言えるんだろうけど、作り捨ての雰囲気が強いよな。
自分らの作ったシステムをしっかり保守していける体勢を作ろうという観点が
非常に欠けてる。

最近の迷走ぶりは今日早く家に帰れることを重視するあまり
将来困ろうが知っちゃこった無いって発想に近いと思う。

980:デフォルトの名無しさん
06/12/08 01:26:49
改めて >>907 を読み返すと、
最後の意見はかなりの電波だな。
最初の意見は信仰する宗教の違いと思えなくも無いが。
二番目の意見は・・・Implって名前が嫌いなだけなのか?主張が分からん。

981:970
06/12/08 02:01:32
うーん、漏れは972みたいな状況になったことって一度もないんだが。
自分は、小さな開発規模しか経験してないってことなのかな。


だってさー、問題あったら、直接ロジックいじるじゃん?

別に協力会社が作ったソースであっても。


982:デフォルトの名無しさん
06/12/08 02:04:48
>>975
俺は一箇所しか使わない & 直接書いた方が判りやすい場合はわざわざ定数化するよりマジックナンバー書いちゃうけど、だめかな?
なんでも定数だとかえって読みづらくなる気がするんだけど・・・。

983:972
06/12/08 02:26:15
>>981
おまいは、俺の発言をちゃんと理解したのか?(誤字が多すぎて読みにくかったと思うが)
現在正常に動いているものを変更すると変更後のものが動作の正常性を保障できないだろ?
テストクラスが準備されていたとしてもそれが本当に十分に記述されてるのか分からない。

そーゆー場合には、実績として動くことが保障されているクラスはそのまま残しておいて、
そのクラスをコピペしてから内部実装に手を入れていくべきだと思う。
そして、コピペ元は新しいクラスが十分な動作実績を持ったと判断したときに削除する。

俺が書いてるのはあくまで開発だけで閉じた話ではなくて、
障害発生時の一次対応の迅速さまで考えた話だから
「ばぐっすか?はいはい~、なおしました。これでどうすか?オッケーすよね」
っていうアジャイルな流れとは相容れないかもしれない。

年間システム停止時間1時間以内とか、そういう目標を課せられたプロジェクトに
密に関わってる人間じゃないとそーゆー視点は育たないのかなーとも思う。

984:デフォルトの名無しさん
06/12/08 02:26:58
直接書いた方が判りやすい場合はそれで良いでしょ。

985:デフォルトの名無しさん
06/12/08 02:43:17
>>983
まぁ熱くならずに。
字面を追っただけで利点を実感できたら、そいつは多分天才。
一度でも「あの時 interface 作っとけば・・・」な経験した後じゃないと、
事例挙げられても「ふーん?」で終わりですよ。

986:デフォルトの名無しさん
06/12/08 03:53:49
>>972
>クラスに実装してたら、元ののバージョンを取得しようにも
>他のクラスに手が入ってて入っている部分と切り出して
>チェックアウトするのがかなり難しいかもしれない!!

これって単にインターフェイスを定義するかどうかだけじゃなく、
ロジックを整理してクラス分割した上で、そのクラス同士を疎結合にできているかどうかまで
問われるよね?

まぁ結局そこまで考えると、インターフェイスを使わずにクラス結合なんて考えられなくなるから
結果としては同じことになるんだけど
ようするに、そもそもなんでインターフェイスを挟んでクラス間を疎結合にしようとしているのか
大元からしっかり考えないと、メリットを掴むのは難しいと思う。
単にインターフェイスを定義しても、そこで作ったロジッククラスが
一つだけのメソッドに1000行書いてるような巨大なトランザクションスクリプトだったりしたら
「設定ファイル一つで簡単に置き換える」とかいうわけにもいかないわけで・・・

987:デフォルトの名無しさん
06/12/08 07:49:14
次スレ

国産DIコンテナSeasar その8
スレリンク(tech板)

988:デフォルトの名無しさん
06/12/08 10:35:00
>>970
>Action - Logic - Dao
ここでのLogicってなに?
トランザクションスクリプト?ドメイン?サービス?
多分、層が1つ足りないぜよ。

>>977
いいけど、そうなるとTDDじゃなくね?

>>986
例えば、もともとトランザクションスクリプトなクラスAがあったら、
コピーして修正を加えたA'クラス(もちろんトランザクションスクリプトだけど)をつくって、
差し替えるだけだろ。
トランザクションスクリプト>ドメインモデルの切り替えは、DI云々以前に高コスト&高リスクな作業だと思う。

>>987


989:デフォルトの名無しさん
06/12/08 12:57:04
結局、
>>985
これが真理

990:デフォルトの名無しさん
06/12/08 20:37:10
>>987


なんでファウンデーションスレをテンプレに貼ってないのかと思ったら、
変なのの隔離場所になってるのね。

991:デフォルトの名無しさん
06/12/08 22:19:02
やることがいちいち姑息だよな

992:981
06/12/08 22:52:51
>>983
なるほどねー。
やはり、今までになかったですねー、そういうのは。

>>988
サービスですね。
Action - Logic - Daoは、S2JSFのEmployeeサンプルに倣って書きました。


993:デフォルトの名無しさん
06/12/09 00:28:21
そろそろ埋めるか

994:デフォルトの名無しさん
06/12/09 00:40:58
埋める?S2Containerを?楽しそうだぜ!!

995:デフォルトの名無しさん
06/12/09 00:44:06
沖縄の守り神の獣肉(゚д゚)ウマー

996:デフォルトの名無しさん
06/12/09 01:05:36
食ったんかいw

997:デフォルトの名無しさん
06/12/09 01:06:55
URLリンク(cap.from.tv)

998:デフォルトの名無しさん
06/12/09 01:55:49
ume

999:デフォルトの名無しさん
06/12/09 02:43:00
1000だったらS2Spring作る

1000:デフォルトの名無しさん
06/12/09 02:54:13
日テレはルパンにひどいことをしたよね(´・ω・`)

1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch