X



オブジェクト指向ってクソじゃねぇかよPart4
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
垢版 |
2019/04/28(日) 23:38:35.09ID:URSBxRTf
無理やりオブジェクト指向にしたから出てきた問題を解決して凄い凄い言ってるだけ。
単なるマッチポンプ。


カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、
オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、
オブジェクトの実際の型を隠蔽したりすることをいう。

偏差値の低い学校向けの情報処理系教科書において「大変すばらしいものであり絶対に使うように」と大体的に宣伝された。

一方、カリフォルニア大学バークレー校の有識者を中心としたインターネットを作った人たちは「階層化の有害性」として
「絶対に使うな」としている。大雑把にいうと、その時は良くても、将来的な改修の際に隠蔽されたデータに
アクセスできないと解決できない問題が出てきて、結果的にデスマーチに陥るというのである。

オブジェクト指向の発案者であるアラン・ケイもコーディング規約(頭文字にアンダースコアを付けるなどの命名規則)で
縛る程度にすることを推奨しており、アラン・ケイが関わったオブジェクト指向プログラミング言語にはどれも「private」
という概念はない。

https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96

前前前スレ
オブジェクト指向ってクソじゃね?
https://mevius.5ch.net/test/read.cgi/tech/1535085129/

前前スレ
オブジェクト指向ってクソじゃねぇよ? Part2
https://mevius.5ch.net/test/read.cgi/tech/1539872441/

前スレ
オブジェクト指向ってクソじゃねぇかよPart3
https://mevius.5ch.net/test/read.cgi/tech/1542884872/
0894デフォルトの名無しさん
垢版 |
2019/10/05(土) 09:39:23.97ID:lxRUxp6u
フン族のアッティラは最強
あまりにも強すぎて「堕落した人に神が下した罰」と言われていた

つまり、オブジェクト指向は堕落したプログラマに神が下した罰なんだよ
0896デフォルトの名無しさん
垢版 |
2019/10/05(土) 14:10:17.26ID:6kmCxdz0
>>891
静的なオブジェクトしか生成出来ないクラスであってクラスそのものは常に静的な存在なんだよ?
つうか、クラス≡コードで実行時のワーク≡オブジェクトだから、クラスは常に単一な存在。
わかった?
0897デフォルトの名無しさん
垢版 |
2019/10/05(土) 14:25:04.56ID:9LDqHcOt
>>885
チンポは自分の意思で勃起する、チンポは誰の指図も受けない。
0899デフォルトの名無しさん
垢版 |
2019/10/05(土) 15:20:59.62ID:0WeqN8Y0
ぼくも性的なクラスに入って性的なメソッドを勉強したいです
0900デフォルトの名無しさん
垢版 |
2019/10/05(土) 17:02:58.04ID:BVpkxdVd
再利用できるようにと、何もかもグローバル変数に詰め込んだり。
複数人が同じファイルにコードを追加する形になる共通化?とかもうウンザリ。
0901デフォルトの名無しさん
垢版 |
2019/10/05(土) 20:23:18.25ID:YH2aFfQo
昔staticメソッド禁止の開発やったことあるけど
そのうちコンストラクタに処理を書くやつが現れて
int hoge = new Hoge(1, 2, 3).getResult();
こんなコードまみれになってしまった
0904デフォルトの名無しさん
垢版 |
2019/10/05(土) 20:39:28.28ID:uMdI2g4g
オブジェクト指向で重要なのは、『独立した知能回路』であり、俺の股間に付いているのだ!
0905デフォルトの名無しさん
垢版 |
2019/10/05(土) 20:44:05.51ID:Vfe/Rb+X
処理に関係するパラメータが一か所にまとまっててすごく見やすい
入力に対して出力がいつも一定
基本状態がないからデバッグがすごく簡単
呼ばれる処理が1種類なのが確実
変な依存関係ができないように別クラスとかに定義できる

メリットしかない
むしろクラスメソッドの利点がわからんわ
0906デフォルトの名無しさん
垢版 |
2019/10/05(土) 22:06:30.51ID:uV9UQ90R
>>901
うわぁ...御愁傷様。
間違ったオブジェクト指向事例集とか言う記事があったら是非、紹介したくなる内容ですね。

