オブジェクト指向なんかキライ!!!




1: 名無しの民 2020/06/18(木) 18:53:35.21 ID:+9+AiKkI0 BE:422186189-PLT(12015)
カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、オブジェクトの実際の型を隠蔽したりすることをいう。

 

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

一方、カリフォルニア大学バークレー校の有識者を中心とした「インターネットを作った人たち」は「階層化の有害性」として「カプセル化は絶対にやめろ」としている。

https://monobook.org/wiki/%E3%AB%E3%97%E3%BB%E3%AB%E5%8C%96(%E3%97%E3%AD%E3%B0%E3%A9%E3%9F%E3%B3%E3%B0)

25: 名無しの民 2020/06/18(木) 19:05:11.50 ID:v5+OtR/B0
>>1
オブジェクト指向で挫折した人?

 

87: 名無しの民 2020/06/18(木) 19:43:17.07 ID:4RfX+TUe0
>>1
これオブジェクト指向と全然かんけーない。

 

単に「他人の作ったコードが理解出来ないと直せない」と言ってるだけ。

 

2: 名無しの民 2020/06/18(木) 18:54:02.44 ID:+9+AiKkI0 BE:422186189-PLT(12015)
sssp://img.5ch.net/ico/folder1_03.gif
大雑把にいうと、教科書の上では素晴らしく、最初は良くても、将来的な改修の際に隠蔽されたデータにアクセスできないと解決できない問題が出てきて、非常に高確率でデスマーチに陥るというのである。医学的にいえば「手術ができない存在」であるといえる。

 

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

ソースコードが存在し改修が可能であればカプセル化しても問題ない。ソースコードがあってもライセンス的に改修できない場合や、そもそもバイナリのライブラリしかない場合などは絶望的である。

 

20: 名無しの民 2020/06/18(木) 19:02:53.35 ID:Jvy+us5d0
>>2
ゲッタセッタ使えよwゲッタセッタ実装できないほどプライベートならそれはもう本当に使ってほしくないんだろ

 

60: 名無しの民 2020/06/18(木) 19:19:27.52 ID:NZ/tgaMx0
>>59
読取専用

 

5: 名無しの民 2020/06/18(木) 18:55:59.77 ID:GFYvCpQt0
未来を見通せるなら問題ないよね

 

6: 名無しの民 2020/06/18(木) 18:56:04.84 ID:vzFM5Le30
使う人の中な変な人混じると変になる

 

7: 名無しの民 2020/06/18(木) 18:56:05.49 ID:glno2wR00
適材適所

 

8: 名無しの民 2020/06/18(木) 18:56:37.63 ID:/PEJkeeM0
これオブジェクト指向が悪んじゃないだろ
オブジェクト指向が誤解されて広まったせいだろ

 

90: 名無しの民 2020/06/18(木) 19:47:25.59 ID:K6AyMp4M0
>>8
C++のオブジェクト指向実装がそびえ立つウンコだったのや
アランケイのsmalltalkこそ本物のオブジェクト指向

 

11: 名無しの民 2020/06/18(木) 18:57:19.39 ID:vOjw9QIp0
デスマーチになって初めて設計ミスに気がつく

 

12: 名無しの民 2020/06/18(木) 18:57:32.92 ID:1sMDKXZK0
消えたデータ

 

13: 名無しの民 2020/06/18(木) 18:58:16.20 ID:JcNH+rUL0
サーバクライアントモデルだと
サーバ内部は雪駄下駄でしかアクセスできないから
カプセル化されているようなもの

 

14: 名無しの民 2020/06/18(木) 18:58:26.93 ID:Bhvulvrn0
よくある

 

15: 名無しの民 2020/06/18(木) 18:58:37.87 ID:iwvIi+PF0
人間オブジェクトを作った

 

このオブジェクトを継承した美少女オブジェクトはあらゆるプロパティを隠蔽したい

しかし変態オブジェクトは公開されるべきだ

かくしてオブジェクト指向はクソでした

 

16: 名無しの民 2020/06/18(木) 18:58:43.01 ID:3IYsxS2G0
ポリモーフィズムでみんな挫折するよねw

 

17: 名無しの民 2020/06/18(木) 18:59:09.43 ID:8urFRRnH0
業務システムでこれやるとだいたいセキュリティホールになる

 

18: 名無しの民 2020/06/18(木) 18:59:52.11 ID:I/+LJrx20
ケースバイケースだろ。プライベートなメンバ変数を定義して、その全てにSetterを用意する阿呆な設計は論外だけどな。

 

19: 名無しの民 2020/06/18(木) 19:01:57.63 ID:4RfX+TUe0
>将来的な改修の際に隠蔽されたデータにアクセスできないと解決できない問題が出てきて、

 

これってオブジェクト指向が生み出す問題ちゃうやろ?

 

21: 名無しの民 2020/06/18(木) 19:03:00.17 ID:7oQ/s3xA0
アクセサメソッド用意しとけば問題ないだろ

 

22: 名無しの民 2020/06/18(木) 19:03:06.68 ID:WIrHNbyC0
コード生成こそAIにやらせろ。いいコード書くぞ絶対。

 

