1: こんせんくん(北海道) [US] 2020/10/29(木) 17:27:15.72 ID:VloW4LSc0 BE:422186189-PLT(12015)
■危険性

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

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

大雑把にいうと、教科書の上では素晴らしく、開発を始めた最初のうちは良いが、将来的な改修の際に隠蔽されたデータにアクセスできないと解決できない問題が出てきて、非常に高確率でデスマーチに陥るというのである。

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

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

https://www.google.com/search?q=%E3%AB%E3%97%E3%BB%E3%AB%E5%8C%E3%AF%E6%9A%E3%8B%E3%AA%E8%83%E3%88
98161465156

2: こんせんくん(北海道) [US] 2020/10/29(木) 17:27:25.99 ID:VloW4LSc0
■ 実例

XNA(MonoGame)では標準で3Dモデルを手軽に扱えるModelクラスが用意されている。 1行で読み込み、1行で描画できる素晴らしいものだ。

ただしこのModelクラスを使うと頂点データは遮蔽されておりアクセスできない。 物理演算エンジンに食わせるのにどうしても頂点データが必要なのにだ。

世界中の誰もが同じ問題で悩んでいるようでstackoverflowに回避策が書いてあった。内部でGPUへ送信したときに使用したGPUにアクセスする関数ポインタは公開されているのでGetData関数でそのまま返してもらうトリッキーなコードでめでたく回避できた。

しかし、時は流れこの方法では動かない環境が登場した。iOSやAndroidだ。こいつらが採用するOpenGL ESはGPUとの通信が一方通行だ。そこで事前に3Dモデルから頂点データを抜き出し別ファイルに保存しておくという一段とトリッキーな方法で回避する。みごと1モデルのファイルが2個になりました。

さらに時は流れた。あるとき謎の不具合が発生。連日連夜のデバッグ作業。原因は片方のファイルの更新を忘れていただけでした。

カプセル化は恐ろしいね!!

6: 77.ハチ君(茸) [JP] 2020/10/29(木) 17:28:49.31 ID:5IndXl6q0
JavaScriptの大流行でやっと認知されだしたよな。

81: おばこ娘(秋) [US] 2020/10/29(木) 17:59:30.61 ID:jSpQC2Mx0
>>6
そういう世界線もあるのか

134: バンコ(ジパング) [DE] 2020/10/29(木) 18:39:25.32 ID:fdjvymRN0
>>6
今ってJavaScriptが一番人気なの?

136: OPEN小將(茸) [UA] 2020/10/29(木) 18:40:59.93 ID:MLpU3fwa0
>>134
web実装が多いと言う話。
nodeでも使うけどさほどメジャーではないし。
たとデジタル放送でも使われてる。

139: バンコ(ジパング) [DE] 2020/10/29(木) 18:45:10.70 ID:fdjvymRN0
>>136
なるほど

286: トラムクン(栃木県) [IT] 2020/10/29(木) 23:36:10.67 ID:fsxyFAxi0
>>6
JavaScriptはそもそもの設計がうんち

8: UFO仮面ヤキソバン(北海道) [US] 2020/10/29(木) 17:29:56.65 ID:eSPW3y+W0
C++とJavaの全盛期に言おうものならフルボッコだったが、
PythonとJavaScriptの流行でやっと認められた感じだな。

223: ピザーラくんとトッピングス(東京都) [US] 2020/10/29(木) 20:53:16.82 ID:Mb6cVPXR0
>>8
JavaScriptでオブジェクト指向やろうとしたら、死にそうになるからな

255: エビオ(東京都) [JP] 2020/10/29(木) 22:44:17.24 ID:TayKfu5y0
>>223
TypeScript「そやろか?

9: UFO仮面ヤキソバン(北海道) [US] 2020/10/29(木) 17:30:11.41 ID:eSPW3y+W0
staticおじさんは元気かな

10: ヨドちゃん(茸) [JP] 2020/10/29(木) 17:31:04.17 ID:g02MqgRF0
関数型ばかりになったな

16: メトポン(東京都) [ニダ] 2020/10/29(木) 17:33:00.49 ID:GKOQE5/X0
オブジェクト指向がどうこうより、ソースいじれない構造がクソっていうだけだろ