>>905
スレタイがスレタイなので、ごめんなさい、失礼承知で質問させてください...。
それ、本気ですか?それとも、staticおじさんみたいなネタですか?
0908デフォルトの名無しさん
垢版 |
2019/10/05(土) 22:11:13.05ID:uV9UQ90R
>>905
ごめん、やっぱりストップ!
全てstaticクラスにすればいいじゃないと主張しているように勝手に思い込んでしまったのだが...もう少し詳しく!
こっちが早とちりしただけかも
0909デフォルトの名無しさん
垢版 |
2019/10/05(土) 22:26:52.57ID:uV9UQ90R
>>907
煽るって、どこの部分のこと?
突っ込みとは、誰のどれに対して?対象が色々あってわからん。
0913デフォルトの名無しさん
垢版 |
2019/10/06(日) 02:15:11.41ID:msiTBJMB
つか、体も子供のまま
老いて何も残すこともなく
土に返っていくんだろうな…
ナムアミダブツ(-人-)
0914デフォルトの名無しさん
垢版 |
2019/10/06(日) 02:23:37.42ID:msiTBJMB
嗚呼、
あはれ、秋風よ
 こころあらば 伝へてよ
あるところに、男ありて…
0915デフォルトの名無しさん
垢版 |
2019/10/06(日) 09:34:57.22ID:ZvZeq4YB
質問に答えられないって、反論できない証拠。
論破された人は「池沼」「発達障害」という言葉を使って威嚇することしかできなくなる。
まさに、論破された人の良い例だな。
0917デフォルトの名無しさん
垢版 |
2019/10/06(日) 10:34:42.23ID:VY1R7PR/
池沼は自分の考えを持たず他人の考えを受け入れないことによって最強となるが後に残るのは不毛の地である。あたり一帯を焼け野原にして文明を破壊する。
0921デフォルトの名無しさん
垢版 |
2019/10/06(日) 19:19:09.17ID:4QULAbyw
なんかスルーされてるけど、>>905の主張の方が気になる件について。
staticおじさんの主張、ほぼそのまんまじゃん。
お前はstaticおじさんのコメント欄見てこい。
0924デフォルトの名無しさん
垢版 |
2019/10/06(日) 20:06:35.95ID:FMdTw/Qr
>>923
オブジェクト指向は俺の股間で生きているぞ?
0926デフォルトの名無しさん
垢版 |
2019/10/06(日) 21:44:46.99ID:4QULAbyw
>>925

>>905
> 処理に関係するパラメータが一か所にまとまっててすごく見やすい
> 入力に対して出力がいつも一定
> 基本状態がないからデバッグがすごく簡単
> 呼ばれる処理が1種類なのが確実
> 変な依存関係ができないように別クラスとかに定義できる

スタメソのメリットの説明は、まぁ、いい。
インスタンスを生成しなくても使用できるがメリットという大きな理由に触れていないのは気になるが、そこはスルーしてやる。

> メリットしかない

ここが致命的に間違ってるわ。
インスタンスが持つ変数に直接アクセスできないのはオブジェクト指向を台無しにしかねないレベルの最大のデメリットだろ。

わからないことがあれば、質問、どうぞ。
0927デフォルトの名無しさん
垢版 |
2019/10/06(日) 21:58:22.85ID:4QULAbyw
870あたりからの会話の流れを読んでれば、905の解説をする必要性なんてないと思うのだが。
0929デフォルトの名無しさん
垢版 |
2019/10/06(日) 22:21:20.07ID:VY1R7PR/
>>926
インスタンス変数にアクセスできないことによってスレッドセーフであることを保証できるわけだからロジックを共通化する手段としてインスタンス変数を持たないクラスには存在価値があるわけですよお!?
0931デフォルトの名無しさん
垢版 |
2019/10/06(日) 22:27:53.42ID:VY1R7PR/
可変な状態を持つオブジェクトはドメインには必要ない

可変な状態が必要なのはデータ構造

データ構造は標準ライブラリやフレームワーク由来のものを使用するのが基本