27: 名無しの民 2020/06/18(木) 19:05:38.57 ID:3T+TRiDe0
>>22
問題はその精製AIを書くAIが必要な事だ

 

96: 名無しの民 2020/06/18(木) 19:54:51.02 ID:nRDRd+hB0
>>27
じゃあそのaiにai作らせれば良いじゃん

 

23: 名無しの民 2020/06/18(木) 19:03:09.60 ID:sOYbk9Ks0
玄人指向

 

24: 名無しの民 2020/06/18(木) 19:03:20.35 ID:K+8cjdSR0
未だにこの考え方が理解できない。

 

26: 名無しの民 2020/06/18(木) 19:05:13.00 ID:5nU2ZEG40
カプセル化というと噛みつかれるけど
独立性を高めるというと黙る不思議

 

28: 名無しの民 2020/06/18(木) 19:06:15.26 ID:PjOv2bl70
OOPはゴミプログラマーが混ざると破綻する

 

43: 名無しの民 2020/06/18(木) 19:13:19.30 ID:hFdxhUZd0
>>28
だな、そして、プログラマーの9割がゴミプログラマーである
ゆえに、「オブジェクト指向は愚かな考え」という結論に至る

 

69: 名無しの民 2020/06/18(木) 19:24:28.97 ID:7G1N45xv0
>>28
OOPじゃなくても破綻するでしょ

 

29: 名無しの民 2020/06/18(木) 19:06:26.79 ID:ffY+SLXo0
じゃ、カプセルホテルはいけないっていうのかよ?

 

30: 名無しの民 2020/06/18(木) 19:07:23.28 ID:82As7IuD0
オブジェクト言語は情弱→手続言語は情弱→アセンブラは情弱→機械語は情弱→???

 

94: 名無しの民 2020/06/18(木) 19:51:50.20 ID:cxAi/ail0
>>30
まさかのBASIC?

 

99: 名無しの民 2020/06/18(木) 19:57:40.53 ID:cxAi/ail0
>>94
手続言語もあったのね(;´Д`)

 

31: 名無しの民 2020/06/18(木) 19:08:28.20 ID:LABNEyUr0
そうは言うがクラス内部でしか使われないクソみたいな変数が外から見えてるようなライブラリ使いたいか?

 

34: 名無しの民 2020/06/18(木) 19:10:05.24 ID:UOgkoKsr0
>>31
触るとコンパイラ警告を出すだけで十分だと思うけどね。

 

32: 名無しの民 2020/06/18(木) 19:08:52.12 ID:j9SDv8Ue0
これこそ
考えるな、感じろ
の分野だと思ってるわ

 

33: 名無しの民 2020/06/18(木) 19:09:32.02 ID:L+wWXull0
オブジェクトベースかタスクベースかって話じゃないのか

 

35: 名無しの民 2020/06/18(木) 19:10:23.93 ID:fw6YvO8s0
そもそもカプセル化はオブジェクト指向ではない

 

36: 名無しの民 2020/06/18(木) 19:10:59.45 ID:ty/pXuON0
せめてprotectedにしておいてほしいよな

 

37: 名無しの民 2020/06/18(木) 19:11:11.20 ID:xCdanIvS0
アホがコード書くから改修が面倒になるだけでオブジェクト指向関係ないだろ

 

47: 名無しの民 2020/06/18(木) 19:15:46.94 ID:hFdxhUZd0
>>37
コードより前に設計がアホなんだろう

 

38: 名無しの民 2020/06/18(木) 19:11:25.05 ID:PjOv2bl70
この記事書いた人頭悪そう

 

39: 名無しの民 2020/06/18(木) 19:11:58.75 ID:ty/pXuON0
あとから出てきた環境では対処できないとかよくある

 

40: 名無しの民 2020/06/18(木) 19:12:12.88 ID:dvk/EClb0
全然わからん。
ガンダムでたとえてくれ。

 

62: 名無しの民 2020/06/18(木) 19:19:32.77 ID:hFdxhUZd0
>>40
宇宙でアムロが新型ガンダムを受け取って乗ったら足を操作する為の装置がなかった
宇宙で戦ってる間は問題なかったが、地上に降りることになって詰みました

 

64: 名無しの民 2020/06/18(木) 19:21:47.36 ID:dvk/EClb0
>>62
すげーわかった気がするサンキュ

 

75: 名無しの民 2020/06/18(木) 19:30:03.10 ID:WIrHNbyC0
>>40
存在が余りにヤバ過ぎるんで∀タイプを地層処分にしたら後代になって発掘されてウエポンベイに牛が詰められた。

 

46: 名無しの民 2020/06/18(木) 19:15:31.69 ID:s1FweWan0
結局COBOLが言語として一番素晴らしいつてことか

 

48: 名無しの民 2020/06/18(木) 19:16:05.56 ID:Qg7C6Duh0
他人の作ったライブラリを組み合わせてるとよく起きる

 

50: 名無しの民 2020/06/18(木) 19:17:06.52 ID:xCqRYfOo0
オブジェクトの考え方が人によって違うから

 

53: 名無しの民 2020/06/18(木) 19:17:31.40 ID:KvCDGP5u0
今はどんなのが良いの?

 

54: 名無しの民 2020/06/18(木) 19:17:57.58 ID:GcU+CHOH0
昔、通信ライブラリで送信元の情報がバッサリ消えているのがあったな。
構造体に1個追加させるのに東京と京都を往復しまくって半年かかった。

 

56: 名無しの民 2020/06/18(木) 19:18:13.51 ID:XWCN860C0
オブジェクト指向のおかげでプログラミング辞められました(´・ω・`)

 

