〔隔離〕デザインパターンは本当に必要か?〔スレ〕
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/06/21(火) 19:09:560052デフォルトの名無しさん
2005/06/22(水) 01:37:11変更に対して強い設計を可能にするデザインパターンもあるんだがそれは無視?
まぁ・・・あれだ。
完璧な設計などまずありえないし、お尻がキッチリ決まってる仕事の場合は
設計にそれほど時間をかけられないし、深くは追求するつもりはないけど。
# 書いているうちに余計なおせっかいな気がしてきた
005349 一部訂正。結局駄文だけど本質は突いているつもり
2005/06/22(水) 01:39:231.対象物の構造をそのまま、オブジェクト指向言語で完全に表現する事はできない。
オブジェクト指向では不完全な表現しか得られない事象の例:
多重継承、
時間的な状態変化、
etc.
一般的に、不充分な表現しか得られない事象の例:
非常に複雑な対象物/概念
計算不可能な対象物/概念、
記述不可能な対象物/概念
etc.
もしあらゆる事柄を表現し自動的にシミュレーションできる方法があるならば、
大半の科学者は仕事をする必要がなくなる。
(例:宇宙誕生をオブジェクト指向言語でそのまま表現可能なら、宇宙論は不要になる)
2. オブジェクト指向に限らず、モデリングとシミュレーション、そして科学の肝は、
対象物をそのまま記述するのではなく、
特徴を捉えて、扱いやすい簡易的な表現を得て、その表現を操作する事である。
要するに、抽象化と記号的処理こそが、知性の最も重要な働きなのである。
抽象化を行わないオブジェクト指向プログラミングがあるとすれば、
それはせいぜいコンピュータ上のソフトウェアの「移植」とか「エミュレーション」程度の仕事に過ぎない。
3. このような、対象物の構造と、ソフトウェア上の表現(ここではオブジェクト指向モデル/プログラム)
の間にある差異を、何らかの形で縮めて、実用上問題がないように取り繕う技術が、
モデリング/設計/プログラミングの中心的な作業であり、
そのためのノウハウや経験則は、ソフトウェア・パターンとかプログラミング・スタイルとかイディオムと呼ばれている。
0054デフォルトの名無しさん
2005/06/22(水) 01:40:03なんすか?
質問があるなら簡潔明瞭に済ませてね。
長々と議論する時間はもうないんで。
0055デフォルトの名無しさん
2005/06/22(水) 01:41:190056デフォルトの名無しさん
2005/06/22(水) 01:41:40この人はビジネスロジックとデータモデルの設計はできるが、それだけ。
プレゼンテーション層、EIS層の設計と実装はムリだね。
定石とかフレームワークという概念が皆無。
0057エリート研究開発すぁ
2005/06/22(水) 01:45:551996-1997当時にほぼ独力 (ただし関連文献や技術書、GoF、各種MLをROM捲り)
で作れたけどね。
0058デフォルトの名無しさん
2005/06/22(水) 01:46:59どんなアプリでもほぼこれでOKなのに、それでも毎回オレ様オリジナル設計するの?
無駄な努力にしか思えない。
http://java.sun.com/developer/technicalArticles/J2EE/patterns/J2EEPatternLanguage.gif
0059エリート研究開発すぁ
2005/06/22(水) 01:48:00しがらみがほとんどないから、
フルスクラッチで大建築を作りやすかったんだけど、
もうあれから10年近く立ってるからなぁ。しがらみ過ぎてて最近始めた人は大変だなぁと思う
0060デフォルトの名無しさん
2005/06/22(水) 01:48:52作れるかどうかじゃなくて、これらの手法をパターン化していつも使うかどうか。
オブジェクト指向厨はそうはしないで、毎回毎回アタマをひねるらしいよ。
0061エリート研究開発すぁ
2005/06/22(水) 01:52:57歴史的経緯を見てきた漏れの意見を言うと、
J2EE Blueprint / J2EE Patternってイマドキ神格化されすぎてると思う。
リアルタイムでは、IBM BestPracticeやNetscape, WebLogicの方が
よっぽど進んでいたと思うよ。
更にマズイのは、J2EE反主流派のOracleなんて、
J2EE Pattern織り込み済みでもう必要としないDB用フレームワークを使っている事。
そんな環境でも、木偶の坊みたいな人がJ2EE Patternを無理やり適用しようとする。
こういう奴を見ちゃうと、Pattern言語/Pattern推進派の努力にも限界があるのだと実感する。
0062デフォルトの名無しさん
2005/06/22(水) 01:54:20つーか、webアプリ組んだことないから知らないけど
同じものなら使いまわせばいいでしょ?
どうしてパターン使ってまで組み直すの?
オブジェクト指向=毎回作り直す
とかかってに捻じ曲げて無い?
そんなことはいってないよ。
0064デフォルトの名無しさん
2005/06/22(水) 01:57:49貴方の主張は、設計を使いまわすのではなく、実装を使いまわすって話ね。
SI屋がやりそうな手口だ。
ところでここの住人は何時まで起きてるの?
明日も仕事だよね?
0065デフォルトの名無しさん
2005/06/22(水) 02:03:590066デフォルトの名無しさん
2005/06/22(水) 02:05:19よく使われる組み方をカタログ化しておいて、使い回すのがデザインパターンなんだけど。
0067デフォルトの名無しさん
2005/06/22(水) 02:07:26ん?毎回パターン使って組まなきゃならないものなのか?
って聞いてるんだけど?
要はソースレベルでの使いまわしは効かないの?
って話ね。
0068デフォルトの名無しさん
2005/06/22(水) 02:12:49もちろんフレームワークやライブラリは最大限利用するよ。
0069デフォルトの名無しさん
2005/06/22(水) 02:14:43いやいや、ソースレベルでの使い回しができるかできないかの話。
0070デフォルトの名無しさん
2005/06/22(水) 02:14:530071デフォルトの名無しさん
2005/06/22(水) 02:22:34使い回せるモノなんてほとんど無いんだけど。
各システム固有の要件に応じた処理とか画面と設定ファイルしか作らないので。
0072デフォルトの名無しさん
2005/06/22(水) 02:24:55おまえジェネリックプログラミングとかテンプレートって知らないのか?
0073デフォルトの名無しさん
2005/06/22(水) 02:32:59そっちのが望ましいのは確かだよな。Modern C++ Designの例のように。
ただし、デザパタ自体の存在価値がそれで無くなるわけではない。
あれは、プログラマ間の共通言語、意思疎通の道具としての存在価値が
もっとも大きいのだと思う。
パターン化されたデザインは、for (i = 0; i < 10; ++i);
のようなパターン化されたループのように、認識・理解しやすいし。
0074デフォルトの名無しさん
2005/06/22(水) 02:35:44あいやー。
再利用なんて無理にしないほうがいいと思うぞ。
できたらラッキーぐらいにしとけ。
0075デフォルトの名無しさん
2005/06/22(水) 02:40:47おまえ、STL(スタンダード・テンプレート・ライブラリ)って知らないのか?
0076デフォルトの名無しさん
2005/06/22(水) 02:43:15>そっちのが望ましいのは確かだよな。
ん?できるじゃん。なんでできないと思っているの?
0077デフォルトの名無しさん
2005/06/22(水) 02:44:310078デフォルトの名無しさん
2005/06/22(水) 02:51:35近いのはあるがあれはコレクションを使いやすくする程度の使い道しかない
0079デフォルトの名無しさん
2005/06/22(水) 02:51:40君らは概念がごちゃごちゃになってる。
多重継承を使うなよ。ってのもデザインパターンの一種なんだよね。
べからず集なので、アンチパターンとも呼ぶが。
でだ、デザインパターンって本を読むと、全体にトリッキーだったり、
(そうなってしまう前に設計で回避しろよーてな場合が多い)
Tipsレベルが多いんだ、の割には宣伝文句が大げさだから、
喧嘩になってる。さらに日本では訳や書籍が訳分からん言葉を
積極的に使うから更に悲惨な事態になってる。
「デザインパターン」と言う概念は否定しようも無い、だって既に
この世の中に有る物に名前を付けただけなんだから。
で、デザインパターンを批判してる者の言い分を聞くと、提出
されたパターンが汚いって話で、これはその通りだと思うし、
デザインパターンに、(デザイン)なんて言葉付いてるのが
日本人感覚だと惑わされるんだよね。
今のデザインパターンってのは、どう読んでもレスキューパターン
と言う名前の方がふさわしい。
0080デフォルトの名無しさん
2005/06/22(水) 03:06:05そんな上等なレベルじゃないよ。知りもしないくせに「パターン」で反応しているだけ。
標準ライブラリは当たり前に使っている癖に、なぜかメタレベルのライブラリだと拒否反応を起こす。
0081デフォルトの名無しさん
2005/06/22(水) 03:08:280082デフォルトの名無しさん
2005/06/22(水) 03:08:480083デフォルトの名無しさん
2005/06/22(水) 03:09:25"メタ"ライブラリと言えるだろ
0084デフォルトの名無しさん
2005/06/22(水) 04:06:020085デフォルトの名無しさん
2005/06/22(水) 09:47:37>「デザインパターン」と言う概念は否定しようも無い、だって既に
>この世の中に有る物に名前を付けただけなんだから。
この世の中にあるもの。
であるはずなのに、なぜ名前をつけてはいけないのですか?
ドラえもんという存在がいて、名前がなかったらなんて呼べばいいのか。助けてドラえも〜ん。
0086デフォルトの名無しさん
2005/06/22(水) 11:26:50日本人の英語力のなさまで面倒みきれない
0087デフォルトの名無しさん
2005/06/22(水) 14:31:370088デフォルトの名無しさん
2005/06/22(水) 14:36:45>要はソースレベルでの使いまわし
なんだ、プログラミングパターンは使ってるじゃん。
それの抽象度を上げたのがデザインパターン。
使いまわすときに、多少変更して使った事ないか?
0089デフォルトの名無しさん
2005/06/22(水) 15:49:13デザインパターンなんてものは、口出しできないけど口出したいって思ってる
バカがひたすら持ち上げてるだけ。
0090デフォルトの名無しさん
2005/06/22(水) 16:07:46てかゴミパターンも有るってことで。
SINGLETONパターンなんか、本当にゴミだと思うし。
0091デフォルトの名無しさん
2005/06/22(水) 16:09:30クライアントやスタンドアロンしかやったことない奴はそう思うのだろう。
サーバサイドでは普通に使うけどね。
0092デフォルトの名無しさん
2005/06/22(水) 16:13:54SINGLETONは普通に使うよ。GoF本の言うSINGLETONパターンを
ゴミと言ってるだけ。
0093デフォルトの名無しさん
2005/06/22(水) 16:25:38それには同意。俺はDIコンテナにSingletonインスタンスの管理をさせてるから
ああいうコーディングはしない。
0094デフォルトの名無しさん
2005/06/22(水) 16:34:47だよねー。
あのコーディングのどこにメリットが有るのか小一時間といつめたくなる。
0095デフォルトの名無しさん
2005/06/22(水) 16:49:560096デフォルトの名無しさん
2005/06/22(水) 17:00:10うんだ。てか、SINGLETONパターンには、初期化されてないインスタンスを
呼ぶ危険性まであって、アンチパターンの方が似合てると思うんだ。
0097デフォルトの名無しさん
2005/06/22(水) 17:01:060098デフォルトの名無しさん
2005/06/22(水) 17:05:01それはバグだろ
0099デフォルトの名無しさん
2005/06/22(水) 17:11:27ゴミデータになるらしい。あとSMP環境だともっとややこしい事になるそうな。
0100デフォルトの名無しさん
2005/06/22(水) 17:13:04それってC++の話?
0101デフォルトの名無しさん
2005/06/22(水) 17:14:200102デフォルトの名無しさん
2005/06/22(水) 17:16:550103デフォルトの名無しさん
2005/06/22(水) 17:19:220104デフォルトの名無しさん
2005/06/22(水) 18:22:05記事を見た記憶がありんす。
0105デフォルトの名無しさん
2005/06/22(水) 18:46:44GoF では環境に依存しないよう、あえて実装してないが
MT safe にするためには当然、排他制御しなきゃならん。
んなこたあパターンに限った話じゃない。
0106デフォルトの名無しさん
2005/06/22(水) 18:47:31きっと何処かで初期化されてるオブジェクトを、2度目の
生成するリスクをさけるにしては、リスクの方が大きい
と思うんだね。
デザインパターンてな考えかたは、認めるし、効果あると
思うけど、GoFにカタログ作らせるのは、不味いと思うよ。
全体にトリッキーなんだよ、奴らのカタログは。
0107デフォルトの名無しさん
2005/06/22(水) 18:52:01どのへんがトリッキーなのか具体的に解説きぼんぬ
0108デフォルトの名無しさん
2005/06/22(水) 18:59:33隔離スレなんだから、反証責任はデザパタのカタログを信じてる馬鹿の
方に有る.
0109デフォルトの名無しさん
2005/06/22(水) 19:00:24教えてあげないよっ、じゃん♪
0110デフォルトの名無しさん
2005/06/22(水) 19:21:520111デフォルトの名無しさん
2005/06/22(水) 19:33:04ModernC++Designにある安全で速いダブルロックチェックドなシングルトンさえも
いまは安全でなく、ReadMemoryBarrier()とWriteMemoryBarrier()を
つかってない時勢にそぐわないものになってるというおはなし。
0112デフォルトの名無しさん
2005/06/22(水) 19:36:18アレつかって切り離すというのが、ここ2〜3年の潮流
0113デフォルトの名無しさん
2005/06/22(水) 19:58:560114デフォルトの名無しさん
2005/06/22(水) 20:06:070115デフォルトの名無しさん
2005/06/22(水) 20:14:54寧ろ発言者の存在自体がトリッキー
0116デフォルトの名無しさん
2005/06/22(水) 20:38:450117デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
2005/06/22(水) 21:05:000119デフォルトの名無しさん
2005/06/22(水) 21:11:00まぁ、お前らはゆっくりトロッキー辺りを目指せってことだな。
0120デフォルトの名無しさん
2005/06/22(水) 21:11:080121デフォルトの名無しさん
2005/06/22(水) 21:28:480122デフォルトの名無しさん
2005/06/22(水) 21:37:08>>25の方法って普通のオブジェクト指向でしょ
デザパタ使ってる人ってこれのどの課程でデザパタを使うの?
0123デフォルトの名無しさん
2005/06/22(水) 21:39:05>>25への反論
1.対象物の構造をそのまま、オブジェクト指向言語で完全に表現する事はできない。
オブジェクト指向では不完全な表現しか得られない事象の例:
多重継承、
時間的な状態変化、
etc.
一般的に、不充分な表現しか得られない事象の例:
非常に複雑な対象物/概念
計算不可能な対象物/概念、
記述不可能な対象物/概念
etc.
もしあらゆる事柄を表現し自動的にシミュレーションできる方法があるならば、
大半の科学者は仕事をする必要がなくなる。
(例:宇宙誕生をオブジェクト指向言語でそのまま表現可能なら、宇宙論は不要になる)
2. オブジェクト指向に限らず、モデリングとシミュレーション、そして科学の肝は、
対象物をそのまま記述するのではなく、
特徴を捉えて、扱いやすい簡易的な表現を得て、その表現を操作する事である。
要するに、抽象化と記号的処理こそが、知性の最も重要な働きなのである。
抽象化を行わないオブジェクト指向プログラミングがあるとすれば、
それはせいぜいコンピュータ上のソフトウェアの「移植」とか「エミュレーション」程度の仕事に過ぎない。
3. このような、対象物の構造と、ソフトウェア上の表現(ここではオブジェクト指向モデル/プログラム)
の間にある差異を、何らかの形で縮めて、実用上問題がないように取り繕う技術が、
モデリング/設計/プログラミングの中心的な作業であり、
そのためのノウハウや経験則は、ソフトウェア・パターンとかプログラミング・スタイルとかイディオムと呼ばれている。
0124デフォルトの名無しさん
2005/06/22(水) 21:47:36「対象物の構造を〜」ってことを 25 は言っているけど、その切り出し方は無数にある
(例えばオセロで審判を導入するとかしないとか。審判を導入すると双方の不正を一元監視できたり)
んで、その切り出し方の一例としてデザパタを応用するというふうに俺は使っている
(デザパタは直接使用せず、応用として。改変なしでは絶対に組み込めないし、組み込みたくない)
0125デフォルトの名無しさん
2005/06/22(水) 21:48:36それはネタでしょ。
0126124
2005/06/22(水) 21:49:180127デフォルトの名無しさん
2005/06/22(水) 21:49:43上の方でどうぞ
0128デフォルトの名無しさん
2005/06/22(水) 21:50:320129デフォルトの名無しさん
2005/06/22(水) 21:50:38具体的にどうやって使うの?
パターンに当てはめる方法でいいの?
0130124
2005/06/22(水) 21:55:55当てはめはしない
俺が考えた構造と、デザパタで提示されている構造が一致したら 「お?このまま行っても平気か?」 って思ってる
ついでに、提示された構造を参考に、幾らか修正を入れる
要は、どんな下らない物でも良いから、自分の考えを支持してくれる物があれば良いんだな俺の場合
0131デフォルトの名無しさん
NGNGデザインパターンの本来の目的からは外れてる気がするが(゚ε゚)キニシナイ
0132デフォルトの名無しさん
2005/06/22(水) 22:08:06何処に石を置けるのか知らなければ、審判はジャッジできない。
何処に石を置けるのか知らなければ、CPプレーヤーは戦略を立てられない。
石を置くとボードがどう変化するのかを知らなければ、審判はジャッジできない。
石を置くとボードがどう変化するのかを知らなければ、CPプレーヤーは戦略を立てられない。
さて、どうしましょう?と、>>124に話を振るのは筋違いだな。
さて、どうしましょう?
対象物の構造をそのままクラスとして反映させるのがオブジェクト指向と主張してた貴方!
上記の主張を前提に、クラス設計してみてちょいよ。
0133124
2005/06/22(水) 22:18:31いや、だから、対象物の切り出し方は無数にあるって例を出しただけで……
(審判は思いつき。妥当かどうかは考えてない。ちなみに、俺は大抵ボードが制約を持つように組んでる)
答えは無数にある。どれも正解かもしれないし、どれも不正解かもしれない。
0134デフォルトの名無しさん
2005/06/22(水) 22:18:42どうせ修正するなら、当てはめたほうが早いのではないでしょうか?
0135124
2005/06/22(水) 22:22:23正直速くない。部分的に一致させる事もあるけど、
サンプルで提示されている構造の使用価値はサンプルで提示されている程度のレベルでしかないと思っているし
ガチガチに当てはめると融通が利かない。妥協が必要
0136デフォルトの名無しさん
2005/06/22(水) 22:24:58「ほら、あの処理あるじゃん。インスタンスをいっこに限定する方法」
「あぁ、以前のシステムでも使っていたあれですね。あの方法で組めばいいんですね」
というまどろっこしい会話を
「それsingletonね」
「はい」
というシンプルな会話にするためにあるのよ
0137デフォルトの名無しさん
2005/06/22(水) 22:28:07「ほら、あの処理あるじゃん。インスタンスをいっこに限定する方法」
「あぁ、以前のシステムでも使っていた Singleton ですね。あの方法で組めばいいんですね」
0138デフォルトの名無しさん
2005/06/22(水) 22:41:431人のときは、全く役に立たないのでしょうか?
0139デフォルトの名無しさん
2005/06/22(水) 22:57:29かつて2ちゃんの粘着くんの議論を終結させるために、
そーゆー一見もっともそうな説明をした事がある。
で、同じ話を何回書き込んだら気が済むの?
0140デフォルトの名無しさん
2005/06/22(水) 23:00:09オブジェクト指向だの設計だのって、結局は具体的な事が言えない
から逃げる為の口上に使ってるだけじゃん。
0141デフォルトの名無しさん
2005/06/22(水) 23:09:37この人のあいかわらずソースを求める姿勢はどうにかならないものだろうかw
0142デフォルトの名無しさん
2005/06/22(水) 23:09:55煽り好きの>>140みたいなのは、リアルには付き合いたくない。
0143デフォルトの名無しさん
2005/06/22(水) 23:12:270144デフォルトの名無しさん
2005/06/22(水) 23:13:58具体的な何かでいい。とりあえず、上で出てるクラス設計なんてどう?
てか、言い訳多すぎ。
0145デフォルトの名無しさん
2005/06/22(水) 23:33:130146デフォルトの名無しさん
2005/06/22(水) 23:36:38俺はこの件に関して傍観者だが、
>>132の問題設定が問題の体を為していないのと、
せっかく>>123に挙げた矛盾点を取り込んでいないあたりに、
そこはかとなく素人臭さを感じた
0147デフォルトの名無しさん
2005/06/22(水) 23:38:51俺もこの件に関して傍観者だが、
具体性がないところにいつものアンチ臭さを感じた
0148デフォルトの名無しさん
2005/06/22(水) 23:55:48このままだとアンチの自作自演と疑われて縞馬
0149デフォルトの名無しさん
2005/06/23(木) 00:01:13Q1.オセロを構成するのに必要なクラスを列挙せよ。
Q2.Q1で列挙した各クラスの役割について簡素に説明せよ。
Q3.Q1で列挙した各クラス間の関係(接続)について簡素に説明せよ。
0150デフォルトの名無しさん
2005/06/23(木) 00:04:29>>111が例示してくれたように、デザインパターンのGoFカタログは
致命的なんだよ。
「SINGLETONパターンで、」と会話が成立してる*つもり*になって
いて、片方は、スレッーフなカスタマイズSINGLETONを話し、
片方は、GoFベースのSINGLETONで話てたらOUTなんだから。
GoFのカタログを、バイブルのように使うのは、危険なんだよ。
使い方としては、アルゴリズム集みたいなイメージで使うべき
なんだよ。
0151いつものアンチ
2005/06/23(木) 00:06:37>>123は何がいいたいのかわからない。
>1.対象物の構造をそのまま、オブジェクト指向言語で完全に表現する事はできない。
の理由が
>オブジェクト指向では不完全な表現しか得られない事象の例:
> 〜略〜
> (例:宇宙誕生をオブジェクト指向言語でそのまま表現可能なら、宇宙論は不要になる)
なんだろうけど。
これは一体何がいいたいのかわからない。
とりあえず、手当たり次第レスつけると。
>オブジェクト指向では不完全な表現しか得られない事象の例
って書いてあるけど。
なんでここで「多重継承」なの?(このへんでもう相手にしなくていいかなーって思った)
多重継承を表現するって聞いた事ないんだけど。説明キボン。
んで次に書いてあるのが「時間的な状態変化」だけど。
なにこれ?意味がわからない。何がいいたいの?説明キボン。
で
>一般的に、不充分な表現しか得られない事象の例:
って書いてあるけど。
>非常に複雑な対象物/概念
どこまで複雑なのかは知らんけど根気よくやればできるんじゃない?
これはオブジェクト指向に限って表現できないものなのかなー。
>計算不可能な対象物/概念、
>記述不可能な対象物/概念
って書いてあるけど意味不明説明キボン。
ここでは1だけをとりあげたけど2と3なんて宇宙人の文でも読んでるのかと思った。ので意味不明。レス不能。
■ このスレッドは過去ログ倉庫に格納されています