トップページ⇒tech
1001コメント376KB

国産DIコンテナSeasarとくーす その3

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
一部で話題になっている国産オープンソースDIコンテナSeasar V2(略してS2)。
ってどうよ?みんなもう使ってるの?
使用経験とか、実戦配備情報とか、つかえねーよボケ、とかいろいろ書いてね。

あと、開発プロセス「くーす」の話題もこちらでどうぞ。


本家 seasar.org
http://www.seasar.org/

Seasar Projectグループ
http://seasarproject.g.hatena.ne.jp/

ひがやすをのここだけの話
http://d.hatena.ne.jp/higayasuo/


前スレ
その1 http://pc5.2ch.net/test/read.cgi/tech/1092044210/
その2 http://pc5.2ch.net/test/read.cgi/tech/1098885253/


関連スレ(なのか?)

Java Spring Frameworkを語るスレ
http://pc5.2ch.net/test/read.cgi/tech/1077465099/
0071デフォルトの名無しさんNGNG
おれは言ってる事はともかくとして、「レガシー」という表現を使ったことについてはおかしいと思う。

ここでレガシーと言われているものって、レガシーなんじゃなくて、そんなのはもともとオブジェクト指向的に
間違ってるんだし。
007251NGNG
>>66
いや、別にくーすに従わなきゃS2使ってバリバリにOOPなシステム作ることは
可能なわけよ。だからひが氏の実装自体には問題ない。むしろ素晴らしいと思うよ。
問題なのはくーすだよ。ただ、心配してるだけなんだけどね。
マジョリティとしての技術の方向性っちゅーのかな。それがこの先どうなっちゃうのか、とか、
くーすによってさらに加速されるであろう量産型低スキルエンジニア達の増産とか、
そいつらと一緒に、これからも仕事していかなきゃならない自分の身の振り方とかを。
ビジネス的にはそれでいいだろうけどさ、長期的に見て、まず「人」は育たないよな。
だから前々スレ686の一言に尽きるって結論になっちゃうんだけど。

ま、「レガシー」って言っちゃったのは失言でしたってこった。
どれだけ多くの人たちがあなたのBlogをチェックしてんのか忘れないでね。>>ひが氏
0073デフォルトの名無しさんNGNG
しかしまあ、正直言って「importって何の意味があるんですか」「java.langはimportしなくちゃ
いけないんですか」とか聞く奴が毎年量産されていることを考えると、そいつらと一緒に仕事
していく手法を身につけとかないといけないってのは切実な問題かもしれん。

だって毎年量産されるんだし...
0074デフォルトの名無しさんNGNG
いやぁ、くーすはともかくとして、Seasarは明らかにシステム構築の敷居を高くしているよ。
いろいろ覚えることあって大変だ。何がどういう役割を持っていてどう扱うのが正しいのか、
原作者にしか分からない理論(しかも、漏れ的には相当あやしい)を理解するのに何年かかるんだ。
そして覚えてそれで一体何になるのか。謎は深まる。
0075デフォルトの名無しさんNGNG
何年って、おれは使い始めて1ヶ月後にはチームの連中に説明してたが....
0076デフォルトの名無しさんNGNG
くーす周辺の「お客様」とか「現場」は、目の前の客と現場に部分最適化して、
将来の客と現場に対する思考を停止するためのエクスキューズ用語。
0077デフォルトの名無しさんNGNG
さらにチームの連中は「Struts覚えるより仕組みが簡単ですね」とか言ってたが....
0078デフォルトの名無しさんNGNG
独自の複雑なフレームワークを駆使した開発方法を
示して難解フレームワーク固有の知識で壁を構築するっていうのは、
よく見かける手ではあるけどね。

シンプルな解決法は他にいくらでもあるのに。
本当にいいものは分かってもらおうという迫力が文章やコードで示されてる
のだけど、Seasarは・・・、まぁ、しょうがないな。
0079デフォルトの名無しさんNGNG
>>68
なんか凄い自信家ですねw

