〔隔離〕デザインパターンは本当に必要か?〔スレ〕
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/06/21(火) 19:09:560002デフォルトの名無しさん
2005/06/21(火) 19:13:40乙
確かにデザパタそのものについての話が全然無かったしな最近。
0003デフォルトの名無しさん
2005/06/21(火) 19:15:53ここは隔離スレなんで建設的な話は期待しないほうがいいですよ
0004デフォルトの名無しさん
2005/06/21(火) 19:41:13デザパタがいいって人はとりあえずオブジェクト指向理解してる(つもり)なの?
0005デフォルトの名無しさん
2005/06/21(火) 19:48:220006デフォルトの名無しさん
2005/06/21(火) 19:48:58C++
0007デフォルトの名無しさん
2005/06/21(火) 20:02:16いや、ネタはいいから(笑)
0008デフォルトの名無しさん
2005/06/21(火) 20:04:12なんて答えて欲しかったんだ?
デザパタなんて使ってるぐらいだから、
一度もC++でオブジェクト指向で設計して組んでみたことなんでしょ?
0009デフォルトの名無しさん
2005/06/21(火) 20:13:32MFCやWTLはチェーンやらデコレータやらがとっちらかってて、
どうしてもキショイコードになる。
0010デフォルトの名無しさん
2005/06/21(火) 20:32:56MSのデザパタはC#とか見てあげてください。
0011デフォルトの名無しさん
2005/06/21(火) 20:46:31まさかネタじゃなかったのか?
デザパタを否定するくらいstrictなOO人間がよりにもよってC++を肯定するなんて信じられないんだが。
0012デフォルトの名無しさん
2005/06/21(火) 21:00:08読めないから恨み節でデザパタ否定してただけでしょ?
いくら否定してもテンプレートがなくなる事はないのに、無駄
足掻きだな。
0013デフォルトの名無しさん
2005/06/21(火) 21:17:22OOPLがC++しかない時期があったのだ
0014デフォルトの名無しさん
2005/06/21(火) 21:20:390015デフォルトの名無しさん
2005/06/21(火) 21:24:53今はいろいろあるじゃん、なんで昔の話?
0016デフォルトの名無しさん
2005/06/21(火) 21:43:58デザインパターンを否定していないやつはオブジェクト指向を理解していないとか、
ほんとうにオブジェクト指向で設計するとデザインパターンなんて使わないとか
いうようなことを言っていたけど、おまいのオブジェクト指向論を講師してくれんかな?
オセロプログラムでもいいから具体例だしてさ。
0017デフォルトの名無しさん
2005/06/21(火) 21:46:52えー。向こうで死ぬほど書いたじゃん。
あと、設計の話だよー。
具体例なんてでねぇぞー。
ソースコード期待してるなら帰った方がいいぞ。
0018デフォルトの名無しさん
2005/06/21(火) 21:48:08聞くポイントがまじぃんだよ。
ソースが欲しいわけじゃなくて、要は開発の流れみたいのが知りたいだけじゃねーの?
0019デフォルトの名無しさん
2005/06/21(火) 22:06:16ならリンク張ってよ、それくらいできるでしょ?
>あと、設計の話だよー。
>ソースコード期待してるなら帰った方がいいぞ。
オセロプログラムの設計の話でしょ?
しかも何でもいいみたいだよ?
0020デフォルトの名無しさん
2005/06/21(火) 23:10:56げー。
俺が探してくんの?w
誰か知らん奴のためになぜにここまで苦労せにゃならんのかw
0021デフォルトの名無しさん
2005/06/21(火) 23:57:34向こうで死ぬほど書いたんだろ?何言ってんの?
0022デフォルトの名無しさん
2005/06/22(水) 00:00:150023デフォルトの名無しさん
2005/06/22(水) 00:13:000024デフォルトの名無しさん
2005/06/22(水) 00:21:25・オブジェクト指向で開発
・たくさんオブジェクト指向で開発
・なんか同じ様な設計パターンにならね?
・デザパタ誕生
かと思ってた
まぁオブジェクト指向しなくてもデザパタは適用できるんだけどさ
0025デフォルトの名無しさん
2005/06/22(水) 00:26:44まあ、一番大事なのはこれ↓だな。
>OOPなんだけどもなにもアプローチが
>基本から脱線しまくってるじゃねーか。
>どんなに複雑だろうとなんだろうと、オブジェクト指向はオブジェクト指向だ。
>基本理念は
>
>現実にあるものの構造をそのままプログラムに反映することで
>誰がみてもその構造を把握できやすいようにすること
>
>だったはずだ。
>要はインベーダゲームを作るときの自機、敵、弾、このオブジェクトを
>そのままクラスという形でソースコードに反映することができること。これがオブジェクト指向でしょ。
>この基本は絶対に変わらない。
>プログラムに多少疎い人でも、インベーダゲームで自機、敵、弾に相当するクラスが
>無かったら真っ先に担当者を問い詰めることができる。
>これがオブジェクト指向の単純な利点だ。
掻い摘んでいうと、
対象物の構造をそのままクラスとして反映させるのがオブジェクト指向であって
パターンを覚えさせるデザインパターンはアプローチがおかしい
と、そういうこと。
0026デフォルトの名無しさん
2005/06/22(水) 00:32:320027デフォルトの名無しさん
2005/06/22(水) 00:36:08おまえまじでいってんのかよw あんまプログラム組んだこと無いだろw
本当にそんな稚拙なOOPの定義で、1作品完全に組めるならやってみろw
素人がw
0028デフォルトの名無しさん
2005/06/22(水) 00:38:44ゲームなどのクライアントアプリケーションやスタンドアロンアプリケーションならそれでも行けるよね。
DB連携のWebアプリはどうする?
DB検索と更新機能のデザインパターンを使わない設計の具体例を教えてくれ。
0029デフォルトの名無しさん
2005/06/22(水) 00:39:00>
>現実にあるものの構造をそのままプログラムに反映することで
>誰がみてもその構造を把握できやすいようにすること
>
>だったはずだ。
どこでこんなこと習ったんだ?
教えてもらった先生に文句言ったほうがいいぞ。
0030デフォルトの名無しさん
2005/06/22(水) 00:41:10もうこの一言で「デザインパターン」を知らないことは明白。
0031デフォルトの名無しさん
2005/06/22(水) 00:41:38組めるよ。
なんでできないの?
0032デフォルトの名無しさん
2005/06/22(水) 00:41:46同意
典型例に名前を付けただけだよな
0033デフォルトの名無しさん
2005/06/22(水) 00:41:470034デフォルトの名無しさん
2005/06/22(水) 00:42:390035デフォルトの名無しさん
2005/06/22(水) 00:44:11web関連やったことないから知らんけど、
基本的に対象物の構造をそのままクラスに反映するわけだから
DBとやらの構造に根本的な欠陥が無い限り組めると思うよ。
それがオブジェクト指向の強みだからね。
逆にDBとやらが腐ってたら設計も腐るだろうね。
0036デフォルトの名無しさん
2005/06/22(水) 00:44:33講師もバカだしなw
超使えねぇ解雇された元同僚が某専門学校で講師やってるよw
0037デフォルトの名無しさん
2005/06/22(水) 00:47:28もしかしたら、超天才かも。
そんなわけ無いか...
0038デフォルトの名無しさん
2005/06/22(水) 00:47:28やったこともないのにできるなんてよく言えるな。
おめでたい奴だ。
0039デフォルトの名無しさん
2005/06/22(水) 00:53:580040デフォルトの名無しさん
2005/06/22(水) 00:54:06いえる。
だから、マ板にいる奴等ってすげー偉そうじゃん。
それは自分が対象物の構造さえ理解できれば確実に
プログラムを組めるということが確信できているから。
で、オブジェクト指向覚えた奴同士で設計に関する議論ってみたことないでしょ?
そりゃする必要がないから。
なんたって確実。
あとは対象物の理解がどれだけできているかってただそれだけ。
人に聞いてわかるもんじゃないし、あとは自分がどれだけ勉強するかってだけ。
0041デフォルトの名無しさん
2005/06/22(水) 00:54:53セッション管理やトランザクション管理の仕組みも自分で設計するのかな?
CommnadパターンもServiceLocatorも使わないから、ビジネスロジックの呼び出しもベタ書き?
プレゼンテーション層/ビジネスロジック層/EIS層を分けて考えることもしないんだよね?
DAOパターンやDTOパターンもSingltonも拒否?
拡張性もなく、リクエストの度に大量のオブジェクトを生成して恐ろしくパフォーマンスの低いシステムを作りそうだ。
0042デフォルトの名無しさん
2005/06/22(水) 00:56:38デザインパターンとかで縛りを受けたくないと...
オブジェクト指向云々は単なるこじつけでさ
0043本スレ住人
2005/06/22(水) 00:59:26その本良書かもしれないけど、あんまポピュラーじゃないから、
ちゃんと説明する努力をしないと伝わらないよ。
俺なんて本スレで調査しまくり、翻訳しまくりだ、最近orz
0044デフォルトの名無しさん
2005/06/22(水) 00:59:26避けがちになるかもしれないから縛りに感じることもあるか。
それより伝達の欲求がないなら覚えるだけ面倒にしか感じないだろうな。
一人で設計してるだけならそう思うかも。
0045デフォルトの名無しさん
2005/06/22(水) 01:03:43拡張性も糞も無い。
俺はただあるべき構造をただクラスに反映させるだけ。
そのために対象物の構造を理解する必要はあるけどね。
要は対象物の構造が破綻さえしてなきゃ大よそのもんは組めるってこと。
0046デフォルトの名無しさん
2005/06/22(水) 01:06:31マジですか?
仕様の変更とかあったら組みなおすの大変じゃない?
0047本スレ住人
2005/06/22(水) 01:06:57あと、こっちは隔離スレだから、
ちゃんとした話は本スレ
【GoF】デザインパターン5
http://pc8.2ch.net/test/read.cgi/tech/1119158274/
でやった方がいい。
ところで、こんな荒れてるスレでパターン・コレクション名だけこそっと書いて
そのまま無反応になるのは、なにかのオマジナイですか?
0048デフォルトの名無しさん
2005/06/22(水) 01:12:02Webシステム開発は仕様変更が激しいからねー。
そんなんじゃ、手戻り多くてあっという間にあぼーん確定だね♪
0049デフォルトの名無しさん
2005/06/22(水) 01:22:291.対象物の構造をそのまま、オブジェクト指向言語で完全に表現する事はできない。
不完全な表現の例:
多重継承、
時間的な状態変化、
計算不可能な対象物/概念、
非常に複雑な対象物/概念
etc.
もしあらゆる事柄を表現しシミュレーションする方法があるのなら、
科学者の仕事の大半はいらなくなる
2. オブジェクト指向に限らず、モデリングとシミュレーション、そして科学の肝は、
対象物をそのまま記述するのではなく、
特徴を捉えて扱いやすい簡易的な表現を得る事である。
要するに、抽象化こそが知性の最も重要な働きなのである。
抽象化を行わないオブジェクト指向プログラミングがあるとすれば、
それはせいぜいPC上のソフトウェアの「移植」とか「エミュレーション」程度の事に過ぎない。
3. このように対象物の構造と、ソフトウェア上の表現・・・ここではオブジェクト指向モデル/プログラム
との差異を何らかの形で縮め、実用上問題がないように取り繕う技術が、
モデリングであり、設計であり、プログラミングである。
これは普通にソフトウェアを弄っている人間にとって、常識である。
0050デフォルトの名無しさん
2005/06/22(水) 01:23:05仕様変更による構造の変更を無理やり設計レベルで吸収しようとすると
だいたいドツボにハマる。
俺はいっそしっかり組み直してしまったほうがいいと考えるけど。(完全に変更の場合はね)
つか、そのまま残して置いちゃ駄目でしょ。
それに、あいまいな部分をあいまいに組んでおく手もないわけではないよ。
例えば、始め敵クラスの詳細が決まってないときは詳細が決まるまで
「敵」クラスとしてあいまいなままおいときゃいいわけだし。
んで、「敵」クラスの詳細が決まったら初めて「敵:スライム系」「敵:ゴブリン系」だの
その詳細を組みだしゃいいわけだしね。
2つの方法があってどっちか迷ってるときも同じ。あいまいなままどさっとおいておきゃいい。
汎用性をつけたいときも同じ、でもそれなりに大変ではあるよ。
逆にあんまり詳細に組み過ぎてもやっぱり駄目。RPGなんかでアイテム1つ1つにクラス作るわけにはいかないからねぇ。
ってこの辺は人によって方法は違うだろうし、どんな方法をとろうがその人の自由だな。
まあ、本質にかかわる話じゃ無い。
0051デフォルトの名無しさん
2005/06/22(水) 01:30:33ちょっと小出しに話してよ。
レスつけずらいよ。
1ってなんで不可能なのかさっぱりわからないんだけど。
0052デフォルトの名無しさん
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:20■ このスレッドは過去ログ倉庫に格納されています