27: 雪ちゃん(神奈川県) [US] 2020/10/29(木) 17:37:04.64 ID:JWNacdqd0
>>16
せやかてAPIやライブラリなど
到底全員が全体を理解できないものをいじってろくな結果になるとも思えないけど

30: ポリタン(茸) [JP] 2020/10/29(木) 17:38:21.93 ID:w+Ke+94P0
>>16
バイナリしか提供されない市販のライブラリとか絶望的だわな

39: DD坊や(大阪府) [US] 2020/10/29(木) 17:42:17.20 ID:rObI4gHO0
>>30
そんなんコストダウンのために利用するんだからデメリットがあって当然だよね
嫌なら自分で全部書けと

49: 犬(北海道) [ニダ] 2020/10/29(木) 17:45:36.56 ID:c9Htp/eL0
>>39
そういうこっちゃ

42: やなな(東京都) [BR] 2020/10/29(木) 17:42:49.17 ID:nkc7EyeW0
>>16
それ。
継承しようと思ったらfinal classだったとか。

71: ニッセンレンジャー(神奈川県) [US] 2020/10/29(木) 17:53:27.97 ID:M91RCl6G0
>>16
ならpublicにすればいいだけじゃんジャン

19: マルちゃん(茸) [CN] 2020/10/29(木) 17:33:37.27 ID:AUftg6Zi0
フラットなPHP型が最高だよ

25: ミミちゃん(神奈川県) [US] 2020/10/29(木) 17:36:35.81 ID:FBTnISjd0
じゃあ何指向がいいのよ?それ言えよ

28: ルミ姉(長野県) [ニダ] 2020/10/29(木) 17:37:26.10 ID:ZA3ZlrC70
じゃあサブジェクト思考で行くわ

34: バヤ坊(SB-Android) [US] 2020/10/29(木) 17:39:12.45 ID:8ZiyWkba0
オブジェクト指向ってのが流行ってすぐ同じこと思ったわ
デバッグできないブラックボックスは使うべきじゃない

37: Kちゃん(ジパング) [US] 2020/10/29(木) 17:40:07.25 ID:pH9clFce0
>>34
デバッグできないのはオブジェクト指向となんの関係もなくね

41: 健太くん(東京都) [US] 2020/10/29(木) 17:42:26.62 ID:2R/r/2Cc0
>>37
正確にはそうだけど、代表的なオブジェクト指向言語にprivate属性がある以上大まかには正しい言説なんじゃないの?

64: Kちゃん(ジパング) [US] 2020/10/29(木) 17:51:15.48 ID:pH9clFce0
>>41
スコープの話とオブジェクト指向は話違うと思うよ

166: デ・ジ・キャラット(茸) [BR] 2020/10/29(木) 19:09:58.74 ID:WX+5Aj+k0
>>41
別にprivateだからデバッグできないとかないけど

36: 和歌ちゃん(神奈川県) [US] 2020/10/29(木) 17:39:56.70 ID:mnGdnCKC0
インターフェースは全てを解決する
コードの手間は増大する

58: ちかまる(茸) [ニダ] 2020/10/29(木) 17:49:00.78 ID:f1pUBxRP0
試行錯誤する用途には絶望的に向いていないからな

59: ちかまる(茸) [ニダ] 2020/10/29(木) 17:49:28.63 ID:f1pUBxRP0
だからウェブはjs
AIではpythonが流行った

63: ルミ姉(茸) [JP] 2020/10/29(木) 17:50:25.98 ID:lPVtNgtR0
直接見せたくない/触らせたくないから隠蔽しているのであって

見たいなら理由込みでAPI追加してくれってのが筋だと思うがなぁ

70: マックス犬(ジパング) [KR] 2020/10/29(木) 17:53:00.20 ID:xRiTL+w40
結構前から言われてたよな。
でも、ずっとそれでやってきてるから今更変われねぇわ。
若い世代の奴ら頼むわ。

77: サン太郎(東京都) [CA] 2020/10/29(木) 17:56:08.40 ID:tQzbMxVN0
>>70
オブジェクトの設計資料とソースがちゃんと残ってりゃ問題にならないんだよ
アジャイルとか騒いで必要な資料も残さない、何処かからバイナリ借りてきても記録を残さないから訳ワカメになるんだよ