>>それをレガシーだと言うなら、間違う人が多すぎたってことだろう。たしかにそこの判断は
>>かなり微妙だし、俺も正直言って間違うよ。
この辺に自惚れさが見え隠れしているように感じられるのは気のせいでしょうか?
0080デフォルトの名無しさんNGNG
>>77

そうだな。Strutsよりはマシかもしれん。
Strutsも大いなるネタの代表例でさ、あれよりいいってうのは、
果たして。大差は無いように思う。
0081デフォルトの名無しさんNGNG
なんかわからんが、Seasarはファクトリ+AOPだし(というかDIコンテナは大体そうだわな)、
くーすはWeb開発ノウハウの集合体であって、別に独自のフレームワークや固有の知識だと
思った事ないんだが。むしろ「あーたしかにそんな感じでやってるよ」ってくらいで。

逆にその「まとめよう」というところに価値があると思ってる。
0082デフォルトの名無しさんNGNG
すごい勢いでレスがついてますね。
みんな比嘉さんにもてあそばれてるなあ。

しかし、「レガシー」って括られるとそりゃ頭にきますよね。
みんな最先端を走ってるつもりなんですからねえ。
そう書けばここで盛り上がるのわかって書いてるのに
予想通りの盛り上がりを見せてるのはちょっと笑えるね。

しかし、Blogで2ちゃんのスレに煽りを入れて、
こんなにたくさんの人が踊らされるなんて、さすが比嘉さん。
0083デフォルトの名無しさんNGNG
むしろひが氏のネタの半端さがレスを呼んでるんじゃないの。
DIスレの213=332と同様。厨がいたほうが一見盛り上がってるように見える罠。
0084デフォルトの名無しさんNGNG
>>82

そうか。やっぱり、ネタだったのか。
くそー、悔しい。
まぁ、そりゃそうか。
でも、本当にイカンのはマジなトーンで
DIコンテナORマッピングAOPとか言ってるやつらだぞ。
思わず反応してしまう・・・
0085デフォルトの名無しさんNGNG
まあ自分の主張を目立つように書こうとしてつっぱしり過ぎたってとこだろう。
もし本気でレガシーって思って書いてたら、S2自体の価値が疑われかねないので、
調子のって突っ走ってしまったと思いたいね。

まあ一方で、データと振る舞いの組み合わせ方は微妙な判断が必要な問題だ
と思う。その判断を卒業したてのPGに任せたくはないが、やらせないと低能の
ままの奴と付き合い続けなければいけないというジレンマに...
0086デフォルトの名無しさんNGNG
>>84
ほんとにもてあそんぶためのネタとしてレガシーなんて言ったんだとしたら、S2に対する指示を
失いかねないネタだと思うぞ。

おれは勢い余ったんだと思うけどね。
0087デフォルトの名無しさんNGNG
指示=支持
0088デフォルトの名無しさんNGNG
とりあえず呼んどくか。

  ☆ ティン

       ☆ ティン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・)<  ヒガタソ消火まだー?
             \_/⊂ ⊂_)_ \_______
           / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
        |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
        |           .|/

DIスレをリスペクトして「ティン」だ。
0089デフォルトの名無しさんNGNG
結論:やっぱEJB。
0090デフォルトの名無しさんNGNG
>>89

EJBが実は最も壮大なネタで、
それよりマシなものなら「漏れにも作れる!」
と思う香具師、たくさんいるんじゃないかね。
しかし、EJBよりマシなものできたところで、
EJB自体がネタだから、どっちにしろネタなのだ。
0091デフォルトの名無しさんNGNG
似た方向を目指しててそれぞれ一長一短なモノなら、
メジャーな手法を使うのは当然だよな。
0092デフォルトの名無しさんNGNG
ふ〜ん
0093デフォルトの名無しさんNGNG
まあ、Java自体がネタだからね。
0094デフォルトの名無しさんNGNG
>>82
レガシーっていってるのは、1つのクラスが役割を複数持ってる
ような設計のことでしょう。
これまでのオブジェクト指向がすべてレガシーっていってるわけじゃない。

