トップページ⇒tech
950コメント256KB

オブジェクト指向は戦場では必要なし!4

■ このスレッドは過去ログ倉庫に格納されています
0001あたたたたNGNG
 オブジェクト指向はより自然なモデルに即したものではあるが、クラス
を理解する労力が大きく、目的まで達成するのに時間がかかる。
他人のソースを見るにも複雑でときほぐしにくい。
ちゃんと整備されたドキュメントがなければ粗大ゴミソース。
またオブジェクト指向が○○に優れているとかいう話も、あくまでちゃ
んと設計され、ちゃんと実装されたクラスがあるという前提での話。
実際は世の中にどれだけの糞SEや糞PGがいることか。。。
よってオブジェクト指向は戦場では使いものになりません。

前前前スレ http://pc.2ch.net/test/read.cgi/tech/1011997945/
前前スレ http://pc.2ch.net/test/read.cgi/tech/1013266554/
前http://pc.2ch.net/test/read.cgi/tech/1013875413/

 またいつの間にかスレが1000に達しようとしていました
ご意見ありがとうございます。
やはりこれだけレスが多いということは、OOに疑問を感じている
技術者がどれだけ多いかということを実証していると思います。
 私の独自の調査においても、OOの現場での有効性に疑問をもっている
という人は全体の54.3%にも達しています。やはりOOはその有効性
に疑問があると言わざるをえません。

 皆さんも本当に何が残ってゆく技術なのか、何がイマイチぱっ
とせずに中途半端に終る技術なのか見きわめて、技術を習得して
いきましょう。
0153デフォルトの名無しさんNGNG
>>152
そりゃまあ、あげあしとり的な意見を無意識のうちにフィルタリング
できなければ2chのS/N比は最悪だろうなあ。
0154デフォルトの名無しさんNGNG
>>153
S/N比って、何よ?
0155デフォルトの名無しさんNGNG
Sound/noise
0156デフォルトの名無しさんNGNG
Soup/Noodle
0157デフォルトの名無しさんNGNG
Signa/Noise
0158デフォルトの名無しさんNGNG
>156
それじゃS/N比が大きくても嬉しくない
0159デフォルトの名無しさんNGNG
起きたら面白いことになってるねえ。
81って超科学と似てない?
相対性力学は間違っていた、なぜなら○○が説明できない!
これからは私の提唱する超相対性力学だ!
とかなんとか言っておきながら、実は単に理解できてないので
とんちんかんなことを言ってるだけって奴。
0160デフォルトの名無しさんNGNG
81に質問。
アクセサビリティって、もしかしてプログラムのどこからでも
自分の望む変数にアクセスできるのがいいって意味?
016181NGNG
>>160
まあそんな意味。

>>151
仕事でやってるならそのうち突き当たるかも。
0162デフォルトの名無しさんNGNG
>>160
とほほ発見!
016381NGNG
デザパタ厨になると「それって○○○のことじゃん」で全部済ませようと
する発展性の無い人間になるから嫌。
0164デフォルトの名無しさんNGNG
んじゃ、81にまた質問。
参照てんこもり渡しってのはもしかしてこういうの?

public int methodA(String a, String b, String c, String d, int e,
int f, int g, (20個くらい中略) double z) {
}
0165デフォルトの名無しさんNGNG
>163
再発明大好き人間よりはデザパタ勉強する意欲のある人間の方が使える。
0166デフォルトの名無しさんNGNG
>>165
再発明っつーかさ、81がやってる事ってのは

車輪が発明されもう皆がそれを利用している状況で
「おい、車輪信者ども、俺は車輪を越えるものを発見したぞ。
 自分の足で歩けば車輪はいらない! どうだ、スゴイだろ!」