82: マックス犬(ジパング) [KR] 2020/10/29(木) 18:00:17.32 ID:xRiTL+w40
>>77
アジャイルさせられたよ。
最初に期限決めます。要件定義は口頭とメモ、基本設計さえなくせって言い出す始末で品質悪いってキレられてプロジェクト抜けたわ。

84: こんせんくん(北海道) [US] 2020/10/29(木) 18:01:46.71 ID:VloW4LSc0
>>82
設計図なしでタワーマンション建築するくらい無謀だなw

85: サン太郎(東京都) [CA] 2020/10/29(木) 18:02:04.25 ID:tQzbMxVN0
>>82
正解

74: 和歌ちゃん(神奈川県) [US] 2020/10/29(木) 17:55:19.08 ID:mnGdnCKC0
カプセル化されたクラスを
リフレクションで丸裸にしてしまう背徳感

75: とこちゃん(SB-iPhone) [US] 2020/10/29(木) 17:55:27.78 ID:0AZl9SjM0
自社製品の開発ならそれなりに意味はあるんじゃね?
インデントでやるのはアホだと思う

76: Qoo(滋賀県) [US] 2020/10/29(木) 17:55:53.02 ID:kDXbnjsa0
答えはひとつで「馬鹿にやらせるな」

79: ドコモン(茸) [RO] 2020/10/29(木) 17:57:30.15 ID:KzRlyB+r0
結論

臨機応変

89: ピョンちゃん(SB-iPhone) [AU] 2020/10/29(木) 18:04:11.42 ID:fFgsBdL20
確かに画像解析AIのソースコード見たらJavaスクだったりしたのを見たらな

98: 御堂筋ちゃん(長野県) [IT] 2020/10/29(木) 18:10:04.42 ID:tsis4rnE0
オブジェクト指向は再利用が可能というけど再利用なんてしたことがない

101: 雪ちゃん(神奈川県) [US] 2020/10/29(木) 18:11:49.02 ID:JWNacdqd0
>>98
わかる
再利用なんかしたことない

どっかの神が作成したかしらないライブラリを手探りで使ったことはあるけど

99: ピーちゃん(千葉県) [US] 2020/10/29(木) 18:10:11.85 ID:DCLt/bKL0
上から下まで1人で作れりゃ問題ないがんなことできん。そんでライブラリの問題でコケるのもままありカプセルヘイト

108: やきやき戦隊ニクレンジャーNEO(大阪府) [US] 2020/10/29(木) 18:15:52.22 ID:ep7jcUrG0
新型コロナ蔓延のいま、時代はGOTOプログラミングか

109: 雪ちゃん(神奈川県) [US] 2020/10/29(木) 18:16:14.58 ID:JWNacdqd0
オブジェクト指向でなぜつくるのか

を読んでもなぜなのかさっぱり理解できなかったわ

114: おたすけケン太(東京都) [EU] 2020/10/29(木) 18:19:22.32 ID:qesrA6ct0
プログラムなんかコンパイルすればGOTOだらけなんだよ


no title

no title

no title

303: ファーファ(愛知県) [US] 2020/10/30(金) 00:20:22.96 ID:v06S4SDF0
>>114
アセンブラに落とせばそうなるのは当たり前だが、そう言うことではない

116: ちびっ子(ジパング) [US] 2020/10/29(木) 18:20:18.28 ID:ds0LrUWE0
IT土方離れて久しいけどオブジェクト指向とかまだ言ってるの?

118: 雪ちゃん(神奈川県) [US] 2020/10/29(木) 18:22:11.47 ID:JWNacdqd0
>>116
コーダーなんて職業はすべてAIに取って代わってロボットが人類を滅ぼしたときいたが

120: カバガラス(岩手県) [US] 2020/10/29(木) 18:25:36.98 ID:fdI6S+Zv0
>>118
正解を導き出せる完璧な仕様書が必要になってしまうわw

131: サン太郎(東京都) [CA] 2020/10/29(木) 18:35:21.51 ID:tQzbMxVN0
>>120
昔のCOBOLの詳細設計書みたいに
一言一句プログラムに落とせるような物を書けって話なのかな?wwww

流石に、あのCOBOLの詳細設計書は無駄だぞw

138: バンコ(ジパング) [DE] 2020/10/29(木) 18:44:12.70 ID:fdjvymRN0
>>116
俺も90年前半にバイトでCプログラマーをやってた
MS-DOS環境のC言語しか知らない
あとBASICとCOBOL