ナイーブって言い方に変わってるね。
0095デフォルトの名無しさんNGNG
ダイコン書くのだるい。。。ってか、ファイルが分散するのって
正直どう思ってるんだろう。S2Struts使うとStrutsConfとダイコンも
書かなきゃいけないし。
特に全体を追おうとするときって、目茶目茶だるい。EclipseでCtrl+クラス
で実装開いてくれるけど、インターフェース使ってると
インターフェース開くから、ダイコン見て実態クラス見てって。。。
書いてる本人は分かるから良いんだろうけどさ。

あと、お客に技術トランスファーしなきゃいけないのに
Seaser使っちゃって(一緒にやってる人がね)、おいおい
お客さん(IT企業じゃないないシステム課の人)
に分かるように説明できるのーって感じ。

やっぱりね、Seaserに限った事じゃないけど楽になるだろうって思って
使うのは、全体的に見て楽になるかを見ないといかんね。
0096デフォルトの名無しさんNGNG
でも

>>この「ナイーブ」は当然 (?) without EJB のアレ (笑) です.幼稚・稚拙というニュアンス.

だそうですから。
0097デフォルトの名無しさんNGNG
DIっつっても、DIで作られたクラス使う分にはただのファクトリなんだし
対して技術的に難しい概念ってことはないと思うが。
009895NGNG
>>97
>技術的に難しい概念ってことはないと思うが。
OOで一回でも作った事がある人は難しいとは思わんとだろうけど
お客はそうじゃないし。

DBAがプログラム中にSQLがあるのとO/Rマッパ使ってるときとで
インパクトが違うのとにてるんでないかなーと。
0099デフォルトの名無しさんNGNG
>>95
実装を意識する必要はないというやり方ですからね。
気にするのは、インターフェースであり実装ではない。
実装はブラックボックスで良いと思う。
010095NGNG
>>99
じゃあ、あるデータ項目を追加したいって場合は
実装はいじらせないって事?
0101デフォルトの名無しさんNGNG
>>95
プロジェクトで役割を明確にしろよ。
みんながみんな実装のロジック見るわけじゃないだろ。
なんのためのインターフェースだと思ってる?
てか、Saesarをどうのこうの言う以前にOO開発できないでしょ。
そんな考え方じゃ。
0102デフォルトの名無しさんNGNG
ソフトウェア開発の基本が分かってない人↑
0103デフォルトの名無しさんNGNG
>>100
ちゃんと設計しろよw
0104デフォルトの名無しさんNGNG
設計は絶対に変えない。これがくーす。
0105デフォルトの名無しさんNGNG
>>102
基本を教えてください。
0106デフォルトの名無しさんNGNG
>>102
基本?
それってあんたのMY RULEのこと?
0107デフォルトの名無しさんNGNG
ここは貧血症君とレガシー君が互いに罵倒し合うスレですか。
そうですか。
0108デフォルトの名無しさんNGNG
>>107
そうですよ。
傍観者は書き込まないでください。
0109デフォルトの名無しさんNGNG
>>95
「interface開く 〜 interfaceのタイプ階層を見て実装クラスを開く」
って2段階になるのがうざいよね。

IDE側に、interface名にカーソルあわせて「実装クラスを開く」
みたいな機能が欲しくなる時がある。実装クラスが一つの場合は
そのまま実装クラスのソースを開き、複数ある場合はドロップダウンで
選択とか。
0110デフォルトの名無しさんNGNG
ここ読んでておもうのは、もしかして本当にモデルオブジェクト(ここで想定しているのは、
S2Daoが返す、テーブルに対応したBeanとか)にいっさい振る舞いを持たせなくて、
setterとgetter以外あってはいけないとか思ってる人が多いのか。

そりゃ貧血症どころか構造体にすぎんじゃないか。

