トップページ⇒tech
108コメント33KB

●●デザインパターンって死滅しちゃうの??●●

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
無意味に流行って開発効率下げるだけのデザインパターンを必死に勉強している俺っていったい・・・?
0002デフォルトの名無しさんNGNG
以降、アフォのカミングアウトが続きます。
0003デフォルトの名無しさんNGNG
●●厨房って死滅しちゃうの??●●

なんの価値もない厨房を必死こいて煽っている俺っていったい・・・?
0004デフォルトの名無しさんNGNG
その前にデザインパターンって流行ってるのか?
0005デフォルトの名無しさんNGNG
久々の死滅スレだな。
0006sageNGNG
以降、アフォのカミングアウトが続きます。
0007ちゅーぼーNGNG
デザインパターンって何?Webデザインみたいなもの?
0008デフォルトの名無しさんNGNG
最近知ったかさんが多くて困ってます。
「ほら、そこはVisitorを使った方がよさそうじゃん。」とか言っておきながら
詳しい説明を求めると何も言えない奴。
「えーと。いや、わかるでしょ?」だって。
0009デフォルトの名無しさんNGNG
>>7
俺はデザイナーだ!といいたいヲタクSEのプログラム方法らしいYO!
0010デフォルトの名無しさんNGNG
staticフィールドをシングルトンと呼んでる奴。
0011デフォルトの名無しさんNGNG
>>10
ん?正しいじゃん。
0012デフォルトの名無しさんNGNG
実際ちゃんとわかってる奴は本当に一握りのSEと評論家
とてもプロジェクトで設計の疎通をとれる段階ではない
0013デフォルトの名無しさんNGNG
>>9

ああ、協調性のないオナニー野郎のやり方か。
0014デフォルトの名無しさんNGNG
デザパはオブジェクト指向を死滅させる最大の武器(笑)
0015デフォルトの名無しさんNGNG
1はデザインパターンを理解してないようだが、あれは新しいアルゴリズム
とかじゃないんだよ。昔からある星の数ほどある手法に共通の名前を付けた
だけのもの。

ある程度経験を積んだプログラマなら同じようなやり方を自然と自分で発見
しているわけだが、いちいち名前とか付けて発表したりしないから第三者に
説明するときに大変なんだよ。名前がないからアルゴリズムを1から説明する
か、ソースを見てもらうしかない。だけど名前があれば一言で説明できる。
それと初心者に指導するときにも役に立つ。

とりあえず、GoFのパターンの考え方くらいは一通り理解しておくと良いかと。
10年もプログラミングやってれば誰でも半分くらいは思い付くような事だけど。
名前や実装方法よりも考え方に重点を置くことをすすめるよ。
0016デフォルトの名無しさんNGNG
>>15
釣れましたね?
0017デフォルトの名無しさんNGNG
この糞スレを立てた1は15の態度を見習え。
そしてGoFに御免なさいを100回言え。
0018デフォルトの名無しさんNGNG
>>17
sage ようよ。

っつか、いまどきデザインパターンを屑とか言ってるようじゃ、フリーソフトのソースコード読むのも困るだろ。
0019デフォルトの名無しさんNGNG
知ってて使わないのと、知らずに使えないのは大違いだな。
0020デフォルトの名無しさんNGNG
アーキテクチャバターンは?
0021デフォルトの名無しさんNGNG
いま19がいいこと言った
0022デフォルトの名無しさんNGNG
OOにしてもデザパタにしても、称えてるのは
自分が先頭を走ってると勘違いしてる周回遅れのランナーみたいな奴だな。
0023デフォルトの名無しさんNGNG
そう思う根拠をあげろ
0024デフォルトの名無しさんNGNG
自分も最近デザインパターンを勉強して、すごくいいと思っているけど。
GoFなんかはもう古典のようですね。
本当に周回遅れの気分です。
0025デフォルトの名無しさんNGNG
>>22は、周回遅れのランナーを、ごろ寝してテレビ観戦しながら糞みそ
にけなしてる、自分のことは棚上げの無責任馬鹿評論家。
0026デフォルトの名無しさんNGNG
OOもデザパタも、あれを称えるてようなのは相当レベルが低い。
まあ底辺の方のPG才能偏差値40以下の人から見ると良いものに
見えるであろう事は容易に想像がつく。
(人は自分以下の者を容易に理解出来ます。)
あんなのは本など読まずとも天然で発想できないとしょうがない。
また、そんなのはとっくに脱して先に進んでいないとしょうがない。