って感じだろ。
0167デフォルトの名無しさんNGNG
>>163
どーでもいいから発展性のあるとこみせろよ。
たとえばデザパタの問題点を示してからそれを上回る解決策を示せ。
0168デフォルトの名無しさんNGNG
>>81よ。すなおに「ボクは他人の意見は聞きません。自分だけが正しいのです。」って言ったら(w
0169デフォルトの名無しさんNGNG
配列型オブジェクト指向だと、文字や文字列はどう書くの?
0170デフォルトの名無しさんNGNG
「文字と文字列は同じ書き方で書けます。」とか言って逃げそう。
具体的なコード書いてね。>>81
0171デフォルトの名無しさんNGNG
>>170
python?
0172デフォルトの名無しさんNGNG
少なくても俺は81の言ってる事を理解できていない。
他の奴は言ってる事が理解できてるのか?

まず、81の意見をまとめないかい?
あるいは81は、自分の意見をしっかりとまとめて主張するべきだと思う。
その際、参照てんこもり渡しと言った用語は控えてもらいたい。

81はコミュニケーション能力がだいぶ低い人間と言う印象を受けている。
0173デフォルトの名無しさんNGNG
81はすでに逃げました。
017481NGNG
>>164
そんなものだけど、渡すのは自分で作ったクラスの参照。
0175デフォルトの名無しさんNGNG
81の作った関数の中で
一番引数が多かったものって
何個くらいあるの?

俺は最高35個だけど。
これくらいならたいしたことない。
0176デフォルトの名無しさんNGNG
>>175
イヤだぞ。そんなに多いの。
普通なら構造体か、クラスにすると思うが。
0177デフォルトの名無しさんNGNG
俺がまとめていい?

1,クラスを使うと、内部変数が隠蔽されてしまうので不便だ。
2,クラスを使うと、関数にパラメータを渡すときに呼び出す側の変数を
  片っ端からパラメーターに渡さないといけないから不便だ。
3,継承すると一つの機能が複数のソースをまたがるので
  わかりづらくて不便だ。
4,沢山クラスがあるととにかく訳がわからなくて不便だ。

よって、結論。
ソースコードは一つにまとめ、配列とそのインデックスを
駆使すれば良い。
さらに何でもかんでも配列にすれば要素数1でも1000でも
同じに扱えて幸せ。

間違ってるなら言ってくれ、81よ。

アンチOOは81を養護しないのか?
017881NGNG
デザパタは結果論。デザパタ厨は評論家と同じ。
出来あがった後で人のものに「すでにデザパタにある」などとのたもう。
んでもって自分では決して生み出さない。
文明の廃退期に生まれる一連の後退的な思想の一つ。

宇宙方程式が「全てを説明できるがなにも予言できない」と言われていたのを
思い出す。
0179デフォルトの名無しさんNGNG
81の作った関数の中で
一番引数が多かったものって
何個くらいあるの?

俺は最高35個だけど。
これくらいならたいしたことない。
018081NGNG
>>177
その結論は皮肉だろ。酷いなw
0181デフォルトの名無しさんNGNG
81ってホントコミュニケーション能力無いな。
明らかにヒッキーだよな。

今まで2chにいたヒッキーの中でも群を抜いてるよ、こいつ・・・

もっと積極的に意見を言えよな。
そんなに批判されるのが恐いのか?
震えながらキーボード打つくらいなら2chに来るなよ。
018281NGNG
配列型OOがクラス型より優れているなどとは言っていません
縦に切ったか横に切ったかの違いだけだと言っています。
0183デフォルトの名無しさんNGNG
81の作った関数の中で
一番引数が多かったものって
何個くらいあるの?

もしかしてコードを書いたことないの?
018481NGNG
配列型というから抵抗があるのかな?
並列型オブジェクト指向と命名してあげよう。
0185デフォルトの名無しさんNGNG
じゃあ、超クラスとか言ってたのはなんなんだよ。
違いが無いって事はメリットが無いって事か?
018681NGNG
>>175
10個くらい
0187デフォルトの名無しさんNGNG
並列型オブジェクト指向と命名してあげよう。
こいつ頭悪すぎる。
0188デフォルトの名無しさんNGNG
>>186
どんな関数?
0189デフォルトの名無しさんNGNG
182
デザパタは結果論って切り捨てる根拠は何?
立てか横かだけ?
Gof読んだ?コード書いた?
0190デフォルトの名無しさんNGNG
引数10個ってけっこう複雑な関数だな
0191デフォルトの名無しさんNGNG
>>189
まあまあ、マターリ行きましょう
0192デフォルトの名無しさんNGNG
>>178
どーでもいいから自分で新しいものを生み出せって。
ただし「新しいもの」だぞ。
0193デフォルトの名無しさんNGNG
>10個くらい
どういう関数だよ。
本当に作ったのか?
019481NGNG
int max(int a,int b,int c,int d....){
略
}
0195デフォルトの名無しさんNGNG
アホ決定だな
0196デフォルトの名無しさんNGNG
>>194
引数の中から最大のものを取得する関数か?
俺だったら引数を配列、もしくはコレクション等にするか
配列、コレクションにgetmaxメソッドを持たせるが
君の方法だとどうなるのかね。
0197デフォルトの名無しさんNGNG
>>194
ワラタ
0198デフォルトの名無しさんNGNG
81は引きこもり暦何年目ですか?
0199デフォルトの名無しさんNGNG
81は逃走か。
オブジェクト指向のメリットは情報隠蔽とポリモーフィズムなのに、
その両方が分かってない奴ははじめてみた。
0200デフォルトの名無しさんNGNG
>>196
Smalltalkなら
aCollection
  inject: (aCollection detect: [ :x | true] ifNone: [nil])
  into: [ :x :y | x max: y]
ってとこだな。
0201デフォルトの名無しさんNGNG
引数を沢山作るとスタック操作のオーバーヘッドが馬鹿にならない。
一回アセンブラ出力でも見ろ>81
0202デフォルトの名無しさんNGNG
>>201
配列の添字渡したってオブジェクト渡したって
引数の個数は同じだろ?
0203デフォルトの名無しさんNGNG
単数と集合を区別しない言語か。
LISP でいいような気がする。
0204デフォルトの名無しさんNGNG
そろそろ81は利点を「それは欠点なんです〜。(理由は無し)」とか言いそう。
今ごろ自分と普通の人との差を埋めようと必死になって調べていることだろうよ。
0205デフォルトの名無しさんNGNG
81降臨しないかな
厨房晒し祭りは楽しい

10個の引数の関数を聞き出せなかったのが悔しい。
193-195およびその他の誘導レスは全部漏れ
誘導下手かな?
0206harukaNGNG
あんまり関係ないけど引数10個のメソッドよく使ってます。
public abstract boolean drawImage( Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)
dx1 〜 sy2 をオブジェクトにしちゃうとパフォーマンスがかなり犠牲になってしまうので、
引数になっちゃうのもしょうがないと思う。

それはそうと>>81の考え方をどんどん進めていくと結果的に
アセンブラとかマシンコードで直接書けってことになってしまいそうな気がする。
0207デフォルトの名無しさんNGNG
>>206
引数をスタックに積むのにかなり大きなコストがかかるから、
構造体にまとめてポインタか参照でちょびっとだけスタックに積む方がいいよ。
0208harukaNGNG
>>207
スタックに積むのにかかるコストは、
構造体をスタックにつくってそこに値を入れる
コストと同じくらいでしかないと思います。

それにCだとスタックに構造体つくれるからまだOKだけど、
Javaだとそうはいかないのです。
0209デフォルトの名無しさんNGNG
>>208
呼び出しが1回なら同じだろうな。
100 回呼び出したら値のコピーが 1000 回発生するだろう。
0210デフォルトの名無しさんNGNG
public abstract boolean drawImage( Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)
                       ↑

ぶぅ。

0211harukaNGNG
構造体の中身を使いまわすことが多い用途だと、
構造体使うことでコピー減らせるかもしれませんねぇ。

私は>>207の「かなり大きなコストかかる」ってのを訂正したかっただけで
1000回の整数のコピーにかかるコストを気にしないといけないような環境は
あんまり考えてませんでした。
0212デフォルトの名無しさんNGNG
ポリモーフィズムってさ。
概念だけの説明じゃぁ、よくわかんないよね。。。
と言ってコードを見ても頭悪いからわかんないのよね。。。
情報隠蔽はよくわかるんだけどなぁ。誰かタチュケテ
0213デフォルトの名無しさんNGNG
俺の肛門も洗浄は必要ありません。
0214デフォルトの名無しさんNGNG
あと、デザパタってさ。
結果論じゃなくて、経験論じゃぁないの?
いや、さわりしか知らんのやけどね。頭悪いから・・・。
0215デフォルトの名無しさんNGNG
>>214
知らんとかくのなら、書き込み自体をするな
0216デフォルトの名無しさんNGNG
抽象動物クラスを継承した具象犬クラスはワンと鳴き、
猫クラスはニャ−と鳴くのがポリモ−らしいです。
0217デフォルトの名無しさんNGNG
>>216
ぶっはっはっははははははは!
0218デフォルトの名無しさんNGNG
public abstract boolean drawImage( Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)
まぁ、この関数だけ書かれても
設計が悪いんじゃないかと疑うくらいしかできないからな・・・

>dx1 〜 sy2 をオブジェクトにしちゃうとパフォーマンスがかなり犠牲になってしまうので
>1000回の整数のコピーにかかるコストを気にしないといけないような環境は
なんだか微妙な環境でやってますな。
ちなみにオブジェクトプーリングは知ってるよね?
0219harukaNGNG
>>218
オブジェクトプーリングを使うのを事実上強要するくらいなら
引数10個の方がシンプルでマシな場合も多々あるので、
引数10個ってだけでバカにするのもどうかと思って。
0220デフォルトの名無しさんNGNG
>>219
オブジェクトプーリングは、ほぼシームレスに組み込めるだろ?

関連のある変数自体はセットにしておくほうがいいと思う。
上のx,yをペアにするだけでも6個になる。

なぜ引数が多いのはいけないのかと言うと、
バグを作りやすいから。
変数を局所化するメリットが分かるなら、
直感的には正しいと思える気がするんだが。

もちろん引数10個をとらなきゃならないケースが
0だとは言い切れない。
ただ、まともにOOをやっている人間からすれば
普通は設計を疑ってかかるだろう。

とりあえず、
その関数がどういうクラスのメソッドで、
Image img
ImageObserver observer
はどういうクラスなんだ?
面倒だった無視してくれて構わない。
0221デフォルトの名無しさんNGNG
オブジェクトプーリングって何ですか?
0222デフォルトの名無しさんNGNG
>>220
http://java.sun.com/j2se/1.4/docs/api/java/awt/Graphics.html
0223220NGNG
ああ、ほんとだ。
あるんだな。

ただ、JAVA2Dはまだあまり使われてないから、
洗練されたクラスライブラリーというわけでもないと思う。

あるいはこれは、ネイティブファンクションに近いもので、
使う場合はこれをラップして使うんじゃないのか?
0224デフォルトの名無しさんNGNG
>>223
>ただ、JAVA2Dはまだあまり使われてないから、
>洗練されたクラスライブラリーというわけでもないと思う。
0225220NGNG
あぁ、Java2Dじゃないか。
ごめんよ。
指摘の仕方が陰湿だね(w

0226デフォルトの名無しさんNGNG
>>225
>ただ、Java2Dはまだあまり使われてないから、
>洗練されたクラスライブラリーというわけでもないと思う。
0227デフォルトの名無しさんNGNG
陰湿勝負ですか?w
0228デフォルトの名無しさんNGNG
オブジェクトプーリングって生成キャッシュのことですか?
0229デフォルトの名無しさんNGNG
友達いないんだろうな・・・
カワイソ
0230デフォルトの名無しさんNGNG
オイオイ、awt知らんってもしかしてjavaは殆ど知らないんでないかい?
0231デフォルトの名無しさんNGNG
>>228
全然関係ないがこのスレ見た後だから気になった。
http://pc.2ch.net/test/read.cgi/prog/1021738082/l50

× オブジェクトプーリング
○ オブジェクトプーリン
0232220NGNG
>>230
グラフィックはほとんど使わないんだよ。
データマイニングが専門なんで。
0233220NGNG
>>231
プールという単語の動名詞です。
プーリンの方が発音は良さげですが、
キャメラと言っているようなもんですな。

プーリン・・・プリンが食べたくなった。
0234231NGNG
>>232
× データマイニング
○ データマイニン

ゴメン もうやめる。
0235デフォルトの名無しさんNGNG
>>231
うん。231はそのままぷーりん、ぷーりんと呼びつづけるといいと思う。
俺は断固としてプーリングと呼ぶが。

>>232
そうか、ワリィ。DevかProの試験受けるならグラフィック必須なんどすよ。それでちょとね。
0236デフォルトの名無しさんNGNG
>× オブジェクトプーリング
>○ オブジェクトプーリン
アフォー
アフォー
アフォー

>プーリン・・・プリンが食べたくなった。
サムー
サムー
サムー



0237デフォルトの名無しさんNGNG
>>231
...ngの音は鼻濁音だ。「ング」ではないが「ン」とはもっと遠い。
関東方言のガ行の発音をする人なら「ング」と書いた方が近い。

「プーリンク゜」と書くことを提案する。
0238デフォルトの名無しさんNGNG
くだらねーネタばっかり
0239デフォルトの名無しさんNGNG
>>238
糞スレに何を期待してんだ。
0240デフォルトの名無しさんNGNG
>>239
せめてsage進行でやってほしいね
0241デフォルトの名無しさんNGNG
-------------------------->239<-------------------------------
0242 NGNG
厨房質問でごめんね。
プログラマーの人って、実際どんな仕事やってるの?
ゲームとかソフトの会社とか?
あとどんな仕事があるの?
0243デフォルトの名無しさんNGNG
>>242
許さん。
プログラミング。
そんな感じ。
プログラミング。
0244デフォルトの名無しさんNGNG
学生ですが。
0245デフォルトの名無しさんNGNG
>>242
プログラム書いてます。
仕様書もたまに書きます。
でもほとんど遊んでます。

納期は守ります。
デスマーチもたまにあります。
でもほとんど遊んでます。

不良社員でごめんね。
0246デフォルトの名無しさんNGNG
許さん。
0247デフォルトの名無しさんNGNG
毎日ネット見て遊んでいます。
0248デフォルトの名無しさんNGNG
>>219
Rectangleとまではいかなくとも、せめてPointぐらいは使ったほうがいいと思われ。
0249harukaNGNG
微妙だなあ。
drawString(str,x,y)とかでも
Pointにしたほうがいい?
0250デフォルトの名無しさんNGNG
>>249
うん。微妙だよね。

もしクライアント側がその座標点を計算したり保持したりするのにPointを使ってたり
ライブラリ側がdrawString内で結局ベクトル計算してたりしたら
drawString(str, x, y)のほうが無駄が多いよね。

また、仮に現在はdrawString(str, x, y)が全部自前でラスター描画していたとしても
後々、ハードウェアアクセラレーションを利用する外部ライブラリ等の外部ライブラリを
利用して描画する可能性があるのなら、drawString(str, point)にしておいたほうが無難かも。
drawString(str, x, y) -> _drawString(str, point)だと確実に短寿命なオブジェクトを生成/消滅
させなきゃいけないからね。
0251デフォルトの名無しさんNGNG
81、帰ってこーい。
久々に楽しい奴だったのに。
0252デフォルトの名無しさんNGNG
>>250
まあ、今回の関数の場合は
システムコールのようなもんだから、仕方無いんじゃないかな?
■ このスレッドは過去ログ倉庫に格納されています