141: サン太郎(東京都) [CA] 2020/10/29(木) 18:46:37.08 ID:tQzbMxVN0
>>138
実はCOBOLって今でも仕事沢山あるぞw
基本的に若い奴居ないらしいので、年齢は気にしなくて良いし
金回りのシステムなので、単価も悪くないって聞いた

149: マーシャルくん(東京都) [KR] 2020/10/29(木) 18:56:04.88 ID:9/4krDfx0
>>141
一人月単価60万以下程度でいいなら、いいんじゃない?w

157: サン太郎(東京都) [CA] 2020/10/29(木) 19:03:59.33 ID:tQzbMxVN0
>>149
1度引退したCOBOL屋さん向けだしねw

140: あんらくん(大阪府) [JP] 2020/10/29(木) 18:46:16.76 ID:n8rqt3aU0
クローズドソースで内部データを追えないこととごっちゃにしてる奴がいるなw

148: マーシャルくん(東京都) [KR] 2020/10/29(木) 18:54:55.70 ID:9/4krDfx0
>>140
>クローズドソースで内部データを追えないこととごっちゃにしてる奴がいるなw
そういう話じゃないの?
オープンソースでオブジェクト指向なら、何も問題ないと思うんだが

150: パレオくん(静岡県) [US] 2020/10/29(木) 18:56:21.87 ID:vV3WyIC30
カプセル化自体は悪くなくね?
必要になったらprivateからpublicにすればいいんじゃないの

182: 星犬ハピとラキ(光) [US] 2020/10/29(木) 19:30:25.10 ID:dHbxEoa10
最近多いんだよね、JAVAとかちょっとかじった程度で「俺プログラマーやってます」って顔する子
最初の入り口がオブジェクト指向なんだよね、最近の子って
そんなんじゃ使い物にならねぇっての

183: 雪ちゃん(神奈川県) [US] 2020/10/29(木) 19:33:08.52 ID:JWNacdqd0
>>182
JAVAとかちょっとかじってるだけマシでは?
職業訓練校でHTML習っただけでの元板前とか拾ってきてプログラマーやってますって顔させてる会社とかたくさんあるけど

186: イチゴロー(埼玉県) [ニダ] 2020/10/29(木) 19:53:51.04 ID:pjIu4TGr0
>>182
Cかじった程度でもだめですか?
別にプログラマなんてやりたくないけど

195: サン太郎(東京都) [CA] 2020/10/29(木) 20:12:40.96 ID:tQzbMxVN0
>>182
このホリエモンモドキの台詞も使えない状況なんだよな~ww
java齧ってたら凄いって時代を作者は予見しようが無いもんなw

200: りゅうちゃん(埼玉県) [RU] 2020/10/29(木) 20:15:21.32 ID:35Mbc6tG0
>>182
javaならいいじゃねーかw
pythonをちょっとやるくらいの俺よりいい

269: はずれ(東京都) [US] 2020/10/29(木) 23:02:48.52 ID:6yQpBlWI0
すべてのプログラムをアルファベットで表現しようとするから
天才以外脳がおいつかんのよ

階層化はグラフィカルで知覚できるようにせんと

334: UFO仮面ヤキソバン(ジパング) [FR] 2020/10/30(金) 08:09:25.94 ID:D+thEKoB0
じゃあどうするのが正解なんだ?
もっとすばらしいプログラミング言語作ってくれよ

343: りそな一家(神奈川県) [US] 2020/10/30(金) 09:26:53.87 ID:E92kKqaM0
>>334
言語じゃねーよ
1960年代から言われているように本来は共通化された設計手法が確立される事が大事

実装方法(言語)なんて時代と共に変わるんだから、そんなのはどうでもいい

338: さっちゃん(大阪府) [US] 2020/10/30(金) 08:17:39.57 ID:d9MVI2b10
ライブラリ使うなって話になりますやん

344: ベスティーちゃん(大阪府) [EU] 2020/10/30(金) 09:49:22.13 ID:+DJBvL4P0
オブジェクト指向がいいか悪いかじゃなくて、privateがダメって話じゃねーか

345: サン太郎(埼玉県) [US] 2020/10/30(金) 09:50:14.98 ID:gICYzdje0
そんなアナタにprotected





引用元:https://hayabusa9.5ch.net/test/read.cgi/news/1603960035/