OOやデザパタの罪はそういう底辺の馬鹿に先頭を走ってると
錯覚させてしまった事にある。
0027デフォルトの名無しさんNGNG
>>26
標準化、普遍化のプロセスの価値を認めないカタワアホ。
0028デフォルトの名無しさんNGNG
>>27
他所と同じ事をやって満足してるボケ。
0029デフォルトの名無しさんNGNG
>>28
詳細設計技術の優劣ごときで天狗になってるアホ。
0030デフォルトの名無しさんNGNG
>>29
UMLヲタ?
0031デフォルトの名無しさんNGNG
>>26
エキセントリックな「実装」で先端走ってる気になってる
勘違い役立たず。
0032デフォルトの名無しさんNGNG
実装の極意は集約化にあり。
それ以外は糞。
0033デフォルトの名無しさんNGNG
全部糞。
0034デフォルトの名無しさんNGNG
デザインパターンを学ぶことで、思考がやりやすくなる。
例えば、
「全通りを順次比較して比較の結果が負なら値を交換する」
と今までは考えていたのを、
「バブルソートする」
と考えることができる。
共通の名前を付ける事は他人との意志疎通だけでなく、
自分自身の思考においても有効なのは明確であろう。

デザインパターンの意義は、それを設計に適応したことなのだ。

ただし、自分でデザインパターンを発見できる程度の力がなければ、
豚に真珠である。
0035デフォルトの名無しさんNGNG
>>34
>ただし、自分でデザインパターンを発見できる程度の力がなければ、
>豚に真珠である。

「新パターンハケーン!」とかほざいてプロジェクトを泥沼に引きずり込むヴァカ。
GoF覚えたてのDQNにありがち。
0036デフォルトの名無しさんNGNG
>>25
はぁ?新パターンではなく、
既存の自分の設計から多くのGoFのデザインパターンを発見できる程度の
設計力がなければってこと。
003735NGNG
>>36

×:>>25
○:>>35

×:はぁ?
○:(゚Д゚)ハァ?

×:発見
○:再発見

