前スレ
オブジェクト指向システムの設計 172
http://mevius.2ch.net/test/read.cgi/tech/1467992113
オブジェクト指向システムの設計 173
http://mevius.2ch.net/test/read.cgi/tech/1502182334/
類似スレ
手続き型システムの設計 1
http://mevius.2ch.net/test/read.cgi/tech/1500282714
オブジェクト指向システムの設計 174 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/09/26(火) 07:20:38.98ID:qu+DPehL
127デフォルトの名無しさん
2017/10/01(日) 00:59:36.43ID:H5Asg8Dc 設計とはかならず「何のために」そういう設計をするのかという
目的が有る。それがデザパタの使用例や応用例なんだよ。
継承は「何のために」ではなく実現技術
だから継承といっただけでは何をしたいのか全くわからない。
だからデザインパターンで定義されている名前が必要
目的が有る。それがデザパタの使用例や応用例なんだよ。
継承は「何のために」ではなく実現技術
だから継承といっただけでは何をしたいのか全くわからない。
だからデザインパターンで定義されている名前が必要
128デフォルトの名無しさん
2017/10/01(日) 01:01:17.79ID:44WxUqLn が、まあ、これらは通常は区別されているから、以下としよう。
・メソの継承の正しい使用例は常にストパタになる
・メソ/フィー等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない
これでいいか?
・メソの継承の正しい使用例は常にストパタになる
・メソ/フィー等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない
これでいいか?
129デフォルトの名無しさん
2017/10/01(日) 01:02:05.70ID:H5Asg8Dc > ・メソッドの継承の正しい使用例は常にストラテジーパターンになる
ならないって何度も言ってるんだがw
> ・メソッド/フィールド等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない
意味はある。その例も出した。
ならないって何度も言ってるんだがw
> ・メソッド/フィールド等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない
意味はある。その例も出した。
130デフォルトの名無しさん
2017/10/01(日) 01:03:39.76ID:GRIqwmf+131デフォルトの名無しさん
2017/10/01(日) 01:05:28.40ID:H5Asg8Dc132デフォルトの名無しさん
2017/10/01(日) 01:05:32.81ID:GRIqwmf+133デフォルトの名無しさん
2017/10/01(日) 01:07:40.92ID:GRIqwmf+134デフォルトの名無しさん
2017/10/01(日) 01:09:09.45ID:GRIqwmf+ >>131
いや派生しまくってんだから、既にoverrideされまくっているはずだが。
いや派生しまくってんだから、既にoverrideされまくっているはずだが。
135デフォルトの名無しさん
2017/10/01(日) 01:10:27.50ID:H5Asg8Dc >>133
> お前は継承使ってても「これは継承ではない!」というのか?
いや? 継承使っていてもストラテジーバターンでなければ
ストラテジーパターンではないと言うつもりだよ?
お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
お前はストラテジーパターンでないパターンを見ても、
ストラテジーバターン(=継承)だって言うんでしょ?
っていう話をしてるんだが?
> お前は継承使ってても「これは継承ではない!」というのか?
いや? 継承使っていてもストラテジーバターンでなければ
ストラテジーパターンではないと言うつもりだよ?
お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
お前はストラテジーパターンでないパターンを見ても、
ストラテジーバターン(=継承)だって言うんでしょ?
っていう話をしてるんだが?
136デフォルトの名無しさん
2017/10/01(日) 01:11:52.96ID:44WxUqLn >>132
あんたが表現のロジックを統一しないから代弁してやってんだよ
あんたが表現のロジックを統一しないから代弁してやってんだよ
137デフォルトの名無しさん
2017/10/01(日) 01:12:07.31ID:H5Asg8Dc >>134
え? なに?
世界中の何処かで誰かがオーバーライドしていれば
それは継承使っていいって言ってるわけ?
その理屈だと継承が適切じゃないものなんてないだろうな。
世界中の何処かで誰かはオーバーライドしてるだろうさ
たとえそれが便利関数であったとしても
え? なに?
世界中の何処かで誰かがオーバーライドしていれば
それは継承使っていいって言ってるわけ?
その理屈だと継承が適切じゃないものなんてないだろうな。
世界中の何処かで誰かはオーバーライドしてるだろうさ
たとえそれが便利関数であったとしても
138デフォルトの名無しさん
2017/10/01(日) 01:14:01.94ID:GRIqwmf+ >>135
> お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
そうとは言ってない。俺は、
・(正しい用法で)メソッドを継承した場合、ストラテジーパターンは自動的に適用されるから、
わざわざ「ストラテジーパターン(キリッツ」なんて言う機会も意味もない
という立場だ。
抽象度は違うが、分離不可能だし、分離する意味もないから通常は「継承」という言葉が使われる、ということ。
> お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
そうとは言ってない。俺は、
・(正しい用法で)メソッドを継承した場合、ストラテジーパターンは自動的に適用されるから、
わざわざ「ストラテジーパターン(キリッツ」なんて言う機会も意味もない
という立場だ。
抽象度は違うが、分離不可能だし、分離する意味もないから通常は「継承」という言葉が使われる、ということ。
139デフォルトの名無しさん
2017/10/01(日) 01:15:16.80ID:44WxUqLn >>135
> お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
そうとは言ってない。俺は、
・(正しい用法で)メソを継承した場合、ストパタは自動的に適用されるから、
わざわざ「ストパタ(キリッツ」なんて言う機会も意味もない
という立場だ。
抽象度は違うが、分離不可能だし、分離する意味もないから通常は「継承」という言葉が使われる、ということ。
> お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
そうとは言ってない。俺は、
・(正しい用法で)メソを継承した場合、ストパタは自動的に適用されるから、
わざわざ「ストパタ(キリッツ」なんて言う機会も意味もない
という立場だ。
抽象度は違うが、分離不可能だし、分離する意味もないから通常は「継承」という言葉が使われる、ということ。
140デフォルトの名無しさん
2017/10/01(日) 01:18:01.30ID:GRIqwmf+141デフォルトの名無しさん
2017/10/01(日) 01:19:25.82ID:H5Asg8Dc >>138
> ・(正しい用法で)メソッドを継承した場合、ストラテジーパターンは自動的に適用されるから、
されない。
されると思っているのはお前がストラテジーバターン(設計用語)を
勝手に継承(実装用語)と読んでいるから、
何度も言うが設計は使用例(応用例)、つまり目的が有る
「アルゴリズムを実行時に選択することができる」
という目的があってこそストラテジーバターンと呼ぶことができるのであって
この目的がなければ、継承を使っていたからと言ってストラテジーバターンにはならない
設計用語を使わないからお前は「継承を使っているものはすべて継承だー!」という
意味不明なことをいうつもりだろって言ってんの。
設計用語を使っていれば「継承を使っているものはすべてストラテジーバターンだー!」
という事になって言葉的には意味不明なことにはならない。
もちろんこれが間違っているのは先に言ったとおり。
設計能力が足りないよ?
> ・(正しい用法で)メソッドを継承した場合、ストラテジーパターンは自動的に適用されるから、
されない。
されると思っているのはお前がストラテジーバターン(設計用語)を
勝手に継承(実装用語)と読んでいるから、
何度も言うが設計は使用例(応用例)、つまり目的が有る
「アルゴリズムを実行時に選択することができる」
という目的があってこそストラテジーバターンと呼ぶことができるのであって
この目的がなければ、継承を使っていたからと言ってストラテジーバターンにはならない
設計用語を使わないからお前は「継承を使っているものはすべて継承だー!」という
意味不明なことをいうつもりだろって言ってんの。
設計用語を使っていれば「継承を使っているものはすべてストラテジーバターンだー!」
という事になって言葉的には意味不明なことにはならない。
もちろんこれが間違っているのは先に言ったとおり。
設計能力が足りないよ?
142デフォルトの名無しさん
2017/10/01(日) 01:20:27.48ID:H5Asg8Dc143デフォルトの名無しさん
2017/10/01(日) 01:25:04.92ID:GRIqwmf+144デフォルトの名無しさん
2017/10/01(日) 01:26:45.20ID:44WxUqLn145デフォルトの名無しさん
2017/10/01(日) 01:30:18.31ID:H5Asg8Dc >>143
> メンバは追加されてるだろ。(多分)
オーバーライドの話だっただろ。アホめw
例外クラスは、クラスの階層構造を表現するのに
継承が適切だから継承を使ってる。
すべてのErrorはExceptioであり、実行時に発生するのは
StandardErrorであり、ファイルIOに関するエラーはIOErrorである
という風にだ。
これは設計として正しい。
オーバーライドするかどうかは些細な問題にすぎない。
重要なのは各クラスにどういう関係があって(これが設計)
それをどう言語で表現するか(これが実装)だ
お前がずっとやってるのは、実装だけしか見てないってことだよ。
> メンバは追加されてるだろ。(多分)
オーバーライドの話だっただろ。アホめw
例外クラスは、クラスの階層構造を表現するのに
継承が適切だから継承を使ってる。
すべてのErrorはExceptioであり、実行時に発生するのは
StandardErrorであり、ファイルIOに関するエラーはIOErrorである
という風にだ。
これは設計として正しい。
オーバーライドするかどうかは些細な問題にすぎない。
重要なのは各クラスにどういう関係があって(これが設計)
それをどう言語で表現するか(これが実装)だ
お前がずっとやってるのは、実装だけしか見てないってことだよ。
146デフォルトの名無しさん
2017/10/01(日) 01:30:53.56ID:GRIqwmf+ >>141
言いたいことは分かるが、平行線だな。
言いたいことは分かるが、平行線だな。
147デフォルトの名無しさん
2017/10/01(日) 01:32:35.82ID:H5Asg8Dc148デフォルトの名無しさん
2017/10/01(日) 01:34:40.94ID:GRIqwmf+149デフォルトの名無しさん
2017/10/01(日) 01:36:17.23ID:H5Asg8Dc >>146
すべてはお前が
ストラテジーバターンは継承を使ってるから
設計用語ではなく実装用語の継承と呼びましょう
そうするとストラテジーバターンなんて用語はいらないですよね?
ってことはデザパタ用語は全ていらないんじゃないですか?
使う目的なんか気にせず、実装に継承を使っていれば
全部継承と呼びましょうよ
だからデザパタは意味がない。ゴミ
というばーかな。理屈を言い出したのが悪い。
すべてはお前が
ストラテジーバターンは継承を使ってるから
設計用語ではなく実装用語の継承と呼びましょう
そうするとストラテジーバターンなんて用語はいらないですよね?
ってことはデザパタ用語は全ていらないんじゃないですか?
使う目的なんか気にせず、実装に継承を使っていれば
全部継承と呼びましょうよ
だからデザパタは意味がない。ゴミ
というばーかな。理屈を言い出したのが悪い。
150デフォルトの名無しさん
2017/10/01(日) 01:36:22.99ID:GRIqwmf+151デフォルトの名無しさん
2017/10/01(日) 01:36:32.17ID:44WxUqLn152デフォルトの名無しさん
2017/10/01(日) 01:38:16.54ID:H5Asg8Dc153デフォルトの名無しさん
2017/10/01(日) 01:40:22.72ID:H5Asg8Dc 使う目的が違うのに、実装に継承が使われているだけで
全部継承と呼ぶな。それは実装用語だ
ストラテジーバターンの目的として使ってない時に
ストラテジーバターンは継承♪
継承を使っていればストラテジーバターン♪
だから全部ストラテジーバターン♪
とか言い出すなボケ
ストラテジーとは別のバターンとして使っているときは
実装に継承が含まれていようが別のパターンだ
全部継承と呼ぶな。それは実装用語だ
ストラテジーバターンの目的として使ってない時に
ストラテジーバターンは継承♪
継承を使っていればストラテジーバターン♪
だから全部ストラテジーバターン♪
とか言い出すなボケ
ストラテジーとは別のバターンとして使っているときは
実装に継承が含まれていようが別のパターンだ
154デフォルトの名無しさん
2017/10/01(日) 01:42:14.15ID:GRIqwmf+155デフォルトの名無しさん
2017/10/01(日) 01:43:39.80ID:H5Asg8Dc > 現実的に使えないから使われてないのだと思うぞ。
現実的に使われてるから、使われてるとしか言いようがない
現実的に使われてるから、使われてるとしか言いようがない
156デフォルトの名無しさん
2017/10/01(日) 01:44:39.83ID:44WxUqLn157デフォルトの名無しさん
2017/10/01(日) 01:45:19.08ID:H5Asg8Dc 例えば、Railsのモデルに使われているActiveRecordというのは
もともとPoEAAのActiveRecordパターンという
パターンを実装したものだ
あまりにもRailsが有名になりすぎてRailsのものだと
勘違いしている人がいるぐらいにな。
これだけでも有名で大規模な利用例と言えよう
もともとPoEAAのActiveRecordパターンという
パターンを実装したものだ
あまりにもRailsが有名になりすぎてRailsのものだと
勘違いしている人がいるぐらいにな。
これだけでも有名で大規模な利用例と言えよう
158デフォルトの名無しさん
2017/10/01(日) 01:46:37.91ID:GRIqwmf+159デフォルトの名無しさん
2017/10/01(日) 01:49:44.09ID:H5Asg8Dc >>158
あぁ、レスが遅かったな。
すでにデザインパターンが使われてる例を一つ出したところだ
デザインパターンが使われていない証拠を出せ
デザインパターンが使われている証拠を出せ
これは
幽霊がいないという証拠を出せ
幽霊がいるという証拠を出せ
という話と似ている。幽霊がいないことを証明するのは難しいが
幽霊がいるという証明をするのは簡単
一匹でも幽霊を見つけてくればいい。
だから俺はデザインパターンが使われてる例を一つ出した。
お前は難しい方から攻めてくれ。デザインパターンが使われていないという証明をしろ。
あぁ、レスが遅かったな。
すでにデザインパターンが使われてる例を一つ出したところだ
デザインパターンが使われていない証拠を出せ
デザインパターンが使われている証拠を出せ
これは
幽霊がいないという証拠を出せ
幽霊がいるという証拠を出せ
という話と似ている。幽霊がいないことを証明するのは難しいが
幽霊がいるという証明をするのは簡単
一匹でも幽霊を見つけてくればいい。
だから俺はデザインパターンが使われてる例を一つ出した。
お前は難しい方から攻めてくれ。デザインパターンが使われていないという証明をしろ。
160デフォルトの名無しさん
2017/10/01(日) 01:52:23.50ID:GRIqwmf+161デフォルトの名無しさん
2017/10/01(日) 01:56:02.10ID:44WxUqLn #define パターン パタ
#define デザインパターン デザパタ
#define ストラテジーパターン ストパタ
#define メソッド メソ
#define フィールド フィー
これでだいぶコード量が小さくできる
他に入れとくべきものある?
#define デザインパターン デザパタ
#define ストラテジーパターン ストパタ
#define メソッド メソ
#define フィールド フィー
これでだいぶコード量が小さくできる
他に入れとくべきものある?
162デフォルトの名無しさん
2017/10/01(日) 01:56:44.56ID:H5Asg8Dc >>160
だからお前は実装のことしか見れてないっていってんだよww
視野が狭すぎ
「AcriveRecordオブジェクトを継承しといてね」は実装の話だ
「AcriveRecordパターン使ってね」は設計の話だ。
(実際には誰かに頼まれて使ったのではなくRailsの生みの親のDHHが
考慮した結果AcriveRecordパターンを使っわけだが)
お前は設計がすんだあとの立場からしか見えてないんだよ。
お前の書き込み自体が「○○しといてね」と指示を出される側から見てるのがその証拠
お前は誰かがやった設計の通りに、実装することしかしたことがないんだろ?
だからお前は実装のことしか見れてないっていってんだよww
視野が狭すぎ
「AcriveRecordオブジェクトを継承しといてね」は実装の話だ
「AcriveRecordパターン使ってね」は設計の話だ。
(実際には誰かに頼まれて使ったのではなくRailsの生みの親のDHHが
考慮した結果AcriveRecordパターンを使っわけだが)
お前は設計がすんだあとの立場からしか見えてないんだよ。
お前の書き込み自体が「○○しといてね」と指示を出される側から見てるのがその証拠
お前は誰かがやった設計の通りに、実装することしかしたことがないんだろ?
163デフォルトの名無しさん
2017/10/01(日) 02:01:22.65ID:44WxUqLn 実装は思想やモデル、指針を定義するパターンを実現する手法のひとつにすぎない
それだけのことだよね
それだけのことだよね
164デフォルトの名無しさん
2017/10/01(日) 02:03:57.54ID:GRIqwmf+ >>162
いや、指示を出す立場でも同じ言葉だと思うが。
よく知らないが、
> ActiveRecordのようなO/Rマッパーを使うと、
> オブジェクト指向プログラミングができるのはもちろん、
> モデル層の永続化のコードを基本的にライブラリ任せにできるので、
> SQLを記述する煩わしさを避けることができます。
> http://www.atmarkit.co.jp/ait/articles/1104/12/news135.html
つまり俺なら普通に「O/Rマッパー」って言うぞ。
それを厨二に「ActiveRecord(キリッ」と名付けるのは勝手だが、
何故俺がいちいち名前を覚えないといけないのだ?
いや、指示を出す立場でも同じ言葉だと思うが。
よく知らないが、
> ActiveRecordのようなO/Rマッパーを使うと、
> オブジェクト指向プログラミングができるのはもちろん、
> モデル層の永続化のコードを基本的にライブラリ任せにできるので、
> SQLを記述する煩わしさを避けることができます。
> http://www.atmarkit.co.jp/ait/articles/1104/12/news135.html
つまり俺なら普通に「O/Rマッパー」って言うぞ。
それを厨二に「ActiveRecord(キリッ」と名付けるのは勝手だが、
何故俺がいちいち名前を覚えないといけないのだ?
165デフォルトの名無しさん
2017/10/01(日) 02:05:21.68ID:44WxUqLn166デフォルトの名無しさん
2017/10/01(日) 02:08:23.29ID:GRIqwmf+167デフォルトの名無しさん
2017/10/01(日) 02:08:24.39ID:H5Asg8Dc 普通、設計は「○○パターンを使ってね」なんて言わないからなぁ。
言うとしたら「○○パターンを使いましょう」だ
なにもない所から使うパターンを考えることが設計作業なんだから。
設計者が実装者に指示を出すとしたら
「○○パターンを使いますから、必要なクラスを実装してください」か
もしくは「○○パターンを使います。そのために必要なクラスの一部を作りましたから、
あなたは○○オブジェクトを継承しといてね」になるだろう。
そう実装の話。実装の立場からしか物事を見れてないから
設計をすることの意味すらもわからず
設計に実装と同じような指示が存在すると墓穴をほってしまう。
言うとしたら「○○パターンを使いましょう」だ
なにもない所から使うパターンを考えることが設計作業なんだから。
設計者が実装者に指示を出すとしたら
「○○パターンを使いますから、必要なクラスを実装してください」か
もしくは「○○パターンを使います。そのために必要なクラスの一部を作りましたから、
あなたは○○オブジェクトを継承しといてね」になるだろう。
そう実装の話。実装の立場からしか物事を見れてないから
設計をすることの意味すらもわからず
設計に実装と同じような指示が存在すると墓穴をほってしまう。
168デフォルトの名無しさん
2017/10/01(日) 02:09:16.78ID:H5Asg8Dc169デフォルトの名無しさん
2017/10/01(日) 02:11:38.94ID:44WxUqLn170デフォルトの名無しさん
2017/10/01(日) 02:12:56.51ID:H5Asg8Dc まあ、ご教授してさしあげると(笑)
O/Rマッパーは設計を意味する用語ではない
なにかのオブジェクトとデータベースをマッピングする
という目的のためにライブラリ・フレムワークの種類のことだ。
O/Rマッパーと言ってもそこにどんな設計が使われているかはわからない。
ActiveRecordパターンを使ってるかもしれないし
Table Data Gatewayパターンを使ってるかもしれないし
Row Data Gatewayパターンを使ってるかもしれないし
Data Mapperパターンを使ってるかもしれない
O/Rマッパーは設計を意味する用語ではない
なにかのオブジェクトとデータベースをマッピングする
という目的のためにライブラリ・フレムワークの種類のことだ。
O/Rマッパーと言ってもそこにどんな設計が使われているかはわからない。
ActiveRecordパターンを使ってるかもしれないし
Table Data Gatewayパターンを使ってるかもしれないし
Row Data Gatewayパターンを使ってるかもしれないし
Data Mapperパターンを使ってるかもしれない
171デフォルトの名無しさん
2017/10/01(日) 02:14:56.98ID:H5Asg8Dc RailsのActiveRecordは
その名前の通りPoEAAのActiveRecordパターンを
実装したO/Rマッパーである
別にO/Rマッパー全てがActiveRecordパターンというわけではない
その名前の通りPoEAAのActiveRecordパターンを
実装したO/Rマッパーである
別にO/Rマッパー全てがActiveRecordパターンというわけではない
172デフォルトの名無しさん
2017/10/01(日) 02:15:32.16ID:GRIqwmf+173デフォルトの名無しさん
2017/10/01(日) 02:16:17.79ID:44WxUqLn まとめると、基本設計(パターン)とそれを実現するために使う道具(ライブラリ等の具体的な実装)の区別をちゃんとつけて設計しましょう
ってことでFA?
ってことでFA?
174デフォルトの名無しさん
2017/10/01(日) 02:17:03.31ID:H5Asg8Dc Java の Hibernate という O/Rマッパーが
Data Mapperパターンを使っている
http://d.hatena.ne.jp/naoya/20051024/1130146687
> テーブルの構造とクラスの設計に乖離がある場合、
> その乖離を埋めるためのマッピングを用意してやる必要がある、
> これが Data Mapper パターン。Java の Hibernate とかが
> Data Mapper による O/R マッピング実装。
Data Mapperパターンを使っている
http://d.hatena.ne.jp/naoya/20051024/1130146687
> テーブルの構造とクラスの設計に乖離がある場合、
> その乖離を埋めるためのマッピングを用意してやる必要がある、
> これが Data Mapper パターン。Java の Hibernate とかが
> Data Mapper による O/R マッピング実装。
175デフォルトの名無しさん
2017/10/01(日) 02:18:34.76ID:H5Asg8Dc >>172
O/Rマッパーの実装として
ActiveRecordパターンを使ったRailsのActiveRecordと
DataMapperパターンを使ったJavaのHibernateを紹介した
ここからもO/Rマッパーという用語では
設計がわからんという話に納得できただろ?w
O/Rマッパーの実装として
ActiveRecordパターンを使ったRailsのActiveRecordと
DataMapperパターンを使ったJavaのHibernateを紹介した
ここからもO/Rマッパーという用語では
設計がわからんという話に納得できただろ?w
176デフォルトの名無しさん
2017/10/01(日) 02:18:59.84ID:GRIqwmf+ >>170,171
それくらいは分かるが、と言うより、
・O/Rマッパー=OとRをマッピングするもの
であって、それ以上でも以下でもないんだよ。
ただし、中身の実装を知らなくていいというのがOOPであって、それで終わり。
それくらいは分かるが、と言うより、
・O/Rマッパー=OとRをマッピングするもの
であって、それ以上でも以下でもないんだよ。
ただし、中身の実装を知らなくていいというのがOOPであって、それで終わり。
177デフォルトの名無しさん
2017/10/01(日) 02:20:16.08ID:H5Asg8Dc > ただし、中身の実装を知らなくていいというのがOOPであって、それで終わり。
ア、ハイ、実装者側の立場からしか見えてないんですよね?w
中身の設計ぐらい知らなきゃw
ア、ハイ、実装者側の立場からしか見えてないんですよね?w
中身の設計ぐらい知らなきゃw
178デフォルトの名無しさん
2017/10/01(日) 02:21:21.14ID:44WxUqLn 少しずつ主張を変えていって最初からそう言ってるんだがってことにする論法って俗に何て言うの?
179デフォルトの名無しさん
2017/10/01(日) 02:21:59.93ID:H5Asg8Dc ちょっとまてw
終わった話を蒸し返す論法も使ってるぞw
終わった話を蒸し返す論法も使ってるぞw
180デフォルトの名無しさん
2017/10/01(日) 02:26:02.99ID:GRIqwmf+181デフォルトの名無しさん
2017/10/01(日) 02:28:09.18ID:H5Asg8Dc 実装者は使うライブラリ・フレームワークの設計をしらないと
めちゃくちゃになるからな。
例えば昔、トランザクションスクリプトパターンと
単なるSQLライブラリばかり使ってきた人が
別プロジェクトでPythonのDjango(これもActiveRecordパターン)を
使ったんだが散々な結果だったよ。
フレームワークとしてActiveRecordパターンを要求されるが
そこにActiveRecordパターンではやらないようなコード
(SQLを実行するだけのようなメソッド)をクラスに生やしたりして。
Djangoフレームワークの実装の中身は見なくてもいいけど
そこで使われている設計はちゃんと理解していなければダメだ。
めちゃくちゃになるからな。
例えば昔、トランザクションスクリプトパターンと
単なるSQLライブラリばかり使ってきた人が
別プロジェクトでPythonのDjango(これもActiveRecordパターン)を
使ったんだが散々な結果だったよ。
フレームワークとしてActiveRecordパターンを要求されるが
そこにActiveRecordパターンではやらないようなコード
(SQLを実行するだけのようなメソッド)をクラスに生やしたりして。
Djangoフレームワークの実装の中身は見なくてもいいけど
そこで使われている設計はちゃんと理解していなければダメだ。
182デフォルトの名無しさん
2017/10/01(日) 02:28:25.53ID:44WxUqLn あるOOPベースのライブラリを使うことで結果的にあるデザインパターンに沿うことになるライブラリと、いろんなデザインパターンを実現するのに使えるより純粋な道具としてのライブラリがあると思うの
そこはちゃんと分離して話をしないとダメだと思うの
そこはちゃんと分離して話をしないとダメだと思うの
183デフォルトの名無しさん
2017/10/01(日) 02:28:51.27ID:H5Asg8Dc184デフォルトの名無しさん
2017/10/01(日) 02:30:10.95ID:GRIqwmf+ 一応俺のスタンスは最初から変わってないつもりだぞ。
・デザパタはゴミ
・デザパタ厨もゴミ
・デザパタ用語は使い道がないからゴミ
・デザパタはゴミ
・デザパタ厨もゴミ
・デザパタ用語は使い道がないからゴミ
185デフォルトの名無しさん
2017/10/01(日) 02:31:34.05ID:44WxUqLn186デフォルトの名無しさん
2017/10/01(日) 02:31:45.57ID:H5Asg8Dc187デフォルトの名無しさん
2017/10/01(日) 02:32:31.62ID:GRIqwmf+188デフォルトの名無しさん
2017/10/01(日) 02:34:18.00ID:44WxUqLn189デフォルトの名無しさん
2017/10/01(日) 02:35:51.52ID:GRIqwmf+190デフォルトの名無しさん
2017/10/01(日) 02:36:36.93ID:H5Asg8Dc >>187
> しかしそれは「フレームワークの中身を知っておけ」であって、「デザパタを知っておけ」ではない。
「フレームワークで使われてるデザパタを知っておけ」だ
俺はDjangoは当時知らなかったがActiveRecordパターンを知っていたから
使い方が間違っていることにすぐに気づいたぞ
特定のフレームワークに縛られない知識が重要という話だ。
あくまで実装者として立場からしか見れないお前は
今使ってるフレームワークの使い方で精一杯なんだろうけどな。
そしてフレームワークから呼び出されるコードしか書かないから
お前の世界にはデザパタがでてこないわけだよ。
全て理屈が通ったなw
> しかしそれは「フレームワークの中身を知っておけ」であって、「デザパタを知っておけ」ではない。
「フレームワークで使われてるデザパタを知っておけ」だ
俺はDjangoは当時知らなかったがActiveRecordパターンを知っていたから
使い方が間違っていることにすぐに気づいたぞ
特定のフレームワークに縛られない知識が重要という話だ。
あくまで実装者として立場からしか見れないお前は
今使ってるフレームワークの使い方で精一杯なんだろうけどな。
そしてフレームワークから呼び出されるコードしか書かないから
お前の世界にはデザパタがでてこないわけだよ。
全て理屈が通ったなw
191デフォルトの名無しさん
2017/10/01(日) 02:40:26.75ID:GRIqwmf+ >>190
だからそれは「フレームワークがActiveRecord前提で組まれている」からであり、
それを「ActiveRecordパターン」と呼ぶのは自由だが、GoFの言う「デザパタ」とは違うって。
まあ平行線ならそれでいいが。
だからそれは「フレームワークがActiveRecord前提で組まれている」からであり、
それを「ActiveRecordパターン」と呼ぶのは自由だが、GoFの言う「デザパタ」とは違うって。
まあ平行線ならそれでいいが。
192デフォルトの名無しさん
2017/10/01(日) 02:44:03.92ID:H5Asg8Dc > GoFの言う「デザパタ」とは違うって。
そりゃそうだ。ActiveRecordパターンは
エンタープライズアプリケーションアーキテクチャパターン
https://www.amazon.co.jp/dp/B01B5MX2O2/
にのってるマーチン・ファウラーのデザインパターンなんだから
そりゃそうだ。ActiveRecordパターンは
エンタープライズアプリケーションアーキテクチャパターン
https://www.amazon.co.jp/dp/B01B5MX2O2/
にのってるマーチン・ファウラーのデザインパターンなんだから
193デフォルトの名無しさん
2017/10/01(日) 02:46:05.25ID:U1G3k+aG194デフォルトの名無しさん
2017/10/01(日) 02:50:38.64ID:GRIqwmf+195デフォルトの名無しさん
2017/10/01(日) 02:51:22.94ID:H5Asg8Dc ちなみにJava の Hibernate という O/Rマッパーは
ActiveRecordパターンとともに紹介されている
Data Mapperパターンを使っているが
Hibernate はフレームワークではない。ライブラリである。
ActiveRecordパターンとともに紹介されている
Data Mapperパターンを使っているが
Hibernate はフレームワークではない。ライブラリである。
196デフォルトの名無しさん
2017/10/01(日) 02:53:02.16ID:GRIqwmf+197デフォルトの名無しさん
2017/10/01(日) 02:55:34.72ID:44WxUqLn デザインパターンは不要の長物といってる人はデザインパターンを理解してないと思われる
何かしらのソフトウェアをゼロから作り上げるにあたっては必ず何かしらの大枠となる基本設計思想や基本構造を構想して行われる
それがGoFのデザインパターンに一致するかもしれないし、新しい独自のデザインパターンかもしれない
デザインパターンという言葉は両者含めての言葉である
つまり、デザインパターンを持たないソフトウェアなど本来は存在しない
何かしらのソフトウェアをゼロから作り上げるにあたっては必ず何かしらの大枠となる基本設計思想や基本構造を構想して行われる
それがGoFのデザインパターンに一致するかもしれないし、新しい独自のデザインパターンかもしれない
デザインパターンという言葉は両者含めての言葉である
つまり、デザインパターンを持たないソフトウェアなど本来は存在しない
198デフォルトの名無しさん
2017/10/01(日) 02:55:40.17ID:H5Asg8Dc199デフォルトの名無しさん
2017/10/01(日) 02:57:01.13ID:H5Asg8Dc >>196
> これも何度も言っているが、ストラテジーパターンに該当するとして、
> その際、継承/委譲/関数ポインタのどれにするかで大違いなので、
> 現実的に「ストラテジーパターンで行きましょう」なんて議論は無理で、
ここはいろんなアルゴリズムを実行時に切り替えられるようにしよう
であればストラテジーバターンで行きましょう。という議論になる。
アルゴリズムを実行時に切り替えられるようにしようという設計の話で
委譲にしておく?なんて実装の話は出てこない。
> これも何度も言っているが、ストラテジーパターンに該当するとして、
> その際、継承/委譲/関数ポインタのどれにするかで大違いなので、
> 現実的に「ストラテジーパターンで行きましょう」なんて議論は無理で、
ここはいろんなアルゴリズムを実行時に切り替えられるようにしよう
であればストラテジーバターンで行きましょう。という議論になる。
アルゴリズムを実行時に切り替えられるようにしようという設計の話で
委譲にしておく?なんて実装の話は出てこない。
200デフォルトの名無しさん
2017/10/01(日) 02:57:04.47ID:44WxUqLn201デフォルトの名無しさん
2017/10/01(日) 02:58:01.82ID:H5Asg8Dc ほらなw
答えたのに無視するもんなー
こういうやつです
答えたのに無視するもんなー
こういうやつです
202デフォルトの名無しさん
2017/10/01(日) 03:01:11.73ID:44WxUqLn >>196
デザインパターンとは設計の大枠となる構造や指針であって、それを決めてからより具体的な実装を検討していくってだけなんだが…
デザインパターンとは設計の大枠となる構造や指針であって、それを決めてからより具体的な実装を検討していくってだけなんだが…
203デフォルトの名無しさん
2017/10/01(日) 03:04:15.90ID:GRIqwmf+204デフォルトの名無しさん
2017/10/01(日) 03:05:53.36ID:44WxUqLn >>203
回答しといたぞ
回答しといたぞ
205デフォルトの名無しさん
2017/10/01(日) 03:07:26.90ID:GRIqwmf+206デフォルトの名無しさん
2017/10/01(日) 03:09:34.07ID:44WxUqLn >>205
デザパタっていうなら省略ポリシーをちゃんと守って書きなって言ってるだけ
デザパタっていうなら省略ポリシーをちゃんと守って書きなって言ってるだけ
207デフォルトの名無しさん
2017/10/01(日) 03:14:58.23ID:44WxUqLn >>205
デザパタと言ったかと思えばストラテジーパターンと言ってみたり、中途半端なんだよ
そういうやつが書くコードは、ところどころポリシーが違ったりしてるいい加減なコードを書きそうだ
そんな調子だからデザインパターンも軽視するのだろう
デザパタと言ったかと思えばストラテジーパターンと言ってみたり、中途半端なんだよ
そういうやつが書くコードは、ところどころポリシーが違ったりしてるいい加減なコードを書きそうだ
そんな調子だからデザインパターンも軽視するのだろう
208デフォルトの名無しさん
2017/10/01(日) 03:20:07.22ID:H5Asg8Dc デザパタと略すならストラテジーパターンも
ストパンと略すべきだろうな
ストパンと略すべきだろうな
209デフォルトの名無しさん
2017/10/01(日) 03:23:34.93ID:44WxUqLn >>208
いやそれはおかしいだろw
いやそれはおかしいだろw
210デフォルトの名無しさん
2017/10/01(日) 08:46:24.59ID:GRIqwmf+ >>198
ストラテジーパターン以外についても前スレでさんざん
○○=△△パターン、って書いたろ。
まあいいが。
undoすらまともに実装出来ないデザパタ厨が、
何をどう勘違いしたら設計出来るつもりになれるのか不思議だったが、
だいぶ喋ってくれたので何となく分かったような気がする。
まあ後日読み返してみることにするよ。これについてはありがとう。
ストラテジーパターン以外についても前スレでさんざん
○○=△△パターン、って書いたろ。
まあいいが。
undoすらまともに実装出来ないデザパタ厨が、
何をどう勘違いしたら設計出来るつもりになれるのか不思議だったが、
だいぶ喋ってくれたので何となく分かったような気がする。
まあ後日読み返してみることにするよ。これについてはありがとう。
211デフォルトの名無しさん
2017/10/01(日) 09:03:28.63ID:U1G3k+aG undoとかundoとかundoとか自分がやったことあるところは自信あるもんな
212デフォルトの名無しさん
2017/10/01(日) 09:33:28.54ID:GRIqwmf+ >>211
まあ今日はもうやり合う気はないんだが、多分お前らは設計を根本的に勘違いしている。
例えば、>>174内URLで言うなら、
> Table Data Gateway は J2EE の DAO に代表されるパターンで、
> ひとつのインスタンスがテーブルの全部のレコードを扱うというもの。
> SQL を一箇所に集めることで保守性を上げましょうね、というもの。
普通の人の設計=後半部分を考えること
お前らの言う設計=この全文を覚えること
になってる。
ただしこれがお前らみたいに考える能力がない連中にとって現実解になり得るのかもしれん。
これは前にも言ったが。
> 自分がやったことあるところは自信あるもんな
これがお前らの世界観を端的に示している。
経験済みならパターンとして暗記しているから出来るが、やったこと無いと何も出来ない。
最初の卵は絶対に産めないわけだ。
実はお前らがundoをさも難しいと思っていること自体がかなり滑稽なんだがな。
とはいえ新しい意味での「コピペプログラマ」が跋扈する時代でもあるから、
お前らのやり方でもある程度通用するのは事実なのだろう。
デザパタ厨=コピペプログラマのようだし。
まあ今日はもうやり合う気はないんだが、多分お前らは設計を根本的に勘違いしている。
例えば、>>174内URLで言うなら、
> Table Data Gateway は J2EE の DAO に代表されるパターンで、
> ひとつのインスタンスがテーブルの全部のレコードを扱うというもの。
> SQL を一箇所に集めることで保守性を上げましょうね、というもの。
普通の人の設計=後半部分を考えること
お前らの言う設計=この全文を覚えること
になってる。
ただしこれがお前らみたいに考える能力がない連中にとって現実解になり得るのかもしれん。
これは前にも言ったが。
> 自分がやったことあるところは自信あるもんな
これがお前らの世界観を端的に示している。
経験済みならパターンとして暗記しているから出来るが、やったこと無いと何も出来ない。
最初の卵は絶対に産めないわけだ。
実はお前らがundoをさも難しいと思っていること自体がかなり滑稽なんだがな。
とはいえ新しい意味での「コピペプログラマ」が跋扈する時代でもあるから、
お前らのやり方でもある程度通用するのは事実なのだろう。
デザパタ厨=コピペプログラマのようだし。
213デフォルトの名無しさん
2017/10/01(日) 10:06:53.73ID:GRIqwmf+ まあとにかく俺は、
「動的に対象関数を切り替える」と言えば済むだけのところで
「ストラテジーパターン」と言い換えるのは、厨二以外の意味はないと思うけどな。
そして「AcriveRecordパターン」なんて言っちゃうのは厨二過ぎて付いていけない。
「Rails標準O/Rマッパーの実装方式」と言えば誰にでも通じるのに。
とはいえこういう状況も割とよくあるのも事実だが。
「動的に対象関数を切り替える」と言えば済むだけのところで
「ストラテジーパターン」と言い換えるのは、厨二以外の意味はないと思うけどな。
そして「AcriveRecordパターン」なんて言っちゃうのは厨二過ぎて付いていけない。
「Rails標準O/Rマッパーの実装方式」と言えば誰にでも通じるのに。
とはいえこういう状況も割とよくあるのも事実だが。
214デフォルトの名無しさん
2017/10/01(日) 10:46:47.52ID:IPLbJXkb なんども使う処理は関数化して名前を付けるだろ
デザインパターンもそれと同じだよ
この考え方を理解できない人ってめちゃくちゃ長い関数を書きそうだよね
仕事では絶対に付き合いたくないタイプ
デザインパターンもそれと同じだよ
この考え方を理解できない人ってめちゃくちゃ長い関数を書きそうだよね
仕事では絶対に付き合いたくないタイプ
215デフォルトの名無しさん
2017/10/01(日) 11:25:29.81ID:DL6cgIdt >>178
とくに名前ついてないと思うけど
頭の悪い子が無自覚に食い下がるときって、いつもこうなってると思う
だから、いつもの展開だなって思うだけ
おまえら、バターン君これ以上いじっても何の利も無いぞ
もうそっとしておいてやれ
とくに名前ついてないと思うけど
頭の悪い子が無自覚に食い下がるときって、いつもこうなってると思う
だから、いつもの展開だなって思うだけ
おまえら、バターン君これ以上いじっても何の利も無いぞ
もうそっとしておいてやれ
216デフォルトの名無しさん
2017/10/01(日) 11:57:55.99ID:GRIqwmf+217デフォルトの名無しさん
2017/10/01(日) 12:04:09.09ID:qGSPhC6b 全体をみれてないのはどっちだろうね
218デフォルトの名無しさん
2017/10/01(日) 12:06:57.99ID:GRIqwmf+ ああ、捕捉しておくと、
ID:H5Asg8Dcは頭が悪くて、多分短期記憶領域が非常に狭い。
だから論理的に筋立てるのではなく、言葉尻を掴んで反論してくる。
というかそれしか出来ない。
だがまあ、それでも話す気はあるみたいだから相手してみた、というところ。
最初からちゃんと議論してくれればこの展開にはなってない。
とはいえ、今のID:H5Asg8Dcにこれを求めるのは無理だ。
ただ、こういう、お前らに問題があるのに相手のせいにするというのはゆとりに多いし、
ゆとりは本当に馬鹿だから他のゆとりもそう思ってしまってみんなで同調する事も多い。
今まさにそうだが。
で、そういうのにも上の世代はブチ切れているから、そこら辺は自覚した方がいい。
ID:H5Asg8Dcは頭が悪くて、多分短期記憶領域が非常に狭い。
だから論理的に筋立てるのではなく、言葉尻を掴んで反論してくる。
というかそれしか出来ない。
だがまあ、それでも話す気はあるみたいだから相手してみた、というところ。
最初からちゃんと議論してくれればこの展開にはなってない。
とはいえ、今のID:H5Asg8Dcにこれを求めるのは無理だ。
ただ、こういう、お前らに問題があるのに相手のせいにするというのはゆとりに多いし、
ゆとりは本当に馬鹿だから他のゆとりもそう思ってしまってみんなで同調する事も多い。
今まさにそうだが。
で、そういうのにも上の世代はブチ切れているから、そこら辺は自覚した方がいい。
219デフォルトの名無しさん
2017/10/01(日) 12:22:54.23ID:yUwdbVfT 今デザパタ勉強中だけど、undo実装のパターンも二つぐらいなかったか
メメントとあともうひとつぐらい
よくわからんけど、なんでそんなに否定したがるかわからん
メメントとあともうひとつぐらい
よくわからんけど、なんでそんなに否定したがるかわからん
220デフォルトの名無しさん
2017/10/01(日) 12:37:16.11ID:H5Asg8Dc ほらな? 個人攻撃を始めちゃったw
これが記憶能力が少なくて名前を覚えられなくて
2分ヒープ木を用いて並び替えする方式でも
隣り合う要素の大小を比較しながら整列する並び替え方式でも
あらかじめ順番通りに並んだバケツを並び替えを行う要素分用意して順番に格納された要素をバケツから取り出し並び替えする方式でも
10進数の0以上の整数値の場合、0?10のバケツを用意しソートを行う要素の下1桁目に対応するバケツに格納する方式でも
バラバラになっている配列データを再帰的に最小限まで分解を行い分解し終わった後、結合を行う並び替える方式でも
動的に対象関数を切り替えるようなやり方をしよう
っていうやつなんやでw
これが記憶能力が少なくて名前を覚えられなくて
2分ヒープ木を用いて並び替えする方式でも
隣り合う要素の大小を比較しながら整列する並び替え方式でも
あらかじめ順番通りに並んだバケツを並び替えを行う要素分用意して順番に格納された要素をバケツから取り出し並び替えする方式でも
10進数の0以上の整数値の場合、0?10のバケツを用意しソートを行う要素の下1桁目に対応するバケツに格納する方式でも
バラバラになっている配列データを再帰的に最小限まで分解を行い分解し終わった後、結合を行う並び替える方式でも
動的に対象関数を切り替えるようなやり方をしよう
っていうやつなんやでw
221デフォルトの名無しさん
2017/10/01(日) 12:47:03.35ID:qGSPhC6b222デフォルトの名無しさん
2017/10/01(日) 12:47:30.83ID:yUwdbVfT パターンに名前をつけることにイラついてんのか?
223デフォルトの名無しさん
2017/10/01(日) 12:48:22.68ID:yUwdbVfT プログラマーってどうでもいいことに突っかかるよな
224デフォルトの名無しさん
2017/10/01(日) 12:51:14.45ID:IPLbJXkb PGは基本キチガイだよね
まともな奴だと逆に珍しい
もともとプログラム好きなオタクはもれなくキチガイだし
他の就職先なくてプログラマになったやつも内定取れないだけあって人間性のおかしなキチガイばかり
まともな奴だと逆に珍しい
もともとプログラム好きなオタクはもれなくキチガイだし
他の就職先なくてプログラマになったやつも内定取れないだけあって人間性のおかしなキチガイばかり
225デフォルトの名無しさん
2017/10/01(日) 12:57:42.28ID:yUwdbVfT GoFより自分の方が優秀だと主張したいのか?
226デフォルトの名無しさん
2017/10/01(日) 13:10:11.98ID:OXD0q5aq な?デザパタなんて使えないだろ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★2 [ぐれ★]
- 【速報】中国、水産物輸入停止と通達 「処理水」理由、日本政府へ ★7 [おっさん友の会★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… [BFU★]
- 中国側が首相答弁の撤回要求、日本側拒否★7 [夜のけいちゃん★]
- 「高市人気」どこに? 自民候補が福島市長選で大敗、葛飾区議選でも苦戦 衆院早期解散論に冷や水 [1ゲットロボ★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★3 [ぐれ★]
- 日本行きの航空便が50万件キャンセル。日本人「中国依存度が異常に高かったからちょうどいい😏」 [441660812]
- 日本人、ついに気づく「あれ、日本が対中国で取れる対抗措置ってなくない…?」 [931948549]
- 中国「水産物輸入停止は高市首相の発言が理由」 [256556981]
- 中国「次に禁止してほしいものを教えて」 [358382861]
- 【号外】中国外務省、高市首相が台湾関連の発言を撤回しなければ「断固たる対抗措置」を取らざるを得ないと述べた [115996789]
- 【悲報】高市早苗『嫌ああああああああああああぁぁぁぁぁっーーッッ!!私が何したって言うのよぉぉぉぉーッッ!!』 [527893826]