オブジェクトにインスタンス変数が必要になったときは設計を見直すしかない

ドメインとデータ構造をごっちゃにするから暗黙の依存関係でぐちゃぐちゃになってオブジェクト指向使わない方がマシという事態を招く
0932デフォルトの名無しさん
垢版 |
2019/10/06(日) 22:30:20.80ID:VY1R7PR/
スタティックおじさんの感覚は概ね正しい

業務システムのコンサルタントやってる立場から言わせてもらった
0933デフォルトの名無しさん
垢版 |
2019/10/06(日) 22:36:08.14ID:KmMY+7Om
オブジェクト指向とは俺の股間で生きているそれだけで十分だ!
0934デフォルトの名無しさん
垢版 |
2019/10/06(日) 22:52:41.78ID:oAew60H6
>>929
staticメソッドの使用はオブジェクト指向の基本中の基本、オブジェクトの生成と消滅の概念を壊してしまいます。
オブジェクト指向の基本的な考え方を破壊してまで、スレッドセーフの実現手法にstatic化が適切なのかはと言われると、そうは思いません。

第一、そのような方法によるスレッドセーフ実現がありなら、「インスタンスの生成は1つまで」というルールをつくるのもありだと思います。

まぁ、私はそんな方法でスレッドセーフは実現しませんが。
スレッド間を跨ぐオブジェクトはスレッドセーフ対応コレクションやmutexオブジェクトを使って実現しますけどね。
0935デフォルトの名無しさん
垢版 |
2019/10/06(日) 23:04:52.08ID:oAew60H6
>>932
931はちょっとスルーして、先に932について尋ねますが、あなたはオブジェクト指向を否定する立場なのですか?肯定する立場なのですか?
それによって私の言うことが少し変わります。
まぁ、「実はオブジェクト指向って、しっくりこないんです」のstaticおじさん側ということは、否定だと思いますが。

それだったら、先程、オブジェクト指向の考えを破壊しかねないstaticメソッド使用は危険が伴うという指摘は、あなたにとってどうでもよかったということになりますね。

どうなのでしょう?
ちなみに、私は肯定している側です。
0936デフォルトの名無しさん
垢版 |
2019/10/06(日) 23:10:57.51ID:FMdTw/Qr
>>934

> >>929
> オブジェクト指向の基本的な考え

オブジェクト指向は俺の股間に付いている!
0937デフォルトの名無しさん
垢版 |
2019/10/06(日) 23:19:37.37ID:OshNeVUq
オブジェクト指向肯定の理由。

>>935
>あなたはオブジェクト指向を否定する立場なのですか?肯定する立場なのですか?

俺の股間に付いているのが、オブジェクト指向で無ければ何だというのか?

オブジェクト同士は常に二人称であり、オブジェクト指向では独立した知能回路が実装される。
0938デフォルトの名無しさん
垢版 |
2019/10/06(日) 23:52:01.09ID:oAew60H6
時間が時間なので、最後に...

別に、非オブジェクト指向のプログラムでstaticメソッドを使いまくるのは結構です。
ただ、そのプログラムを指差して「オブジェクト指向はクソ」と言われないようにだけしてください。

オブジェクト指向として解釈すると駄目だけど、別のプログラミング手法として解釈すると問題ないというのなら、それはそれでいいです。

>>937
あと、ちんこ哲学者さん、理由はどうであれ肯定ありがとうございます。
このスレで肯定一人は心細かったです。
ちんこ哲学については深すぎて理解が追いつきませんが。
0940デフォルトの名無しさん
垢版 |
2019/10/07(月) 01:00:53.90ID:qRqbWkkD
>インスタンスが持つ変数に直接アクセスできないのはオブジェクト指向を台無しにしかねないレベルの最大のデメリットだろ。

>staticメソッドの使用はオブジェクト指向の基本中の基本、オブジェクトの生成と消滅の概念を壊してしまいます。
>オブジェクト指向の基本的な考え方を破壊してまで、スレッドセーフの実現手法にstatic化が適切なのかはと言われると、そうは思いません。