だろ?
とりあえず言いたい事は解った(w
0038デフォルトの名無しさんNGNG
UMLPRESSVol.1の「ぼくにもわかるデザインパターン」あたりを
読んでおけば十分?
0039デフォルトの名無しさんNGNG
>>38

初めはそれで十分だと思う。マジで。
いきなり突っ込んだ話をし始めるとデザインと言語依存実装の区別がつかなくな
って破綻する。
0040デフォルトの名無しさんNGNG
何にしても「それに名前を付け、定式化 する」
って言う事には重大な意義がある。
0041デフォルトの名無しさんNGNG
名前を付け定義化する事には意義があるがGoFの定義は抽象的すぎるのだ。
1.機能実現のパターン
2.それに再利用性を導入したサブパターン
この2つの段階を
明確に分けて名前をつけるべきだったのではないか?
GoFのパターンは機能実現としては簡略化が可能で、それをベースとすれば
そこから派生したパターンを具体的に名前定義できたはずだ。
0042デフォルトの名無しさんNGNG
デザインパターンの最大の意義は、パターンに名前がついてることだと思う。
クラス構造の説明するときに、「ここはTemplateMethod」と一言で言えて、
チームのみんなが理解してくれるのがありがたい。

逆に言えば、チームがデザインパターンを知らないと、
パターンの意味や有効性をいちいち説明しなきゃいけないから、
パターンを使ってもあまり意味がない。

・・と思うんだけど、どうよ?
0043デフォルトの名無しさんNGNG
デザインパターンは経験をつんでからやるとデジャブ感で涙がでるよ
0044デフォルトの名無しさんNGNG
>>42
自分もそう思う、しかし、実際仕事でそのようにデザインパターンが役に
たったという話をきいた事がない。

・・と思う
・・のはず

ばかりなのだ
0045デフォルトの名無しさんNGNG
>>42
設計時の意思疎通のために使うことはあるけど、
紹介されているコードやクラスをそのまま使おうとしたことはない。
使おうとしたアホを小一時間問い詰めたことはある。
0046デフォルトの名無しさんNGNG
>>42
別にチームでなくてもいいじゃん。
javaなんかだとXXXFactoryと名付けられたクラスとかあるし、
説明のところで「このクラスはfacadeだ」とか書かれてる
のが出てきたりして、そうゆう所でも役に立ってる。
0047デフォルトの名無しさんNGNG
>>45
コードやクラスをそのまま使って何がわるいんじゃ。
0048デフォルトの名無しさんNGNG
再利用性とはコードがどれくらいコピペできるかを表す言葉です
0049デフォルトの名無しさんNGNG
>再利用性とはコードがどれくらいコピペできるかを表す言葉です
仕事ではソレはヤメテクダサイ。頼むから。
0050デフォルトの名無しさんNGNG
一番の問題は、せっかく共通の名前を付けてくれたのにそれを知っている人が
少なすぎて、結局意思の疎通には使えない事。
0051デフォルトの名無しさんNGNG
>>41
やってみれば。

実際に公開して、それが使い物になれば世間に受け入れられるでしょ。
0052デフォルトの名無しさんNGNG
>>50
俺はデザインパターンは実際に仕事でも使ってるけど(C++ でブリッジパターンを使って実装を隠蔽するのは
常套手段)、結局のところデザインパターンが役立つプログラマって一部なんじゃないかと言う気はする。

C++ でも MFC のウィザードが作ってれくたコードにお任せで、そのフレームワークにしたがってプログラミング
してる限りはデザインパターンを意識しなくてもプログラムを書けるし、設計が固まった段階で実装だけ任され
た場合はデザインパターンの出番はほとんどない。

まぁ設計の定石だから、一通り勉強しておいて

 使える場面で使う
 使えない場面では使わない

で良いんじゃないの。
0053 NGNG
>>15

モノ・コトに名前をつけるのは人類の発明
マザーテレサもモノに名前があることで知的革命を体感したとききます。
みなさんも名前をどんどんつけましょう:)
0054ななしNGNG
本来なら、それぞれの企業で名前があるんだろうが、
派遣・常駐ばかりのこの業界では望まれていたものだろう。
0055デフォルトの名無しさんNGNG
>C++ でも MFC のウィザードが作ってれくたコードにお任せで、
「AppWizardで作ったパターン」とか
「ClassWizardで作ったDialogパターン」
ならGoFのデザインパターンよりはるかに具体的で、多くの人
が知っていて、有用なパターンだと思うぞ。
0056デフォルトの名無しさんNGNG
>>55
Doc-ViewはMediatorとかObserverと同じ様なもんだろ?
それにコードはデザインパターンじゃないよ。
最低限の前提は知っておこうな。損にはならん。
0057デフォルトの名無しさんNGNG
>>55
そうゆうのはフレームワークと呼ぶのではないの?
デザインパターンって、もうちょっと抽象的というか、
「コードにこうゆう機能を持たせたいときには、こうゆう
デザインにするといいですよ」的なものでしょ。
0058デフォルトの名無しさんNGNG
>>57
そだな。デザパタではなく「実装パターン」またはイディオムと
よばれてるものに近いかも知れない。

それにC++やjavaみたいな、(デザパタレベルから見れば)抽象度の低い言語では、
ウィザードはコードそのものという具体的なものしか吐かないので、
その(抽象度の低い言語の)コードはあくまで実装パターンレベルしか
反映していないだろうな。

