- 1 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 04:27:58 ]
- 前すれ
〔隔離〕デザインパターンは本当に必要か?〔スレ〕 pc8.2ch.net/test/read.cgi/tech/1119348596/
- 302 名前:デフォルトの名無しさん [2007/03/29(木) 18:00:19 ]
- >>300
バグを発見しますた。 鈴木君の一人プロジェクトが無限ループを起していて いつまで経っても成果が出てきません!鈴木君ハサーン /* 「手配師が鈴木君本人しか集められなかった場合」の * * 等価コード */ public class 鈴木君 { // ConcreteStrategy // 版画を彫る public Hanzai createWoodCutPrint() { // 鈴木君が自分を拉致る 鈴木君 agent = 鈴木君.getInstance(); // 鈴木君はいつものようにメンバーに強制労働をさせて、 // 成果だけ横取りするつもりだったが、 // 結局自分一人では何もできずに // 貯え(VMスタック)を消費しつくして終了 return agent.createWoodCutPrint(); // 無限ループで throw RuntimeException("スタックオーバフロー") } }
- 303 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 18:38:56 ]
- エロゲで使われているパターン
Singleton 他なんかある?
- 304 名前:300 mailto:sage [2007/03/29(木) 18:52:15 ]
- >>302
バグスマソ( ; -_-) >>294版鈴木君の等価コードはこうだ。 public class 鈴木君 { // ConcreteStrategy // 版画を彫る public Hanzai createWoodCutPrint() { /* 以下、手配師付き変形TemplateMethod(コンテキスト)内の等価コード */ //{ // 鈴木君は手配師を呼ぶ。(メンバー一人の場合、自分が手配師になる) Coordinator slave = this; // 手配師に各工程担当者を集めさせて、 // 版材を準備し、版材処理を実行する。 Hanzai hanzai = slave.getCutProcessor().cut( slave.getDrawProcessor().draw( slave.getHanzai())); // 版材を刷る。 slave.getPrintProcessor().print(hanzai); //} return hanzai; } public Hanzai getHanzai() { reuturn new Hanzai(); } public 切り方 getCutProcessor() { return 切れ方_0893D.getInstance(); } public 書き方 getDrawProcessor() { return 書き方_1919Z.getInstance(); } public 刷り方 getPrintProcessor() { return 刷り方_0212A.getInstance(); } } // Functorパターン public class 切り方_0893D extends 切り方 { public Hanzai cut(Hanzai hanzai) { /* 何もしない */ } } public class 書き方_1919Z extends 書き方 { public Hanzai draw(Hanzai hanzai) { /* 何もしない */ } } public class 刷り方_0212A extends 刷り方 { public Hanzai print(Hanzai hanzai) { /* 何もしない */ } }
- 305 名前:デフォルトの名無しさん [2007/03/29(木) 19:46:45 ]
- まとめると、
>>275=>>284の質問(>>292で解決済) テンプレートメソッドで、処理が同じものがある場合に、 (注: 同じなのは、TemplateMethod単位か、個々のメソッド単位か不明) どのようなクラス設計をしたら良いか? >>279-280、>>285-290の回答 TemplateMethod単位で同じものがあったら、 それをStrategyパターンで外出しして共用すれば良い。 ※ここまではOK >>293の回答 TemplateMethodの個々のメソッド単位で同じものがあったら、 それをStrategyパターンで外出しして共用すれば良い。 ※>>293の実装コードは ドメインモデル(鈴木君, 田中君)に、その本来の責務と無関係な役割 Coordinatorインタフェースを割り付けている点がおかしい。 鈴木君、田中君と、Coordinatorは、明らかに分離すべきである。
- 306 名前:305 [2007/03/29(木) 19:47:36 ]
- >>293の実装コードの問題点
分析/設計で得たモデルの特性として、 「手順を構成する複数の工程について、 各工程の処理方法にバリエーションがあり、 なおかつ、各処理方法は互いに交換可能」 な事が明らかならば、>>293の実装もありえる。 しかし>>293の実装の根拠が、単なる「コード再利用目的」だったとしたら、 不吉な匂いがする。・・・数100人月のシステムで、 このように見通しの悪い設計をして、デスマーチ化したのを見た事がある。 どのような場合にこの実装/設計が破綻するかと言うと、 設計/初期実装に見落としがあって、 Hanzaiインタフェースに後からバリエーションを持たせる必要が生じた場合 である。この場合、Hanzaiインタフェースのバリエーションに関して、 各処理方法は互いに交換可能でなくなる。 正直に言おう、デスマーチ化したシステムにおけるHanzai相当の変化要素とは なんと「入出力とDBエンティティ」だった、という事を。バッカでぇ〜
- 307 名前:デフォルトの名無しさん [2007/03/29(木) 20:14:36 ]
- デスマーチ化したシステムにおける「完成した版画」相当の要素は「画面」ね。
プロトタイプ作成時は、「版画」は1種類だけ考えれば済むから、 その版画作成に使う版材も、処理手順も、詳細処理方法も1種類ずつで済む。 ・・・プロトタイプのやり方をアーキテクチャ設計文書として配って、 開発もバッチグーね?とお気楽モード。 ところが開発展開になってから、 「版画は一種類だけじゃなくて複数ある」って当たり前の事実に気付く。次いで、 「異なる版画には、異なるサイズや材質の版材が必要」な事とか 「異なるサイズや材質の版材には、異なる処理手順や詳細処理方法が必要」 ってな事にも、おそまきながら気付く。 アーキテクチャ設計ハターンwwww ・・・いや、気付いてても気付かないフリしたんだろう、 アーキテクチャ設計のボンクラ共は。 じゃ、互いに異なる処理手順や詳細処理方法を、どうやって共用すればいいか・・・ 幾多の戦場を潜り抜けてきたCOBOL上がりの現場連中は、その難題に気付く事もなく問題解決してた。 その問題解決とは「データ構造や処理は一切共用せず、画面毎に別々のデータ構造と処理を書く」だったwww 共用しなけりゃTemplateMethodもStrategyも一切関係ねぇじゃん。バカかこいつら、と思った。 それでは、正しい解決方法はどこにあるのか それを私は知っているが、このレスにはもう余白がないので書けないw
- 308 名前:鈴木 [2007/03/29(木) 22:31:38 ]
- おまいら、俺の名前を気安く使うな、不愉快だぞ
続きは「佐藤クン」で
- 309 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 22:37:17 ]
- 上がダメなら、下の名前ならおk?
例えばひろゆきとかゆきひろとかたかゆきとかあと
- 310 名前:デフォルトの名無しさん [2007/03/29(木) 22:49:30 ]
- 問題はドメイン・モデリングの欠落だなw
- 311 名前:デフォルトの名無しさん [2007/03/29(木) 22:55:01 ]
- 問題領域が「版画作成」なら、最終目的は「版画」だけど、
問題領域が「業務処理」なら、最終目的は「画面」じゃねぇ〜よなw つまり、画面中心で設計したら火ぃ噴くの当たり前っつう話
- 312 名前:デフォルトの名無しさん [2007/03/29(木) 22:57:26 ]
- 「業務処理」の目的は、DB更新と電文(w。
- 313 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 22:58:09 ]
- >>312
それはありえん
- 314 名前:鈴木 [2007/03/29(木) 22:59:24 ]
- >>309
それもダメだ、かすってる 鈴木の続きは「都築」でどうだ
- 315 名前:デフォルトの名無しさん [2007/03/29(木) 23:03:13 ]
- >>314
じゃニックネームで手を打とうぜ。 例えばPackard, Tinkerbell, 卓球、うーんRuecktくらいでどうだ
- 316 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 23:05:28 ]
- >>309、>>315
見事なまでのプロダクトラインだなw
- 317 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 23:07:17 ]
- 閑話休題
- 318 名前:デフォルトの名無しさん [2007/03/29(木) 23:10:48 ]
- >>312
ある種の基幹系業務システムは、 構築難易度を下げて抽象化すると、 結局、マスタメンテ型アプリに帰着する。 すると、最終目的がマスタ更新ってのも そんなにずれていない。 するとオブジェクト指向で書く必要ないんだな、これが。 (終了)
- 319 名前:デフォルトの名無しさん [2007/03/29(木) 23:13:24 ]
- )再開(
- 320 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 23:17:09 ]
- GoFなんでカビの生えたパターンに未だにとらわれている初心者共乙w
- 321 名前:デフォルトの名無しさん [2007/03/29(木) 23:17:18 ]
-
ソフトウェア・プロダクトライン系の開発方法論の話しようぜ。
- 322 名前:デフォルトの名無しさん [2007/03/29(木) 23:22:56 ]
- >>321
M$のHワラ氏、ITアーキテクチャ誌に連載してたね、2年ほど前。 CMU/SEIのCMMIと、CMU/SEI近辺で定義されたプロダクトライン、 所詮は別物だけど、あの近辺は元々俺の領分だから(どこがだよ) ちょっと後悔(ウツウツウツウツシクウツウツシクシクウツウツウツウツウツシクシクシクシクウツウツウツ そんな事じゃいかん。俺はCMU/SEIはともかくとして、 日本のCMMI連中とは全然話が合わないんだったw なんか、プロダクトライン・アーキテクチャ周りでいい話ねぇの?(爆
- 323 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 23:29:25 ]
- >>322
特に無い。
- 324 名前:デフォルトの名無しさん [2007/03/29(木) 23:38:44 ]
- >>320
確かに飽きてきたのも事実 だが使いこなせてる奴が意外と少ないのも事実
- 325 名前:デフォルトの名無しさん [2007/03/29(木) 23:45:29 ]
- だが使いこなせてる奴は10年前から退屈してるのも事実
- 326 名前:デフォルトの名無しさん [2007/03/29(木) 23:49:47 ]
- 2PLoP (2ch Pattern Language of Programming)報告:
Python初心者の人が、Javaで書かれたGoFパターンをPythonに移植しようとしてて、 まあ判ってるPython関係者にはスルーされてたんだけど、こないだ中止宣言出してた。 彼に同情的な人が言うには、「PythonはGoFパターンサポートしてるけど、Javaとはやり方が違う。 トップダウンにJava版GoFをPythonに移植するような翻訳物するんじゃなくて、 Python書きが書いた膨大なコードからパターン抽出するほうがよっぽどためになる」つってた。 pc11.2ch.net/test/read.cgi/tech/1172431242/
- 327 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 23:56:05 ]
- 糞コード放置してった >>293は
今どこで野垂れ死んでいることやら
- 328 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:05:24 ]
- >>326
Pythonというか、いわゆる軽量言語にデザパタはいらんのじゃないかなぁ。 大規模開発にはそもそも向いてないでしょ。 もしかしたら、オブジェクト指向すらいらないかもしれないし。 馬鹿にして言ってるのではなくて、住み分けがあるだろうと。 大規模開発は javaなり c++ なりでデザパタを使って書けばいいし、 身近なユーティリティーを書くなら、軽量言語というか perlででも書いた方がいいし。 大規模開発に向かん言語で、デザパタっていっても そもそも意味がないと思うんだな。
- 329 名前:デフォルトの名無しさん [2007/03/30(金) 00:14:09 ]
- >>328
常識的な意見ってツマンナイよ rubyからrailが生まれたし、javascriptからAJAXが生まれた そんなご時世なのだ
- 330 名前:デフォルトの名無しさん [2007/03/30(金) 00:18:07 ]
- >>328
マジレスするぞ。 Pythonは関数言語的機能のほかに、 metaclassシステムやら、動的言語の性質をあちこち持ってるから、 C++やJavaよりよっぽどSmalltalk寄り。 そこにあろうことかJava版GoFを移植したってのが笑い所。 あと、後半部「ボトムアップでパターン抽出」 これは別に間違ってないだろ。 むしろ、将来Javaに取り入れるべき言語機能やパターンを 発見できるかもしれない(もう金脈は小さいと思うけどな)。 文句ばっか言って他をけなしてないで、 学ぶところは学びなさいってこったw
- 331 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:24:32 ]
- 関連ないが、Perlのプロトタイプ系OO拡張、あれは結構糞だ。
OOの面倒くさい所と、Perlのいい加減な所がダブルで来る。 でも、Javaと同様なクラスライブラリ書き始めると、 あっちの方がよっぽど融通利いて手早く完成する。 さすが90年代のLispと呼ばれただけの事はあるな。 関連ないが、Javascriptのプロトタイプ系OO機能、あれは最高だ。 あれ一つでずいぶんJavascriptのコードが書きやすくなる。 問題はjavascriptエンジンのバグやエラー報告の不充分さ。 あれ使って10年程前にAJAX風アプリ書いてた時は、 試行運用中に山のように実行時エラーがでて閉口した。 今の連中は幸せだよなぁ。あれで、Netscapeがまだ生き残ってたら 万々歳なんだが。 パターン関係ないチラ裏スマソ
- 332 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:26:57 ]
- >C++やJavaよりよっぽどSmalltalk寄り。
て言われても、Smalltalk てそんなにいいのか? 動的言語と言われた時点で、うーみとなりそうだけどなぁ。 型は、事前に論理的誤りを検出するためにあるんだぜ? それを最初に省いたら、あとから泣きみるだろ。 それでデザパタが必要とされるような大規模開発に 向いてるといえるのだろうか?
- 333 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:27:09 ]
- > OOは大規模開発向け
だなんて地に足のついてない発言してる人が まだ国内に居ると知って、ワロタ 済まないが、実績作ってから言ってくれ おまいらの作ってるのはOOじゃねぇだろ 単にOO系言語でOOP風の事をしました(でも中身はCOBOLそっくり) だろ
- 334 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:28:45 ]
- >>232
あぁーあ。今度はCS系関数言語厨房か。 マイクロソフトリサーチの人が なんとかしてくれるだろ。
- 335 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:29:28 ]
- > デザパタが必要とされるような大規模開発
どっから出てきた妄想ですか?
- 336 名前:デフォルトの名無しさん [2007/03/30(金) 00:31:22 ]
- すげぇずうずうしさだなコイツ
>>306-307, >>310-312, >>318で 大規模(自称)OO開発の失敗例 ケーススタディしたばっかだっつうのに、 解決策も出さずに「大規模OO開発」かよ。
- 337 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:32:59 ]
- なんだよ、Py厨だけじゃないのかよ。
てか、py厨が引っ掻き回してるのか? ただな、デザパタなんてなくてもやれるし、あったらあったで 便利だし、ぐらいのところでいいだろ。 実際、それ以上でもそれ以下でもないし。
- 338 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:33:59 ]
- > 型は、事前に論理的誤りを検出するためにあるんだぜ?
そんなキミには、汎用純関数型言語Haskellを使って、 monadic programmingを駆使した通信ミドルウェア開発が オヌヌメ。使用検証技術も必須だよ?jfitsの人がやってるような奴
- 339 名前:デフォルトの名無しさん [2007/03/30(金) 00:36:05 ]
- 大規模(自称)OO開発の失敗例 ケーススタディ >>306-307, >>310-312, >>318
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ に解決策提案するまで、 大規模OO開発へのデザインパターン適用の話題自粛で お願いします。
- 340 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:36:10 ]
- 何この盛り上がりようw
- 341 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:37:31 ]
- たかびー祭+ピチョンパターン祭 合同イベント
- 342 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:40:04 ]
- おいおまいら騒ぐな
> 大規模OOにデザパタ必須 って言ってる人の大規模は、 せいぜい数千行〜数万行ぽっちの事だぞ、きっと
- 343 名前:333=336 mailto:sage [2007/03/30(金) 00:42:56 ]
- >>328
どうぞご自由に個人〜数人の範囲で 大規模開発しててくださいです。 いや、それくらいの規模が一番いいと思うよ。 がんばれー 火ぃ噴くのは、プログラムもろくにできないのが 数十人単位で集まっちゃうような地獄の話だからw
- 344 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:44:49 ]
- なんなんだよ、この盛り上がり。
そんなにヒマがあるなら、その、なんだ、Pythonのその膨大な過去の 素敵なコードの資産から、スマートなパターンを抽出して、 俺らをあっと言わせてくれよ。 もう、ずいぶん作業は進んでるんだろ? ここで威張ってるぐらいなんだから。
- 345 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:46:34 ]
- >>344
/~ytakagi/ に直接言え。 もっとも連絡先も書いてねぇけどw
- 346 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:48:29 ]
- 盛り上がってもいいけど、もっと具体的な話してくれ。
抽象論は聞き飽きた。
- 347 名前:293 mailto:sage [2007/03/30(金) 00:50:44 ]
- 物凄いレス着いたw
>>295 PHP5+symfonyなんてしらね >>296-297 で座パタなんてクソ喰らえw >>298 > WoodCutPrintContext == Strategyパターンのクライアント (Contextクラス) >と言いたかったのか? その意味も含んでるけど >だが、それでは > ・鈴木と田中が同じ手順(Strategy)で版画を彫る > ・鈴木が田中の手を借りて版画を彫る >が全く同じ表現になってしまう。これは不適切だ。 が意味不明。 どこをどうすれば鈴木君と田中君の接点が見えてくるのか? >>300 勝手に解釈して話を進めないようにw >>301- 目が疲れたから読めん っていうか、どうしても「鈴木」や「田中」っていういかにもわかりやすい要素ががでてくると、 ソコを主体に考えてしまう悲しい性がワロスw
- 348 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:50:51 ]
- 一体何を聞きたいんだ?
・ソフトウェア・プロダクトラインのための資産管理 ・大規模開発へのOOおよびデザパタ適用の是非 ・そのほか
- 349 名前:デフォルトの名無しさん [2007/03/30(金) 00:54:30 ]
- とりあえず、>>293は
・話の発端(PHP5+symfony)も見えてないし ・クラス命名のセンスもないし ・クラス設計のセンスもないし ・等価コードの意味も理解できないし ・目が悪くて人の話も聞かない 奴である事だけはかろうじて理解できた でなんか用かよタコ
- 350 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:59:16 ]
- > >だが、それでは
> > ・鈴木と田中が同じ手順(Strategy)で版画を彫る > > ・鈴木が田中の手を借りて版画を彫る > >が全く同じ表現になってしまう。これは不適切だ。 > が意味不明。 > どこをどうすれば鈴木君と田中君の接点が見えてくるのか? お前はシャレも解せぬ不粋な人間だと理解した
- 351 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 01:00:00 ]
- > っていうか、どうしても「鈴木」や「田中」っていういかにもわかりやすい要素ががでてくると、
> ソコを主体に考えてしまう悲しい性がワロスw はいはい釣れた釣れた
- 352 名前:293 mailto:sage [2007/03/30(金) 01:09:32 ]
- 終わりか?
>・クラス命名のセンスもないし >・クラス設計のセンスもないし それは否定できんなw ほいじゃーね
- 353 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 01:09:50 ]
- 思い切り東陽町スタイルだな。あの糞コード
- 354 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 01:11:19 ]
- > public WoodCutPrintContext{
単にソースコード保守するだけの 運用チームじゃないかな、彼は
- 355 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 15:41:55 ]
- >>293の元設計の問題点
1. 詳細設計〜実装の主眼を「コード再利用率の向上」に置いたのが誤り。 小手先のテクに走らず、分析〜設計段階で一貫したドメインモデルを用い、 それを素直にコード化して、保守性・拡張性を高める事こそ重要である。 2. 継承や委譲を駆使した「差分コードプログラミング」は煩雑過ぎて人間の手に余る。 もし本気で「差分コード」を扱いたいなら、アスペクト指向開発方法論(AOSD)を取り入れ、 差分定義の組み込みはAOP言語のweaving機能に任せろ。人間の手でやるな。 ・・・だが残念な事に、アスペクト指向言語はまだ底辺現場で使える段階にはない。 つづく
- 356 名前:293 mailto:sage [2007/03/31(土) 00:03:16 ]
- >>293から50レス以上あって
くだらない能書きは大量に吐き出されたが もっと良い解決方法を提示するコードが出てこないとはw 所詮は口だけ、本を読んだだけの頭でっかちで現場で使えん奴らばかりだなw コリャデスマがなくならないわけだ
- 357 名前:デフォルトの名無しさん [2007/03/31(土) 02:06:50 ]
- お前のコードの問題点は示しただろ?すずき
- 358 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 10:55:10 ]
- >>356
一応いっておくが、おまいに絡んでるのはキチガイ一人だけだ。
- 359 名前:デフォルトの名無しさん [2007/03/31(土) 11:48:32 ]
- >>358
議論しているのをキチガイ呼ばわりする奴って どこにでもわくのな
- 360 名前:デフォルトの名無しさん [2007/03/31(土) 11:52:26 ]
- 【ひろたかと2ちゃんの不思議な関係】
・ひろたかがかつて在籍していた会社は全て、ひろたかが去った直後に 2ちゃんでしつこく攻撃される。 ・ひろたかの元仕事相手、脳内ライバル、 その他ひろたかが自分にとって脅威だと感じる対象は、 2ちゃんのあちこちのスレに中傷文が書かれる。 ・ひろたかが出没するスレには 常に「キチガイ」「発狂」を連発する荒しが発生する。 ・2ちゃんに居る頭も性格も悪い粘着に ← いまココ 噛んで含めるように高度な概念を教えてやると、 いつの間にかたかひろ本人も同じ意見を主張するようになるw ・ひろたかは論破されていても、それに気付かないフリをして勝利宣言をする。 ・ひろたかは論破されると、他のスレで暴れる。 ・ひろたかは成りすまし/匿名発言をよくするが、それが見破られると 「あれは自分に悪意を持っている一味の仕業だ」と苦しい言い訳をする。 さ〜て、また荒しが発生するのかなw
- 361 名前:293 mailto:sage [2007/03/31(土) 12:56:20 ]
- >>358
そういわれるとちょっと寂しい気も・・・w >>357,359 議論になってな(ry >>360 「いまココ」ってところで、「ひろたか」が「たかひろ」になってるってことか・・・w
- 362 名前:デフォルトの名無しさん [2007/03/31(土) 13:15:59 ]
- >>361
議論になっていないと考える低脳はお前だけだ
- 363 名前:293 mailto:sage [2007/03/31(土) 13:27:20 ]
- だってボク低脳ですから
- 364 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 13:39:50 ]
- >>293の元設計の問題点 (つづき)
2-1. Bridgeパターン・スパゲティ (クラスの過剰分割によるOOモデルの崩壊) >>293のコードで省略されているクラス/コードを補足すると、>>304 のようになる。(※1) ※1.createWoodCutPrint() の //{ ... //} 内は、下記の等価コード。 WoodCutPrintContext.getInstance().doWoodCutPrint() >>293は、TemplateMethodの各工程の処理詳細 (draw(),cut(),print()) を共用するために、 「Coordinatorパターン」とでも呼ぶべき「変形Bridgeパターン」を導入し、 Coordinatorで処理詳細の選択できるようにした。 (注:蛇足だがこの種のカスタマイズには、 古くから使われている DI (Dependency Injection)パターンの方が適している。 更に蛇足だが、カスタマイズ内容はコード中に直接記述したりはせずに、 外部ファイル(XML形式)に分離記述して後から変更可能にするのがマナーである。 このコード(>>293, >>304)は、その字面の単純さにもかかわらず、 挙動を読み取りにくく、保守性/拡張性が低い。(前提条件の変化に対し柔軟性が低い)
- 365 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 13:55:01 ]
- くだらねえことをいつまでもグダグダ書いてるが、>>275の問題の本質は
「テーブルとクラスをどうやってマッピングするか」ってところにあることに気づけや。 マッピング後のクラス設計以前の問題。 んでhibrenateとか見る限り、今のところ碌なやり方は存在しない。
- 366 名前:デフォルトの名無しさん [2007/03/31(土) 13:59:48 ]
- うっせぇぞ低脳。
お前はさっさとODBMS営業逝ってこいや 負け犬が
- 367 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 14:03:10 ]
- ODBMS(w
ぷぷぷ もう10年前にたかひろの子分に 「(製造業など一部の特殊分野を除いては) 仮想記憶方式のODBMSなんてもう売れねぇよ」 って伝えたはずだけど。まだ悪あがきしてたんか。おめでてぇなw
- 368 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 14:10:47 ]
- そん時に提示した代替手段が、
・ ORマッピングによるRDBMSとの共存 ・ Stonebreaker氏のORDBMSの発展 だったな。
- 369 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 14:41:39 ]
- >>293の元設計の問題点(つづき2)
(2-1. Bridgeパターン・スパゲティ (クラスの過剰な分割によるOOモデルの崩壊)) >>293のコード(及び>>304の補足コード)は、その字面の単純さにもかかわらず、 挙動を読み取りにくく、保守性/拡張性が低い。(前提条件の変化に対し柔軟性が低い) (1)挙動を読み取りにくくなる原因: 原因(1-1) データと処理の分離記述による、カプセル化の破壊。 (2)保守性が悪い原因: 原因(2-1) カスタマイズ内容のハードコーディング。 クラス選択の変更や、クラスの新規追加の度に、コード修正が必要になる。 (2)前提条件の変化に対し柔軟性が低くなる原因: 原因(3-1) モデルの過剰な単純化により、現実世界の複雑な問題に適応できなくなる。 以下では、その原因を探る。 原因(1-1)データと処理の再分離による、カプセル化の破壊 オブジェクト指向では、データとその処理をカプセル化し、クラスを導入する事で (1)データ操作の局所性 (2)外部操作インタフェースの限定、 (3)型システムによる安全性/信頼性の向上 が可能になり、それを利用してプログラムの信頼性/可読性/保守性の向上を図れる。 しかし>>293,>>304のコードでは、 データ(Hanzai及びバリエーション)と処理方法(〜Processor)を別々のクラスに分離記述した後、 関連するデータクラスと処理クラスを適切な方法で再カプセル化しなかったため、 オブジェクト指向のメリットが得られなくなっている。(非OO的コード)
- 370 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 14:59:40 ]
- >>355、>>364、>>369
その問題点を直したスケルトンコードを頼む
- 371 名前:293 mailto:sage [2007/03/31(土) 15:13:25 ]
- >>365が僕の考えからは少し極端な意見だがいいこと言った。
まず「パターンありき」の考え方はそもそもおかしい。だから敢えてTemplateMedhodパターンに とらわれないコードを書いたんだがね。 自分のレスの後だったんでよっぽど悔しかったんだろうw。 だが少しだけ付き合ってあげようw > >>293のコードで省略されているクラス/コードを補足すると、>>304 のようになる。(※1) なりません。 > >>293は、TemplateMethodの各工程の処理詳細 (draw(),cut(),print()) を共用するために、 ・・・・ > このコード(>>293, >>304)は、その字面の単純さにもかかわらず、 > 挙動を読み取りにくく、保守性/拡張性が低い。(前提条件の変化に対し柔軟性が低い) カプセル化を否定しているように聞こえるが? そもそも鈴木君や田中君をドメインとして(まぁドメイン領域内のある部分ではあるが)時点で設計が 崩壊してるんだけどw >>278の要件を分析してみると、 1.このケースの主処理は木版が作成プロセスである。 2.鈴木君や田中君は木版画作成プロセスのバリエーションである。 この2点から、木版画作成プロセスを中心に考えて、どのように違いを吸収していくかを考えないと遺憾のとちゃうの? で、 3.木版画作成プロセスから見た場合、鈴木君や田中君(、山田君、佐藤君・・・・)の役割は、 木を塗ったり切ったり印刷したりの方法論を持っているオブジェクト。 4.鈴木君や(略)画持っている方法論は、皆違う場合もあれば同じ場合もあるから、鈴木君や田中君(ry)と独立するべき。 (そもそもの>>275の要件) となるのが自然な設計だと思うけど?
- 372 名前:365 mailto:sage [2007/03/31(土) 15:25:41 ]
- >>371
キチガイにかまわないであげてください。
- 373 名前:293 mailto:sage [2007/03/31(土) 15:34:06 ]
- >>372
むむ・・・ スレが荒れてしまいますな・・・ まぁ彼が言うクラス粒度が細かくなりすぎると見通しが悪くなるのは事実だけどね その辺の加減が難しい・・・
- 374 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 15:51:23 ]
- -- 引き続き、元質問者(>>275) の挙げた例題(>>278) を題材に、 --
-- デスマ現場で発生した問題 (>>306-307) を論じる。 --
- 375 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 15:53:01 ]
- >>293の元設計の問題点(つづき2)
(2-1. Bridgeパターン・スパゲティ (クラスの過剰な分割によるOOモデルの崩壊)) 原因(3-1)モデルや型の過度な単純化による、複雑な問題への適応能力低下。 現実の問題は、>>293のような単純な構造は持っていない。 まず、データにはバリエーションがある。 例えばデスマ事例(>>306-307)で指摘されているように、 操作対象となるオブジェクト/データ(Hanzai)は一種類ではなく、 実際には何種類ものバリエーションが存在する。(分析モデル) Hanzai <─┬ 原料Hanzai <─┬ 木版<─┬ 柔かい木版 │ │ └ 硬い木版 │ ├ ゴム版 │ ├ 芋版 │ └ 銅版 ├ 加工中Hanzai<─┬ 下絵中Hanzai │ └ 切除中Hanzai └ 完成した版画版 ※ ここでHanzaiのサブクラスは、 工程進行に伴う状態変化 (原料→下絵中→切除中→完成) と見なせる。 ただし、後工程になるほどデータの内部構造は複雑になっていく。 次に、データはしばしば単純なモノシリック構造ではなく、 複数のデータを内部構造として持つComposite構造を持つ。 完成した 版画版 ◇┬ 背景部 ◇─(略) (人物画) └人物部 ◇┬ 頭髪 ├ 顔 ◇┬ 目 │ ├ 鼻 │ └ 口 ├ 上着
- 376 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 15:59:12 ]
- 当然のように、処理もこのComposite構造の対応している必要がある。
人物画のゴム版画の為の 切除処理 ◇┬ 背景部 ◇─(略) └人物部 ◇┬ 頭髪パターン切除 ├ 顔 ◇┬ 目をリアリスティックに表現する切除 │ ├ 鼻の膨らみを表現する切除 │ └ 口の生々しさを表現する切除 ├ 毛皮パターン切除 それでは、切除工程の操作は、作成対象データ(人物画)と同じComposite構造を持ち、 素材×Compositeの要素数分必要になるのか? そんな事はない。 例えば、頭髪パターン切除と、毛皮パターン切除には同じ切除テクニックが使える。 これが現実世界の共用だ。
- 377 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 16:11:43 ]
- 御託はいらん
読む気も無い
- 378 名前:デフォルトの名無しさん [2007/03/31(土) 16:12:41 ]
- 【そして、現実の世界へ・・・】
それではここで、精神性疾患患者たかひろの設計でデスマ化した デスマ事例(>>306-307)に戻ろう。 途中から読んでいる方には何の事やらサッパリ判らないだろうから 説明を加えると。 >>293のコードは、精神性疾患患者たかひろが、その劣悪なる知能で設計し その結果デスマを巻き起こしたコードと極めて類似している。 したがって、>>293の詳細な分析は、デスマ事例コードへの解決策を与えるのである。
- 379 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 16:39:53 ]
- いまごろ解決しても、お前の頭がおかしくなったのはもとには戻らん。
あきらめろ。
- 380 名前:ワロス [2007/03/31(土) 16:46:39 ]
- 「版画の世界」から、「デスマ・システム」への概念マッピング(・∀・)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 【版画作成アプリ】 【マスタメンテ型基幹システム】 [主要ドメイン] 版画作成プロセス マスタ更新プロセス [主要データ] 下絵、原料版材 入力 (画面入力,電文入力) 完成した版画版 出力 (DB更新,電文出力,) (付帯的な画面出力) [主要プロセス]版材取得 入力取得 下絵作成 入力取得 版材の品質チェック 入力チェック 下絵と切除テクのマッチング 業務チェック 切除処理 DB参照、演算処理、DB更新 印刷処理 出力処理 (画面出力,電文出力)
- 381 名前:デフォルトの名無しさん [2007/03/31(土) 16:49:08 ]
- 【たかひろと2ちゃんの不思議な関係】
・たかひろがかつて在籍していた会社は全て、たかひろが去った直後に 2ちゃんでしつこく攻撃される。 ・たかひろの元仕事相手、脳内ライバル、 その他たかひろが自分にとって脅威だと感じる対象は、 2ちゃんのあちこちのスレに中傷文が書かれる。 ・たかひろが出没するスレには ← いまココ (・∀・)>>358, >>371, >>379 常に「キチガイ」「発狂」を連発する荒しが発生する。 ・2ちゃんに居る頭も性格も悪い粘着に 噛んで含めるように高度な概念を教えてやると、 いつの間にかたかひろ本人も同じ意見を主張するようになるw ・たかひろは論破されていても、それに気付かないフリをして勝利宣言をする。 ・たかひろは論破されると、他のスレで暴れる。 ・たかひろは成りすまし/匿名発言をよくするが、それが見破られると 「あれは自分に悪意を持っている一味の仕業だ」と苦しい言い訳をする。 さ〜て、まだ荒しを続けるつもりかな?
- 382 名前:デフォルトの名無しさん [2007/03/31(土) 16:51:04 ]
- またたかひろが暴れてるな
そう。お前自身の信仰は誰も問題にしていない。 例え神の存在を否定する信仰だろうと、 ここ日本では誰もメクジラなど立てない。 お前が問題なのは、 お前がお前自身の信仰を大切にしているのと同様に、 他人も自身の信念や大切なものを抱えながら生きている という事を理解せずに、 ・他人の信念を批判しまくったり、 ・自分勝手で不合理な自己主張をおしつけたり、はたまた 匿名で 他人の名前を挙げて 執拗な人格批判/いやがらせを繰り返している という事実にある。 お前と正式に顔を合わせて以来もう数年経つが ある日突然ネット上で名前を挙げて非難が開始され俺はとまどった。 俺は匿名で非難を浴びるような生き方は、これまで一切していない。 なのに、お前に会ってしばらくしてから突然攻撃が始まった。 最初はお前の周辺に異常者が居て、俺を攻撃してるのかと思った。 ・・・でも結局お前がその異常者本人だと気付いた。 お前しか知りえない情報、お前しか感じ得ない感情で キチガイじみた様相で攻撃してくる奴は、お前しかいないって。 悔い改めよ。そしてお前が迷惑をかけた人、一人一人に許しを乞え。
- 383 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 17:00:02 ]
- 荒しはスルーするとして。
>>380 その概念マッピングは、>>375-376 と多少ズレている。 マスタメンテ型システムってのは、 システム開発の都合で業務処理を極端なまでに単純化して、 業務処理アプリ=DBテーブル編集アプリ と見なすもんだ。 すると主要ドメインはあくまで業務処理プロセスであって、 マスタ更新プロセスではない。
- 384 名前:デフォルトの名無しさん [2007/03/31(土) 17:08:41 ]
- >>379
たかひろ、お前が壊れているのは最初から知っている。 お前が壊れた設計をしていたのにも、1週間と待たずに気付いた。 当然の事ながら、問題の解決策もすぐに判った。 ただ、お前がお前自身の精神状態の異常さに気がつかずに、 多くの人々に多大な迷惑をかけ続けた経緯には、 さすがの俺も心が痛んだ。 だから、あえてお前の古傷を持ち出し、 お前の行動を是正しようとしているんだ。 謙虚になれ、たかひろ。 お前はお前が思っているのの1/100も有能ではない。 単なる空っぽの本棚だ。お前の頭は
- 385 名前:375 mailto:sage [2007/03/31(土) 17:16:39 ]
- >>375の分析モデルがズレたので、再投稿
------------------------------------------------------------ 【版材の分析モデル】 Hanzai <─┬ 原料Hanzai <─┬ 木版<─┬ 柔かい木版 │ │ └ 硬い木版 │ ├ ゴム版 │ ├ 芋版 │ └ 銅版 ├ 加工中Hanzai<─┬ 下絵中Hanzai │ └ 切除中Hanzai └ 完成した版画版 ------------------------------------------------------------
- 386 名前:375 mailto:sage [2007/03/31(土) 17:17:57 ]
- あれ?まだずれてる。
>>375の分析モデル図差し替え ------------------------------------------------------------ 【版材の分析モデル】 Hanzai <─┬ 原料Hanzai <─┬ 木版<─┬ 柔かい木版 │ │ └ 硬い木版 │ ├ ゴム版 │ ├ 芋版 │ └ 銅版 ├ 加工中Hanzai<─┬ 下絵中Hanzai │ └ 切除中Hanzai └ 完成した版画版 ------------------------------------------------------------
- 387 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 17:53:08 ]
- >>383
「マスタメンテ型アプリ」設計が導入されたのは、 今回ではなく、何世代も前の電算機導入の頃の話だろう。 それ以来業務処理は「マスタメンテ型アプリ」に合わせて変形し成長した。 だから今さら「マスタメンテ型アプリ」抜きの業務処理プロセスなど 存在しない。 業務処理プロセス(の一部) ∝ マスタメンテ型アプリのプロセス としても大きな咀嚼はないだろう。 もし、新システム提案の初期に業務分析の専門家が入り、 提案を新しい業務プロセス設計の形で詳細に残していたら・・・ そこから正確なドメイン・モデルを作成できるのかもしれない。 だが今時の新システム構築なんて、大抵中身はマイグレーション。 COBOLプログラマがプログラムの動きを日本語で説明して「設計書でござい」 なんて言い出すおバカな世界だからなぁ・・・
- 388 名前:デフォルトの名無しさん [2007/03/31(土) 17:54:57 ]
- >>365
さて、そろそろORマッピングスレを爆撃に行くかw
- 389 名前:369 [2007/03/31(土) 19:59:13 ]
- バカの相手をするのはつもりは一切ないが、
バカの勘違い/妄言を見て、他の人が間違った理解をするとよろしくないので 簡単に>>371 の間違いを指摘をしておく。 なおここで>>371とは、元レス>>369に対するバカの妄想であり、 ここでは引用符> を先頭に付けて示してある。 A.> >>365が僕の考えからは少し極端な意見だがいいこと言った。 ORマッピングの話は、>>275の前提条件のスコープ外。 議論に直接関係ない話を持ち込んで、議論を撹乱するのは 詐欺師の常套手段なので、みなさん気を付けるように。 また、もしORマッピングに興味を持った人が居たら、 まずはデータベース板の該当スレを参照すると良い。 B.> > >>293のコードで省略されているクラス/コードを補足すると、>>304 のようになる。(※1) > なりません。 これは自分で補足コードを書いて見れば簡単に確認できる。 結果は>>304 のようなコードになるはずだ。 (但し>>364に説明してあるように、等価コード部 //{〜}// 内は >>364※1と読み替える) 確認作業はコーディング能力のある人にしか実行できないが、 それは致し方ない所だろう。
- 390 名前:369 (>>389つづき) [2007/03/31(土) 19:59:56 ]
- バカの相手をするのはつもりは一切ないが、
バカの勘違い/妄言を見て、他の人が間違った理解をするとよろしくないので 簡単に>>371 の間違いを指摘をしておく。 なおここで>>371とは、元レス>>369に対するバカの妄想であり、 ここでは引用符> を先頭に付けて示してある。 C.> > このコード(>>293, >>304)は、その字面の単純さにもかかわらず、 > > 挙動を読み取りにくく、保守性/拡張性が低い。(前提条件の変化に対し柔軟性が低い) > カプセル化を否定しているように聞こえるが? はい、みなさん注目!!! これが典型的な詐欺師の手口です。騙されないように。 元レス>>369は >>293-294のカプセル化破綻問題を指摘している。 自分の問題点を指摘された >>293は、逆上して事実と反対の事を言い出している。 1.システムの全体像が見えていない以上、 処理の動作主体をモデル化しておく必要がある。 ここで動作主体とは、「鈴木君」や「田中君」である。 2.動作主体が「鈴木君」や「田中君」であり、 プロセスは >>293の最初のクラス=WoodCutPrintProcessクラスである。
- 391 名前:369 (>>389つづき) [2007/03/31(土) 20:05:01 ]
- バカの相手をするのはつもりは一切ないが、
バカの勘違い/妄言を見て、他の人が間違った理解をするとよろしくないので 簡単に>>371 の間違いを指摘をしておく。 なおここで>>371とは、元レス>>369に対するバカの妄想であり、 ここでは引用符> を先頭に付けて示してある。 1.> このケースの主処理は木版が作成プロセスである。 このケースでは、システムの全体像が見えていない以上、 処理の動作主体をモデル化しておく必要がある。 ここで動作主体とは、「鈴木君」や「田中君」である。 2.> 鈴木君や田中君は木版画作成プロセスのバリエーションである。 前述のように、動作主体が「鈴木君」や「田中君」であり、 プロセスは >>293の最初のクラス=WoodCutPrintContextクラスである。 (なおこのクラスの名称 "WoodCutPrintContext"は、内容を適切に表していない。 正しくは、"WoodCutPrintProcess"と命名するべきである。根拠は>>297 参照)
- 392 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 20:06:02 ]
- たかひろがバカなのは判ったから
とにかく sageを覚えろ
- 393 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 20:18:05 ]
- あらあら、よく見たらアイツ
またまた敗走宣言してるやん >>379 ワロス
- 394 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 20:19:51 ]
- >>380
GJ! 「版画作成プロセス」と「マスタメンテ・プロセス」は所詮は別物、 もともと厳密に1対1に対応するものではない。 そこで>>380の齟齬の悪そうな部分を若干修正してみた。 大きな変更点は「版画作成プロセス」でなく「版画版作成プロセス」とした点。 ---------------------------------------------------------------------- 「版画の世界」から、「デスマ・システム」への概念マッピング part2  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 【版画版作成アプリ】 【マスタメンテ型基幹システム】 [主要ドメイン] 版画版作成プロセス マスタメンテ・プロセス [主要データ] 版材原料 入力 (画面入力データ) 下絵 DB参照データ 加工中の版画版 完成状態の版画版 出力 (DB更新データ) 刷り上がった版画 表示 (画面表示データ) [主要プロセス] 版材原料取得 入力取得 版材作成 入力チェック 下絵取得&下絵処理 業務チェック, DB参照 切除処理 演算処理, DB更新 印刷処理 画面表示 ---------------------------------------------------------------------- 修正結果を見ると、両者の対応関係はそんなには悪くない。 むしろ、別物にしてはずいぶん良い対応関係を持っている、と言える。
- 395 名前:394 AAズレ修正 mailto:sage [2007/03/31(土) 20:35:49 ]
- ----------------------------------------------------------------------
「版画の世界」から、「デスマ・システム」への概念マッピング ver.2  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 【版画版作成アプリ】 【マスタメンテ型基幹システム】 [主要ドメイン] 版画版作成プロセス マスタメンテ・プロセス [主要データ] 版材原料 入力 (画面入力データ) 下絵 DB参照データ 加工中の版画版 完成状態の版画版 出力 (DB更新データ) 刷り上がった版画 表示 (画面表示データ) [主要プロセス]版材原料取得 入力取得 版材作成 入力チェック 下絵取得&下絵処理 業務チェック, DB参照 切除処理 演算処理, DB更新 印刷処理 画面表示 ----------------------------------------------------------------------
- 396 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 02:18:44 ]
- ある意味すごいなw
未だにコードが出てこないし解釈間違ってるけど、このエネルギーはスゴイ。 便所の100wと比喩してはいけないw
- 397 名前:396 mailto:sage [2007/04/01(日) 05:00:48 ]
- スマソ 誤爆した
- 398 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 07:01:05 ]
- まあまあ
元々の質問はもうとっくにクローズしてるし、 >>293はjavaとよく似た擬似コードで記述されたクラス設計に過ぎんから、 代替コードを示す必要もない。 現在議論されているのは、>>293の背景にある設計理念の問題、 そして、それに類する設計を現実に適用した時のギャップね解決方法だろ。 理解できないなら結論が出るまで静観するがよろし
- 399 名前:デフォルトの名無しさん [2007/04/01(日) 08:41:27 ]
- このスレ、爆発力はあるな
問題は火のつけ方
- 400 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 09:44:28 ]
- >>397
ナニコレww 勝手に誤爆にするなよwww >>397-398 おまいウザイから別にスレ立て手やれよ
- 401 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 09:52:28 ]
- あとそんなに自分の主張に自信があるなら
コテつけてレスしろ
- 402 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 10:38:41 ]
- >>400-401 またスレ荒しか
|

|