オブジェクト指向押してる連中のこのあたりの
教科書丸写ししただけみたいな感想に寒気をおぼえた
お前は何を言ってるんだ感がすごい
0941デフォルトの名無しさん
垢版 |
2019/10/07(月) 01:01:12.17ID:sle/7Qy/
>>934
オブジェクトは動的に生成され、そして動的に消滅するのが
ブジェクト指向の基本中の基本だというのは勘違いだぞ。
0942デフォルトの名無しさん
垢版 |
2019/10/07(月) 01:06:17.07ID:qRqbWkkD
オブジェクト指向がどうという次元の問題ではない
実際にどんな局面でそれがどう問題になったのか全く想像がつかないんだ

根本的にあたまおかしい


好意的に考えてもふだんからよっぽど酷いオブジェクトの使い方してたとしかおもえん
メンバをグローバル変数代わりにしてるとか
1年生がよくやる
0945デフォルトの名無しさん
垢版 |
2019/10/07(月) 01:38:44.97ID:sle/7Qy/
多分悪い奴ではないんだよ、
でも自分で考え物事を見極める力が足りなかったんじゃないかな
よくいる。
それがオブジェクト指向宣教師にだまされ、迷信にどっぷりつかってしまったんだろ
アーメン
0947
垢版 |
2019/10/07(月) 03:22:28.30ID:cbxlkLVD
>>946
一番ヤバイのは何のためにモデリングをするのか全く理解してないところ
次にヤバイのはユーザーロールとクラスの責務を区別できてないところ
0948デフォルトの名無しさん
垢版 |
2019/10/07(月) 06:19:32.49ID:BfE/iq70
>>947
レスが下手だなw 否定するだけで案を書いてない。

俺がテンプレ書いてやるから○○に当てはめてみな

× 一番ヤバイのは何のためにモデリングをするのか全く理解してないところ
○ ○○のためにモデリングということを理解しなければいけない

× 次にヤバイのはユーザーロールとクラスの責務を区別できてないところ
○ ユーザーロールとクラスの責務を区別するために○○をしなければいけない
0949デフォルトの名無しさん
垢版 |
2019/10/07(月) 07:07:29.75ID:1E3ztz2w
ふつうは番号で管理してる紐づきを直接クラスにぶち込んだらこうなる
EntityFrameworkとか使ってたらありそう

各機能の出力画面に1対1に対応してそうだし
DB設計じゃないからいいのかもしれない
0951デフォルトの名無しさん
垢版 |
2019/10/07(月) 08:25:59.83ID:21Ng7BTy
938の書き込みを見たとき、絶対、火病起こす人が現れると思いきや案の定だった。
0952デフォルトの名無しさん
垢版 |
2019/10/07(月) 08:33:33.39ID:+Gu4JkVA
>>945
staticおじさんに洗脳されている人の方がヤバイ。
まさか、staticメソッドだけで書いたJavaコードをオブジェクト指向に則ってつくられたコードだと主張する気か?
0954デフォルトの名無しさん
垢版 |
2019/10/07(月) 08:46:30.67ID:iJ2tiwHS
staticおじさんは状態が必要ないところではstaticメソッドを使うんだという当たり前のことを言ってるだけだよ

.NETフレームワークがオブジェクトを用意してるからビジネスロジックではそれを操作するのが主で自ずとstaticメソッドでロジックを組み上げるってこと

当時はASP.NET Web Formsを使ってた、フレームワークに従って作ればそうなるよ、ややこしいことやらんでいいよって文脈だった

staticおじさんエアプか?
0955デフォルトの名無しさん
垢版 |
2019/10/07(月) 08:54:40.28ID:+Gu4JkVA
>>953
なんでやねん。
だったら質問に答えろや。

お前は全部staticメソッドで作られたコードをオブジェクト指向のコードと言い張るんか?

元の925の主張はそうだっただろ。
お前はどうなんだ?
0959デフォルトの名無しさん
垢版 |
2019/10/07(月) 09:12:19.20ID:iJ2tiwHS
危惧してるのは状態を作ればオブジェクト指向になるんだって思いがちなところ

ビジネスロジックでオブジェクトを作り出したら危険信号、データ構造とロジックの分離ができてない証拠