63: 名無しの民 2020/06/18(木) 19:20:15.53 ID:+JSb6sXA0
>>57
経験ないの?

 

58: 名無しの民 2020/06/18(木) 19:18:36.16 ID:MSUA1YlL0
カプセル化すれば内部は隠蔽されていても、入出力がはっきり分かれば
それを組み合させて簡単にシステム構築できるんじゃないのか?
まあ、よくわからんが。

 

65: 名無しの民 2020/06/18(木) 19:23:02.51 ID:XWCN860C0
変数に関数なんか入れられっかっての
そんなこんなでいつもストレスが(´・ω・`)

 

67: 名無しの民 2020/06/18(木) 19:24:20.36 ID:8h6zYq6p0
俺もこの考えに賛成だ。OOPは要らなかった
では何が問題だったのか、C言語を例に上げると、
文字列操作、リスト、GC、など。
つまりGo言語に行き着くわけだが、
Go言語もなんか違うんだよなw

 

68: 名無しの民 2020/06/18(木) 19:24:26.20 ID:hnDTPzdU0
バカっぽい議論だな

 

70: 名無しの民 2020/06/18(木) 19:24:30.65 ID:2qAhmW/e0
データ構造にメスを入れるならオブジェクト指向じゃなくても大改修にならないか
影響範囲をつかみを把握しづらいことを指摘してるのかな

 

74: 名無しの民 2020/06/18(木) 19:29:29.29 ID:cMMgOIUs0
C++に挫折して、TURBOPascalでプログラミング勉強したんだけど、
おかげで意識せずオブジェクト化という概念を最初から理解できたと思う。
C++に固執してたら何一つ理解せずに終わってたかな。
あれは自由すぎてプログラミング言語としては最悪だね。

 

76: 名無しの民 2020/06/18(木) 19:30:06.77 ID:cb/ToC5A0
情報系じゃないからよく分からないけど、変数とは何かちがうのか。

 

77: 名無しの民 2020/06/18(木) 19:30:30.47 ID:TY6jecqS0
カプセル化しっかりしてなかったらその前にデスマーチなのでは

 

78: 名無しの民 2020/06/18(木) 19:33:06.87 ID:cMMgOIUs0
業務システム作るだけのプログラマなら、最初からデルファイやC#やJAVAで
はっきりとしたオブジェクトプログラミングしてればいいし、他人の作った定義をそのまま鵜呑みにしてればいいだけ。

 

80: 名無しの民 2020/06/18(木) 19:33:28.93 ID:om5DhezL0
継承が諸悪の根源

 

82: 名無しの民 2020/06/18(木) 19:34:01.02 ID:8h6zYq6p0
RDBとOOPのインピーダンスミスマッチ
性能問題がついてまわる

 

83: 名無しの民 2020/06/18(木) 19:35:00.48 ID:zeC9N7+u0
外面さえ合わせてしまえば、中はある程度自由に書けるのが利点かと思ってた
継承しすぎるとわけわからんのは困りものだけど

 

84: 名無しの民 2020/06/18(木) 19:36:45.70 ID:cMMgOIUs0
諸悪の根源はC++だろ。オブジェクト自体の定義も自分でできてしまうような自由さが、むしろ初心者プログラマの理解を阻む。
そもそもアメリカではエリートしか使わないような言語なのに、JAVAが出てくるまで日本では、文系Fランや専門卒すらこれで
プログラミングさせてたから最悪。なんでデルファイが日本ではやらなかったのか本当に疑問よ。

 

93: 名無しの民 2020/06/18(木) 19:50:23.77 ID:hFdxhUZd0
>>84
諸悪の根源は言い過ぎだと思うけど、エリートしか使っちゃいけない言語だよなC++は

 

85: 名無しの民 2020/06/18(木) 19:36:46.60 ID:om5DhezL0
関数オブジェクトなんて定義してるプロジェクトには近づくな

 

88: 名無しの民 2020/06/18(木) 19:45:45.02 ID:x128P+iG0
ヘヴィーオブジェクトとはなんだったのか

 

89: 名無しの民 2020/06/18(木) 19:45:52.29 ID:cb/ToC5A0
CPUの種類毎にバイナリデータは変わる事があるはずなのに、バイナリデータしかないというのは謎

 

100: 名無しの民 2020/06/18(木) 19:57:49.59 ID:Qg/sBPcn0
全部パブリックだから大丈夫です

 


引用元

https://hayabusa9.5ch.net/test/read.cgi/news/1592474015/-100




コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です