SmalltalkだとMVC wizardとかが有るらしいYOYOYO。
0059デフォルトの名無しさんNGNG
>>58
デザパタに限らず「概念そのもの」がコードに直接表現できない場合は多いね。

今ならクラスや継承関係が直接記述できる言語は多いけど、デザインパターンや汎用プログラミング
になると、まだまだサポートが期待できる言語のほうが少ない。たとえば C++ の STL で重要な役割
を果たしている Assignable Type なんて概念は、言語レベルで記述する方法はない。
0060デフォルトの名無しさんNGNG
ハッタリ屋はデザパタ用語連発するね。(実務は駄目だけど 藁)
0061デフォルトの名無しさんNGNG
悲惨な >>1 のいるスレだ.

(-人-)ナンマイダー
0062デフォルトの名無しさんNGNG
>>26 が実際どんなプログラムを書いてるのか知見てみたいものだ
0063デフォルトの名無しさんNGNG
>>60
実務、実務と言うやつに限って、

 「デスマーチになってるのは、お前のせいだろう、ゴルァ」

と言いたくなるようなコードを書いていて笑えない、っつー傾向もあるが。全部が全部じゃないけど。
0064デフォルトの名無しさんNGNG
泥臭いコードかいて、
泥臭いデバッグして、
泥臭いバグが取れずに、
行進するのが「実務」だと勘違いしていると思われ。
0065デフォルトの名無しさんNGNG
本人が最新だと思いこんでるコードかいて、
本人が最新だと思いこんでるデバッグして、
本人が最新だと思いこんでるバグが取れずに、
途中で投げ出して会社来なくなるくせに
なぜか周りを見下しているデザパタ馬鹿よりはマシだろ。
0066デフォルトの名無しさんNGNG
>>10-11