昨今流行りの関数型がデータ構造に処理を丸投げすることで複雑さに対処するようにオブジェクト指向でもビジネスロジックとデータ構造の見極め大事

staticメソッドは悪いものじゃない
0960デフォルトの名無しさん
垢版 |
2019/10/07(月) 09:23:22.01ID:+Gu4JkVA
>>957
staticメソッドはデメリットがない、全部staticにすれば?ってのが奴の主張
オブジェクト指向プログラマーにとってstaticにするべきではない部分までstaticにしようとするから、こんな話になったんだろ?
必要のない と見なす部分が広すぎ
0965デフォルトの名無しさん
垢版 |
2019/10/07(月) 09:51:31.82ID:+Gu4JkVA
>>962
>>905な。上の925も間違い。
>>963
そういう言語仕様レベルの話じゃなくて、実質、名前空間のようにしか扱われていないと言いたいのだろう。
正直、アレをオブジェクト指向扱いするのはどうかと思う。オブジェクト指向向け言語で書いたオブジェクト指向モドキだろ、あれ。
0966デフォルトの名無しさん
垢版 |
2019/10/07(月) 15:50:12.22ID:i6JqkWTj
もしかして...staticおじさんをただ単にstaticを使う人への煽りと解釈している人と、「実はオブジェクト指向ってしっくりこないんです!」の記事で大炎上した人という意味で解釈している人がいるんじゃないかな?
0967デフォルトの名無しさん
垢版 |
2019/10/07(月) 16:27:55.17ID:iJ2tiwHS
>>965
クラスオブジェクトに属してるんだからオブジェクトだよ
newは省略されてるだけ
名前空間とは明らかに違う

継承、ポリモー、カプセル化を使わないとオブジェクト指向じゃないとでも思ってるのかな?

クラスの存在そのものがオブジェクト指向だよ
0968デフォルトの名無しさん
垢版 |
2019/10/07(月) 17:23:04.80ID:i6JqkWTj
>>967
世の中にはC言語でオブジェクト指向なプログラムを書いている人もいるから、その理屈は少し怪しいな。
0969デフォルトの名無しさん
垢版 |
2019/10/07(月) 18:03:33.19ID:QTLP3T8x
アランケイ「オブジェクト指向発明したけどC++がやりだしたクラスなんか知らないよ」
0970デフォルトの名無しさん
垢版 |
2019/10/07(月) 18:49:05.79ID:A3f3M3xS
ストラウストラップのハゲは列挙体使うときにクラスを名前空間代わりにして使ってたな
0971デフォルトの名無しさん
垢版 |
2019/10/07(月) 19:30:59.83ID:ft7AjSjh
>>967
>クラスの存在そのものがオブジェクト指向だよ

チンポは独立した知能回路を有しているからオブジェクト指向だよな!
0972デフォルトの名無しさん
垢版 |
2019/10/07(月) 19:41:54.84ID:RwllG7mn
まずは純粋にCだけで書かれたWindowsプログラムを読んでみることをおすすめする

言語がオブジェクト指向に対応してるにこしたことはないけど、
一般人には無縁のパラダイムだよ
0973◆QZaw55cn4c
垢版 |
2019/10/07(月) 19:55:53.90ID:T0peqJ1N
>>972
あれのメッセージループの記述が、どんな教科書でも switch〜case なのは、そろそろいい加減にやめないといけない、と、強く感じているのですが…
一方、私は無駄に継承を重ねることにしました…薄い層にスライスしてメッセージループと、それ以外の関数との関係を強調する試みです
0974
垢版 |
2019/10/07(月) 20:45:15.45ID:cbxlkLVD
>>967
JavaでMath.sqrt(36)って書くとMathがクラスだからオブジェクト指向で
他言語でMath.sqrt(36)って書いてもMathがクラスじゃなくモジュールだったらオブジェクト指向じゃないってことになるね

型クラスが存在してるHaskellはオブジェクト指向そのものw
0975デフォルトの名無しさん
垢版 |
2019/10/07(月) 21:30:40.10ID:cbxlkLVD
>>949
EFとか画面単位とか関係ない
↓こういう思考ロジック