おれはモデルにほとんど機能は実装しないが、それでもそのモデルに直接関わる機能
(モデル内のインスタンス・フィールドだけで処理が片付いてしまうようなもの)はモデルに
実装するぞ。複数のモデルが絡んでくるようなものはサービスにまわす。貧血症ぎみの
クラスは多いが、それでも構造体よりはましだと思う。
0111デフォルトの名無しさんNGNG
>>110
前スレの後半で俺も似たようなこと言ったんだけど、
構造体として使うのがくーすらしいよ。

つーかドメインオブジェクトが何かって事をそもそも理解されてないようだから、
このスレの"ナイーブOO指向好き"と論点が噛み合わないんだよな。
複数業務にまたがるロジックがあるからこそドメインオブジェクトが存在してるんだろうに。
あれだけ、でかでかともっともらしいことを書くんなら、せめてもうちょっと
OOについての理解を深めてからにしてもらいたい>>比嘉氏
0112デフォルトの名無しさんNGNG
ここはHDataSetのサポートをしてくれるスレじゃないんですか。
そうですか。
0113デフォルトの名無しさんNGNG
>>111
ttp://d.hatena.ne.jp/higayasuo/20040801#1091337811
> OOPの良さは分かったけど、OOA,OODってよくわからんと思ってました。
> プログラミングのスタイルも我流で、適当にクラスを作っていただけです。
> 心がけていたのは、メソッド全体を一度に画面で確認できるくらい
> 小さいものにすることだけ。
0114デフォルトの名無しさんNGNG
人が育たないって主張に対するレスポンスがないな
0115デフォルトの名無しさんNGNG
>>109
ほれ
http://eclipsewiki.net/eclipse/?Implementors%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3
0116デフォルトの名無しさんNGNG
>>114
自分で勝手に育っていく奴以外はほっとけ。
そんなことに金かけてる時代じゃねーんだよ。

ま、あんまりたくさん育っても任せる仕事がとってこれないから
くーすみたいなのでできない奴をうまく使いつつ、
勝手に育った奴に仕事任せていけばいいんじゃない?
育たない奴はいつまでもプログラマ。か、別の業種で頑張ればいいんじゃないか?

一般的な会社組織ってピラミッド型になってて、
成長していくとピラミッドがでかくなってしまうよね?
でもピラミッドの上方(高給取り)の比率を高くしないように
ピラミッドの形を維持していかなければならないから、
実はみんなに育たれちゃうと困るんだよね。
(全体の人件費を抑えざるを得なくなってしまうから)

日本の高齢化社会の年齢構成みたいに高給の人間の比率が多い組織になると
収益率を上げていくのは大変だからね。
0117デフォルトの名無しさんNGNG
ドメインオブジェクトと永続オブジェクトを分ける話じゃないんですね。
0118デフォルトの名無しさんNGNG
サービス層はドメインオブジェクトじゃないのか?
データアクセス層を純粋にデータアクセスだけに特化させることはOKな感じもする。
つまりDBからデータを取ってくる以外のロジックは存在しないただのBeanって感じで。
0119デフォルトの名無しさんNGNG
結局、エンティティBeanのショボイ奴か。
0120デフォルトの名無しさんNGNG
くーすは名前を返上すべし。
熟成とは縁のないファストフード作りのマニュアルじゃん。
0121デフォルトの名無しさんNGNG
http://d.hatena.ne.jp/higayasuo/20041218#1103335335
> 問題は、ドメインオブジェクトに業務ロジックを追加するのが、
> ナイーブかどうかということです。
>
> 私の経験からするとドメインオブジェクトが複数の業務で
> 使われるということは良くある話です。
> 複数の業務の業務ロジックを1つのドメインオブジェクトに
> 持たせるということは、単一責任の原則に違反しています。
> クラスを変更する理由が複数あるためです。

複数の業務の業務ロジックをドメインオブジェクトへ
持たせたとしても、単一責任の原則には違反しません。

「業務Aの機能と業務Bの機能をドメインオブジェクトDへ持たせている」

と考えると単一責任の原則に反しているように見えますが、

