深夜のDCI談義

まとめてますが結論っぽいものは特に無いです。
3
yojik @yojik_

DCIってトレイツ使う必然性がわからない。ロールからデータに普通に委譲すればいいじゃんみたいな。。。

2012-05-31 22:41:47
yojik @yojik_

@kdmsnr ロールオブジェクトがデータをラップするアダプタパターンで、大体やりたいことできそうな気が。。

2012-05-31 23:14:46
角 征典/Masanori Kado @kdmsnr

@yojik_ ロールを再利用したい話だったような

2012-05-31 23:19:06
yojik @yojik_

@kdmsnr ロールをトレイトで定義すると再利用しやすくなる、、のかなあ。強いて言えばデータに複数のロールを編み込むのはアダプタでは難しそう。。

2012-05-31 23:24:15
角 征典/Masanori Kado @kdmsnr

@yojik_ データのほうが固定してるので、そっちからロールを参照したいんだと思う。ロールはユースケースなので流動的。って、理解で合ってんのかな……。

2012-05-31 23:30:05
えむ。 @takkanm

@kdmsnr @yojik_ DCI全然理解できてないですがcopeの論文読んだ感じだと、ユースケースが違ってもデータの振る舞いにパタンのようなモノがでてくるから、それをデータから剥がして、使うときはデータに入れたり抜いたりしたいのかなと。なので、トレイトは有効だと思ってます

2012-05-31 23:36:47
yojik @yojik_

@takkanm @kdmsnr a = new Account with TransferSource みたいにデータにロールを組み込むのと、a = TransferSource(new SavingsAccount())、素直にアダプタにするの、違いはどこにあるんだろうという

2012-05-31 23:48:34
yojik @yojik_

ロール -> データ という依存関係自体はロールをトレイトにした場合でも、ロールをアダプタオブジェクトにした場合でもかわらないし、むしろアダプタの方が動的にできるメリットがある気がする。。 逆に静的に解決するメリットというのがあるのかなぁ。

2012-05-31 23:50:51
yojik @yojik_

DCIのサンプルに使われている口座の例で惑わされてるだけなのかも。。

2012-05-31 23:52:32
研ちゃんくん鑽Rubyプログラミング @kenchan

コンテキストを抜けた時にロールが剥がれるってのはなかなか面白いけど、ホントにそれ使うかって言われるとよくわかんない

2012-05-31 23:55:06
えむ。 @takkanm

@yojik_ @kdmsnr traitならコンテキストが変わる際にデータから振る舞いを抜いて使いまわしやすいのかなと。アダプタだと生成後につけかえるのが大変そうなイメージです。ただし、この意見とほぼ同じで実際使うかどうかはわかんない http://t.co/i6NMRzBG

2012-06-01 00:08:17
yojik @yojik_

@kdmsnr サンプルを見る限り必ずロール→データ という依存関係なんですよね。。サンプルがあまり良くないのかも。。

2012-06-01 00:08:29
Naoto Takai @takai

DCIとかって曲芸でしょ

2012-06-01 00:10:46
yojik @yojik_

@takkanm @kdmsnr 実際にデータにロール(Traits)組み込んでしまうと、あとで抜くのが結構難しい気がする。Scalaの場合Traitsを組み込んだ(継承した)クラスを内部で静的に生成するだけなので。SmalltalkやRubyのTraitsだと出来るのかな。。。

2012-06-01 00:12:52
yojik @yojik_

やっぱり動的言語のTraitsは動的にメソッド群を抜き差しできるのが基本っぽい。静的言語の場合は継承パスに無理やり追加するイメージ。http://t.co/crgf1IGH

2012-06-01 00:16:55
角 征典/Masanori Kado @kdmsnr

@yojik_ @takkanm えーだってドメインオブジェクトに命令したくないですか?(そういう話じゃなく?)

2012-06-01 00:28:59
yojik @yojik_

@kdmsnr @takkanm そういう心理的な効果に関しては少しわかる気がします。

2012-06-01 00:30:13
角 征典/Masanori Kado @kdmsnr

@yojik_ @takkanm 明示的に抜くんじゃなくてコンテキストが終了したらおしまいって感じだと思う。

2012-06-01 00:31:10
角 征典/Masanori Kado @kdmsnr

@yojik_ あー。依存関係だと変な感じですね。

2012-06-01 00:32:53
えむ。 @takkanm

@kdmsnr @yojik_ そうですね。そこを勝手にやってくれるイメージでいます

2012-06-01 00:35:45
Naoto Takai @takai

Rubyのオブジェクトってクソの塊みたいなもんなので、あるコンテキストに向けていい顔するみたいなことできないとおもってたんだけど

2012-06-01 00:36:25
えむ。 @takkanm

たぶん、リファイメントが実装されないといい顔できない気がしますねa

2012-06-01 00:37:10
Naoto Takai @takai

@takkanm リファインメントが実装されても無理だとおもう

2012-06-01 00:38:02
Naoto Takai @takai

DCIは設計レベル・分析レベルの概念をプログラミングレベルで担保しましょうみたいな話だとおもっていて、そういうのは曲芸だとおもっている

2012-06-01 00:41:29