[機能概要]
出品側として、商品を出品する。
購入側として、商品を選択し購入手続きをする。

[関数シグニチャを想像]
出品する(出品者ID, 出品リスト)
購入手続きをする(購入者ID, 受け取り住所, 購入品リスト)

[クラス化]
出品者クラス: [識別ID, 出品リスト], 出品する()
購入者クラス: [識別ID, 受け取り住所, 購入品リスト], 購入手続きをする()


リレーショナルモデリングでもオブジェクトモデリングでも
エンディティやオブジェクト間の関連を無視してまともなものはできないよ
0976デフォルトの名無しさん
垢版 |
2019/10/07(月) 21:32:53.13ID:2Ro4RUKT
>>968
クラス的なものを使ってたらオブジェクト指向的なことができます怪しくないよ全然怪しくないよ
0977デフォルトの名無しさん
垢版 |
2019/10/07(月) 21:34:11.03ID:2Ro4RUKT
>>974
そのモジュールとやらをクラスとみなすことでオブジェクト指向とみなすことは可能だよ全然余裕だよ
0981デフォルトの名無しさん
垢版 |
2019/10/07(月) 21:49:54.27ID:2Ro4RUKT
Webサービスがstaticメソッドで実装されてようがインスタンスメソッドで実装されてようがWebサービスの外からはWebサービスというオブジェクトしか見えない

ケイちゃんのオブジェクト指向はそういうでっかい視点でリモートでオブジェクトが協調する姿を画いてる

ケイちゃんにとってはクラスさえ瑣末なもの
0982デフォルトの名無しさん
垢版 |
2019/10/07(月) 22:51:36.60ID:PHxdOQnu
やっぱり人間は構造化できてないものは理解できない
関係の理解も2つが限度
メッセージパッシングによるオブジェクト指向は構造化をめちゃくちゃにする
シミュレーションぐらいしか使い道がない
構造化万歳ダイクストラ万歳
0983デフォルトの名無しさん
垢版 |
2019/10/07(月) 23:09:22.21ID:gEYFs1Cq
何だっけ?大工ストライキのこーちょこちょだっけ?
0985デフォルトの名無しさん
垢版 |
2019/10/07(月) 23:18:52.25ID:RK8d645+
もりかして:ダイクストラの互除法
0987デフォルトの名無しさん
垢版 |
2019/10/08(火) 07:54:22.73ID:dANDe70p
>>954
staticおじさん、こんなこと言ってない...。
それ、staticおじさんに突っ込みを入れた人のコメントでしょ。

>理由があってstaticを使うのではなく、理由が無いからstaticを使う。
>理由が無い場合は、素直な方法を選ぶものだが、何が標準かというのが違う人なのですね。
>そこがオブジェクト指向が身についている人と、身についていない人との違いなのでしょう。

>>954はQiitaのstaticおじさんを無理して弁護してみた系の記事しか読んでいないのでは?
0989デフォルトの名無しさん
垢版 |
2019/10/08(火) 08:59:08.94ID:A8vN7xSK
状態が必要ないならstaticを使うべし
状態に依存しないクリーンなメソッドであることを表すことができる
あるメソッドは状態に依存していて、あるメソッドは状態に依存してないそれらのメソッドは別のオブジェクトにするのが良いかもしれない
staticを使用することでこのような分析も可能になる
0990デフォルトの名無しさん
垢版 |
2019/10/08(火) 09:08:00.47ID:A8vN7xSK
貧血ドメインも悪いもののように言われているが間違ってる
データ構造を工夫すればビジネスロジックは状態を持たずシンプルかつクリーンになる
0991デフォルトの名無しさん
垢版 |
2019/10/08(火) 09:11:50.67ID:A8vN7xSK
ドメインオブジェクトは状態を持たないといけないという思い込み呪いバイアスがこんにちのオブジェクト指向クソじゃないか旋風を巻き起こしてる

オブジェクト指向の本質は状態管理じゃないオブジェクトを分類することこそがオブジェクト指向
レス数が950を超えています。1000を超えると書き込みができなくなります。

ニューススポーツなんでも実況