「ドメインオブジェクトDの機能を使って、業務Aの機能と業務Bの機能を実現している」

と考えれば、Dの変更理由は常にひとつです。

よって、

> 問題は、ドメインオブジェクトに業務ロジックを追加するのが、
> ナイーブかどうかということです。

は「ナイーブではありません」が結論。


# ちなみに「単一責任の原則」はアジャイルソフトウェア開発の奥義に
# 載ってます。いい本ですよ。
0122121=44NGNG
べつに、DomainDrivenDesignを否定しなくてもいいとおもうんだけどね>ひがさん

くーすのネーミングの理由を聞かれたakonが
> 車輪の再発明ではなく、昔の道具でも使い方しだいで対応できるという心をこめてのネーミングです。
って言ってることですし、手続き型上等、TransactionScriptマンセーと開き直ればいーじゃない。
0123デフォルトの名無しさんNGNG
それにしても、オブジェクト指向じゃないくーすに(21世紀の手続き型なんでしょ)ナイーブなオブジェクト指向とか、レガシーなオブジェクト指向とか言われたくない。
0124デフォルトの名無しさんNGNG
>>114
>人が育たないって主張に対するレスポンスがないな

くーすは人を成長させるとことにフォーカスしてないからしょうがないよ。

人を成長させるってことなら、XPが一番だな。とくにペアプロが効果大。
0125デフォルトの名無しさんNGNG
>121
それは設計によるだろ。
0126デフォルトの名無しさんNGNG
くーすを好みそうな人たちのいる組織もたくさん思い当たる。
俺はそこがいやで転職したわけだが。
0127デフォルトの名無しさんNGNG
>>126
くーすやSeasarを使おうが使うまいが、
力のない会社にプロジェクトは失敗はついて回るでしょうし、
くーすやSeasarを使おうが使うまいが、
力ののある会社はそつなくプロジェクトを成功させるでしょうね。

012895NGNG
>>101
あー、開発段階の話じゃないのよ。
納品して、お客さんがちょっとカスタマイズしたいって場合ね。
もちろんサポート外になるのは、こっちもお客も同意済み。

>>115
さんきゅー
012944NGNG
http://d.hatena.ne.jp/higayasuo/20041218#1103335335
> 私がいっているのは、データと振る舞いをカプセル化するという
> 考えは、オブジェクト指向の重要なポイントですが、単純に
> データに振る舞いを追加するのではなく、そこに、クラスは
> 1つの役割だけを担うようにするという視点を必ず持つように
> しましょうということです。

これは分かるのですが、これを理由に

>役割ごとにクラスを分割するという観点で考えると、
>
> * 永続化されるデータを管理するクラス
> * データベースにアクセスするクラス
> * 業務ロジックを扱うクラス
> に別れるというのは、理にかなったことだということが
> 分かると思います。

という結論が導き出される理由が分かりません。

「データを管理」や「業務ロジックを扱う」などはクラスの役割とするには低レベルすぎますし、曖昧にすぎます。

以下はjunitのjavadocから抜き出したものですが、

-TestResult
A TestResult collects the results of executing a test case.
-TestSuite
A TestSuite is a Composite of Tests.

役割というのは上記のような粒度のものであって、データの管理や業務ロジックを扱う、などはその内に含まれるものです。それ単体で役割として考えるべきものではありません。
013044NGNG
>>127
よく分析麻痺、設計麻痺に陥ってるプロジェクトがあるけど
そういうプロジェクトにはくーすの割り切りの良さはスゴク効果的だと思うな。
0131デフォルトの名無しさんNGNG
>>121
その論理が成り立つなら、どんなクラスでも単一責任の原則に
違反することはない罠。
あるクラスの機能を使ってるといえば良いんだから。
0132デフォルトの名無しさんNGNG
>>127は会議で話題をループさせるタイプだ。
間違いない。
0133デフォルトの名無しさんNGNG
>>95
S2ActionServletとかRegistActionClassPlugInを使えば
Actionに関しては全くダイコンを書かなくても大丈夫だよ?
ファイルの分散も気にならなくなり、
さらに金運も上がって女の子にもモテモテでウハウハです。