が本質を突いた!
0067デフォルトの名無しさんNGNG
>>65
くどいなぁ。sage ぐらい覚えろよ。
0068デフォルトの名無しさんNGNG
>>65
デザパタが最新ねぇ(w
0069デフォルトの名無しさんNGNG
http://discuss.develop.com/archives/wa.exe?A2=ind0201b&L=dotnet&F=&S=&P=60006
0070デフォルトの名無しさんNGNG
>>69
ごめん。間違えた。
0071デフォルトの名無しさんNGNG
>>65
> 本人が最新だと思いこんでるデバッグして、
UnitTest のことか?

デザパタは設計に関する話だから、旧来の設計手法と「二者択一」になる場面はあるが、テスト
技法に関しては

 printf デバッグ
 デバッガによるステップ実行
 積極的な assert()
 コードレビュー

なんかと並行して UnitTest 使うのは可能だから、問題はないと思うが。テスト手法は、バリエー
ションを増やせば検出できるバグの数は増えこそすれ、減ることはない。費用対効果の問題はあ
るけど、基本的にバグは

 発見が遅れれば遅れるほど、損害が指数関数的に大きくなる

代物だから、多少のコストをかけても早めに対策しておくのは正当化できる場合が多いぞ。
0072C++超初心者NGNG
デザインパターン・・・・・・
わかりません先生ミ#゚Д゚ミy-~教えてください
0073デフォルトの名無しさんNGNG
>>72
よくあるデザインのパターンです。
0074デフォルトの名無しさんNGNG
>>72
google
007572NGNG
http://www.google.com/search?q=%83f%83U%83C%83%93%83p%83%5E%81%5B%83%93%81@%88%D3%96%A1&hl=ja

逝ってきます。
0076デフォルトの名無しさんNGNG
ていうか結城さんのギコ猫とデザインパターンがトップかよ(藁
0077デフォルトの名無しさんNGNG
>>65
デザインパターンに「デバックに関するパターン」なんてあったっけ?
UnitTestとデザインパターンを混同してないか?
(UnitTestにデザインパターンが使われている、って場合はあるが)

>途中で投げ出して会社来なくなるくせに
>なぜか周りを見下しているデザパタ馬鹿よりはマシだろ。
この部分は同意。どんな技法使ってても途中で逃げるヤツは逝って良し!
0078デフォルトの名無しさんNGNG
>>66
スタティック変数とsingletonはちがうもーん
0079デフォルトの名無しさんNGNG
現在のオブジェクト指向は自由すぎるのだ
goto文が廃止されてif,for,whileに整備されたのと同様に
オブジェクト指向はさらに整備されるべきだ
その過程としてデザインパターンはあるのみ
0080デフォルトの名無しさんNGNG
むかしから OO やってきた人にとっては関係ないかも知れないけど、
デザパタは「 OO ではこうプログラミングしろ 」っていうすごい教科書だと
思うよ。
OOPL に触る人はやっぱり全員理解しなきゃ駄目だと思う。
知らなきゃ恥っていうレベルで。
0081 NGNG
「 OO ではこうプログラミングしろ 」などと命令されて動きたくない人
は読まなくてよろしい。
0082デフォルトの名無しさんNGNG
デザインパターンは良いものだけど、いくつかの単語が
予約語扱いになってしまって、名前に困るときがある。
0083デフォルトの名無しさんNGNG
>>77
同じような奴に アンチパターンってのがあったと思います。
0084デフォルトの名無しさんNGNG
>>83
アンチパターンはクソ訳本のせいで用語が定着してません。
0085デフォルトの名無しさんNGNG
79>>
てゆーとOOPLが死滅すると?
0086デフォルトの名無しさんNGNG
1は真面目に質問してるのかと思ったけど、たんにこの名前でスレ立てたかった
だけっぽいな。
0087デフォルトの名無しさんNGNG
1は死滅スレを並べてみたいに、キャラモカロック3個
0088デフォルトの名無しさんNGNG
OO に限らず、手続き型プログラミングでも「定石」はあるけど、なぜか名前がついてないな。

たとえば関数電卓なんかで使う、関数名と実装の関数ポインタの対となるテーブルを用意して使う方法。

struct {
  const char *name;
  int num_opl;
  int (*func)(struct node*);
} op[] = {
  { "sin", 1, Sin },
  { "cos", 1, Cos },
  { "ack", 2, Ack },
};

これで「テーブルドリブンパターン」とか。if - else でロジックに埋め込むよりも保守が楽。

他にも末尾に番兵となる要素を入れておく「センチネルパターン」、連結リストを使うときに両端にダミーノードを
ひとつ用意することで端かどうかの条件分岐を無くす「ダミーノードパターン」とか、いくらでも出てきそうな気が
する。

(この例だと、設計よりは実装よりだな……)
0089デフォルトの名無しさんNGNG
>>88

それらはすでにアルゴリズム定石として確立してるでしょ?
デザインパターンとは粒度が違うよ。
0090デフォルトの名無しさんNGNG
85>>
OOPLの死滅は当分ないと思うが、より整備され、形を変えるのは
そう遠い未来の話ではないと思う。
こういったスレが登場する時点で現状のOOPLはその程度のものでしかない
しかしいつの時代でもSEは現状与えられたテクノロジーで設計するより他に道はないのだ
その限られた条件の中でパターンの定義化というのは重要な意味を持つ。
それは1年もOOPLをやれば誰でもわかる事だ。
0091デフォルトの名無しさんNGNG
>>89
他はともかく、テーブルドリブンは State パターンと粒度が等しいと思う。
0092デフォルトの名無しさんNGNG
>>91
俺的にStateパターンは無駄なクラスが大量に増殖していやん。
とくにJavaなんかだと最悪だね。
009389NGNG
>>91

じゃ、「StateパターンのC言語最適化実装」でいいじゃんか。
言語依存実装をそれぞれパターンとして認定するのは明らかに無駄&有害。
0094デフォルトの名無しさんNGNG
>>93
テーブルを State にしか使わんのか。もったいない。
009589NGNG
>>94

ちがうってば。
メタデザインとして捉えてくれって事。
0096デフォルトの名無しさんNGNG
>>95
フレーズ短すぎ。っつか「メタデザイン」なんて解釈が曖昧で揉めそうな単語を使うなら、定義を書いて
おいたほうが良い思われ。

テーブルドリブンは、もう少し抽象度を上げて書くとデータドリブン、なんじゃないのかなぁ。ロジックに
に書かずにデータに切り出すという意味で。
009789NGNG
>>96
話が通じにくいな。
ここでも読んでみたら?
http://www.omgj.org/technology/beginner/mda.html
0098デフォルトの名無しさんNGNG
>>89パターンと呼ぶかどうかは粒度が問題とはならない。
アナリシスパターン・アーキテクチャパターン・デザパタとかいろいろあるけど、
どんな粒度でもパターンと呼べばパターンだし。
まあ、デザパタではないという意見なら賛同だな。
っつーか、OOじゃないし>>88は。

しかし、>>88は分類が難しいな…
Cのイディオムというには扱ってる内容が一般的過ぎる。
名前とメソッドの対をどこかのテーブルで一元管理するなんてことは
Cじゃなくてもできるし、むしろやってるし…
0099デフォルトの名無しさんNGNG
それこそ本人が言うとおりのテーブルドリブンパターンとか言って、そのCでの実装例が>>88ってとこだね。
確かに名前がないけど、粒度が細かくて名前を付けるまでもない範疇になってるのかなぁ。
(パターンの爆発につながるって(藁)
が、そういう考えはオブジェクト指向的な「ものに名前を付けて名前で管理する」考えと逆行するとも
言えるし、確かに難しいところではある。最近この手のイディオム的なものにも〜パターンなんて
つけてるのが多くてちょっとうざいと思ったり。(例:NullObjectパターン)
0100ミルクココア ◆KMhlJLXI NGNG
  100げっと〜!
   ̄ ̄∨ ̄ ̄ ̄
  __∧∧__
/\(゚ー゚*)  \         (´´
\/| ̄∪ ̄ ̄|\     (´⌒(´
  \|____|≡≡≡(´⌒;;;≡≡≡
         (´⌒(´⌒;;
    ズザーーーーーッ
0101パターンオタクNGNG
>99
オレはデザインパターンの考え方に感化されちゃって
日常生活での作業にも色んなパターン名をつけてるよ
恥ずかしくてとても他人には言えないけど(藁

デザインパターンそのものの良し悪しではなくて
パターンを見出すという行為に惹かれる奴が結構多いんじゃないのか?
もちろん、それを一般に流布するかどうかは別問題だけどね。
0102デフォルトの名無しさんNGNG
デザパタ14のパターンをウェブ上でサンプルソースつきで
手に入れることってできますかね?
googleで検索しても手にはいらん。
0103デフォルトの名無しさんNGNG
>>1
死滅するわけ無いじゃん。昔からあるやつに名前つけただけなんだから。
0104デフォルトの名無しさんNGNG
>>103
>>26はそれを、レベルが低いと行ってますが。
0105デフォルトの名無しさんNGNG
>>102
「デザインパターンの骸骨」とか行ってみれば?
0106デフォルトの名無しさんNGNG
>>104
無知はほうっておきましょう。
デザパタ本に書いてあるとおりの人なので笑ってしまいます。
まるでお釈迦様の手から出られない孫悟空のよう。出たと思っているのは自分だけ。
0107デフォルトの名無しさんNGNG
Rational XDEを試してみたが、かなりよさそう。
お勧めは、デザインパターンを利用したクラスを生成するウィザード
0108デフォルトの名無しさんNGNG
Rationalのツールはどれも値段高すぎ。
使用してみる分にはよさそうに思えて常用するには動作が重い。
いざ買ってみると高確率で不良資産化する罠。
■ このスレッドは過去ログ倉庫に格納されています