ActionにAOP適用してたりするとだめだけどね。
漏れの場合はその辺もRequestProcessorへのAOP適用で代用できたけど。
013444NGNG
>>131

???
もっと詳細キボン。
0135デフォルトの名無しさんNGNG
>>134
あるオブジェクトZが、A, B, C, ..., Yの役割を持っていたとしても、
オブジェクトZの機能を使ってるんだといえば、
単一責任だというように読める。

業務Aのための機能と業務Bのための機能は、
やっぱり別々の役割で内科医。
0136デフォルトの名無しさんNGNG
おまいら話の粒度を揃えてから喋れ。
業務って、具体的に何をどうすることを想定しているのだ
0137デフォルトの名無しさんNGNG
トランザクションをコミットするまで。
0138デフォルトの名無しさんNGNG
就職してボーナスが出るまで
0139デフォルトの名無しさんNGNG
>>137
それじゃ大きすぎないかな。

支払を管理する支払テーブルがあったとして
支払に関連するものとして、
通常の買掛金に対する支払と
売掛金返金に伴う支払と2つあった時に、
トランザクション単位で考えれば業務は2つだけど
支払データ生成ロジックは共通で使いたいでしょ。

この場合、買掛金消込、売掛金返金、支払データ生成
の最低3つを業務と捉えるのが望ましいと思うんだけど。
トランザクションの数とは一致しない。

とはいえ、確かに殆どの場合は
トランザクションと一緒で問題ないかもね。
0140デフォルトの名無しさんNGNG
http://d.hatena.ne.jp/higayasuo/20041219#1103445985

単一責任がどーのこーの言う前に、まずオブジェクト指向の基礎から学び直していただきたい。
0141デフォルトの名無しさんNGNG
>140
ナイーブの意味もついでに調べてみよう
0142デフォルトの名無しさんNGNG
>>140
データと振る舞いが一緒だとオブジェクト指向だと思っている
単純なやつはけーん。
0143デフォルトの名無しさんNGNG
140じゃないけど、どの辺りを読むとそういう結論になるのか分からん。
157には同意
0144デフォルトの名無しさんNGNG
>>141
ナイーブなオブジェクト指向、っていうことばなんだけどさ、

http://www.ogis-ri.co.jp/otc/hiroba/OoBook/Beginner/B3.html

OOSE以前のオブジェクト指向設計方法論の
「OOピュアたるべし、ユースケースはOOじゃない」
みたいな考え方を指していたと思うんだけど、
いつの間に凝集性の低いクラスを作ることを「ナイーブなオブジェクト指向」と呼ぶようになったの?
0145デフォルトの名無しさんNGNG
>>144
よーどんさんたちの言う
「ナイーブなオブジェクト指向」は知らないけど
普通に「ナイーブ」なオブジェクト指向って事なら
142の煽りのような意味で取りますわな。文脈からしてさ。
そういう意味でひがたんは使ってると読んだんだけど・・・

なにっ?もしかして、OOワールドでは
コードやヨードンが厳密に定義した言葉として
認識されてるのかっ?
0146デフォルトの名無しさんNGNG
>>143
そうだな。確かに>>157はいいことを言ってる。俺も禿胴だ。
014744NGNG
>>135

[ 業務A ]
ログイン機能 ---> use isExpired()

[ 業務B ]
社員給料計算機能 ---> use calculatePay

[ オブジェクトZ ]
------------
社員クラス
------------
+isExpired
+calculatePay
------------

この場合のオブジェクトZは単一責任の原則をやぶってると思う?
おれは思わないよ。
0148デフォルトの名無しさんNGNG
>>145

違う概念を同じ名前で表したら混乱を招くでしょ。
014944NGNG
http://d.hatena.ne.jp/higayasuo/20041220#1103504150
>工数は、リッチな業務ロジック層とDTOパターンのほうが少なくなります。
>DTOとEntityを相互変換する手間がかからないためです。

リッチなドメインオブジェクトパターンではDTOは(めったに)使わないですよ。
0150デフォルトの名無しさんNGNG
>>145
厳密に定義されてなければ、同じ言葉を別の意味でつかっても混乱をまねかない、ってもんじゃないだろ。
0151デフォルトの名無しさんNGNG
>>147
>この場合のオブジェクトZは単一責任の原則をやぶってると思う?

システム領域の機能とビジネス領域の機能を一緒に持たせて単一責任も何も。
ナイーブすぎませんか?
015244NGNG
> オブジェクト指向について意見を書くことは、特にデータと
> 振る舞いを1つにすることが、常に正しいとは限らないなんて
> 書くことは、私にとってものすごくリスクの高い&なんのメリット
> のないことです。
>
> にもかかわらず、あえて書いているのは、正しくオブジェクト
> 指向を実践しているように見えても、それが保守性の低下を招く
> 場合もあるということを認識して欲しいということです。

これの例として

> EntityDを使う新たな業務機能が追加されるたびにEntityDに
> メソッドを追加していくと、EntityDは次第に複雑に
> なってきます。

を挙げられているようですが、
EntityDが複雑になる原因は、データと振る舞いを1つにしたことではなく、機能の追加によって次第にEntityDの責務が単一でなくなっていくからです。
このような場合、「データと振る舞いを分割する」のような極端な方法に走らなくとも、EntityDが持つ責務に応じてExtract Classしてやればよいと思います。


> 薄いサービス層とリッチなドメインオブジェクトパターンは、
> 業務機能Aに仕様変更が入っても業務機能Bに仕様変更が入っても
> EntityDを修正することになります。

業務Aから呼ばれようが、業務Bから呼ばれようが
EntityDの持つ責務に変更が入ったのだからEntityDに修正が入るのは
当然だと思いますが。
015344NGNG
>>151
どちらがシステム領域で、どちらがビジネス領域?
両方ビジネス領域だと思いますが?
0154デフォルトの名無しさんNGNG
だから、「ナイーブなオブジェクト指向」じゃなくて
「ナイーブな」オブジェクト指向、って感じで普通に使ったんじゃないの?て話。

148も150も、ナイーブって言葉をはじめて聞いたんでしょうか?
俺、もっと普通に使う言葉だと思ってましたよ。
151がさりげなく使ってるように。

ばかばかしいからこの話やめな。
「ナイーブなオブジェクト指向」って言葉は
テクニカルタームとして、ヨードン、コードが定義した内容でフィックスされてて
ひが氏の使い方は間違い、で、俺の負け、それでいいよ、もう。
0155デフォルトの名無しさんNGNG
ナイーブだナイーブだ言ってる人たちは

http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/?DomainModel

を知ってるのだろうか。
0156デフォルトの名無しさんNGNG
>>153
確かに、ログインした職責によって
権限を切り替えたりとか、ビジネス領域ですね。

ただ、認証クラスが処理した結果取得出来た属性(IDや職責)を
社員クラスにセットしてやるだけで後はいいじゃん、とか
給料計算を社員自身にさせるのはどうかなあ、とか
議論のある所だと思います。

正解がないだけに色々と人によってまちまちになっちゃうから
いっその事統一ルールで、データの振る舞いは
全部分けちゃえって話だと読みましたがどうでしょう。
0157デフォルトの名無しさんNGNG
>>155
前スレでその話は出たのです。
貧血症でも金欠症よりはましだという
はぶさんの言葉もありましたな。
0158デフォルトの名無しさんNGNG
別にS2使うからといってくーすを守らないといけないかというとそんなことはないし
くーすが気に入ったからと言ってS2でないと駄目ってことでもないし。
そもそもどっちもマイナーなんだし放置でいいんじゃないのと思うのは俺だけか?
0159デフォルトの名無しさんNGNG
>>153
>両方ビジネス領域だと思いますが?

J2EEが提供するような低水準サービスと間違われたか? スマソ
情報システム以前に存在する概念(実体)とシステム化に伴う
概念とを一緒にするのがどうかってことなんだけど。
ところでシステムにログインできるのは社員だけ?
役員や派遣社員は? バイトを雇ったら?
漏れはログインに関わる機能が社員にあるのは、
例としても不適切すぎると思うが、
44氏はアダルト、で、俺の負け、それでいいよ、もう。
0160デフォルトの名無しさんNGNG
>>159
おっしゃることはわかりました。けど

you arent gonna need it.

今想定しているシステムでは
-社員のログイン
-社員の給料計算
しかやらないのでこれで十分ですw
必要になったらリファクタリングしましょう。
0161デフォルトの名無しさんNGNG
>>159
その話は面白いので、いいよもうで逃亡しないで
もっとやって下さい。

ログインが159の言う意味でのシステム領域か
ビジネス領域かは案件によって様々で
一概にはいえないと思いますけど、
後半は全く同意で御座居ます。
0162デフォルトの名無しさんNGNG
勝ち負けの争いだったのか。
ということは、傍観してる俺の勝ち。
0163デフォルトの名無しさんNGNG
http://d.hatena.ne.jp/higayasuo/20041219#1103445985
>
> http://d.hatena.ne.jp/makotan/20041219#p4
>
> で、うまくまとめられてると思いますが、できる限りスコープ(役割)を小さく抑えることで、
> 修正が入ったときの影響範囲が小さくなり、保守性が増します。

リンク先を読みましたが、データと振る舞いを分けるメリットが
よく分かりません。
データと振る舞いを分けるとなぜ修正の影響範囲が小さくなるのでしょうか?

また、私には逆にデメリットばかりが思いつきます。

-データ構造を公開することにより、疎結合性を妨害
-ポリモーフィックな振る舞いを持てない
-いくつかのデザインパターンの適用を妨げる(Compositeパターン等)


> それを考えるには色々な情報が必要になって一概に言えないので
> 簡略化する為に常にデータと処理を分離することにする。

簡略化するために常に分離しないことにしても良いのでは?
016444NGNG
> 2chとのやりとりは、正直ブルーだったけど、44氏にありがとうといわれて、
> うれしかったです。これからも、よろしくお願いします。

そんなご丁寧にw
こちらこそよろしくお願いします。
0165デフォルトの名無しさんNGNG
ナイーブな人だな。
0166デフォルトの名無しさんNGNG
>>147
これ実際のプロジェクトでやられたら激しくやだ
calculatePayはどう考えても社員クラスにもたすべきじゃない。
44は実務でこんな設計してんの?それとも実務を知らない学生さんなのか?
0167デフォルトの名無しさんNGNG
給料が社員自身のパーソナリティに強く依存している会社なんだよ。
月給=体重/(身長*身長) 万円 とか。
016844NGNG
>>166
> >>147
> これ実際のプロジェクトでやられたら激しくやだ
> calculatePayはどう考えても社員クラスにもたすべきじゃない。
> 44は実務でこんな設計してんの?それとも実務を知らない学生さんなのか?

アジャイルソフトウェア開発の奥義の125Pから持ってきた例なので、
文句があるならロバート・C・マーティンへどうぞw

冗談はさておき、calculatePayを社員へ持たすべきじゃない理由を教えてほしいんだけど。
0169デフォルトの名無しさんNGNG
さむいねw>167
0170デフォルトの名無しさんNGNG
S2Dao使ってるんだけど、ログのレベルどうにかならないかな。
SQL文のログと、「トランザクションを〜」のログレベルが同じなのはどうかと思う。
SQL文って障害解析時に使うけど、「トランザクションを〜」が同じレベルで存在してると、ウザイ。
0171デフォルトの名無しさんNGNG
実運用時にSQLをログに吐いたりするもんなのか?
■ このスレッドは過去ログ倉庫に格納されています