- 1 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:27:15.72 ID:VloW4LSc0
■危険性
かつて偏差値の低い学校向けの情報処理系教科書において「カプセル化は大変すばらしいものであり絶対に使うように」と大体的に宣伝された。
一方、カリフォルニア大学バークレー校の有識者を中心とした「インターネットを作った人たち」は「階層化の有害性(RFC 3439)」として「カプセル化は絶対にやめろ」としている。
大雑把にいうと、教科書の上では素晴らしく、開発を始めた最初のうちは良いが、将来的な改修の際に隠蔽されたデータにアクセスできないと解決できない問題が出てきて、非常に高確率でデスマーチに陥るというのである。
オブジェクト指向の発案者であるアラン・ケイもコーディング規約(頭文字にアンダースコアを付けるなどの命名規則)で縛る程度にすることを推奨しており、アラン・ケイが関わったオブジェクト指向プログラミング言語にはどれも「private」などという概念はない。
ソースコードが存在し改修が可能であればカプセル化しても問題ない。ソースコードがあってもライセンス的に改修できない場合や、そもそもバイナリのライブラリしかない場合などは絶望的である。
- 2 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時: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個になりました。
さらに時は流れた。あるとき謎の不具合が発生。連日連夜のデバッグ作業。原因は片方のファイルの更新を忘れていただけでした。
カプセル化は恐ろしいね!!
- 3 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:28:01.39 ID:VloW4LSc0
- ■仕様変更
それは雲の上で決まったことなので底辺社畜のITドカタにはどうすることもできない。
意見を言おうにも雲の上にいる奴らの顔すら知らない。
それこそが階層化で起きることだ。 - 4 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:28:21.10 ID:tprUrHZG0
- staticおじさん
- 5 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:28:46.11 ID:9Dv+SCcd0
- まじかよエドガーダイクストラ赦すまじ
- 6 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:28:49.31 ID:5IndXl6q0
- JavaScriptの大流行でやっと認知されだしたよな。
- 7 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:29:08.42 ID:ENk3bgPp0
- union
- 8 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:29:56.65 ID:eSPW3y+W0
- C++とJavaの全盛期に言おうものならフルボッコだったが、
PythonとJavaScriptの流行でやっと認められた感じだな。 - 9 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:30:11.41 ID:eSPW3y+W0
- staticおじさんは元気かな
- 10 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:31:04.17 ID:g02MqgRF0
- 関数型ばかりになったな
- 11 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:31:05.85 ID:/CN8V0bF0
- 排便メソッド
- 12 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:31:27.52 ID:ukRQaGj70
- 型付の関数型ってないの?
- 17 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:33:18.56 ID:yVvr5QKs0
- >>12
scala - 13 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:31:42.15 ID:GRVbgFxS0
- このスレ定期的に見るね!
- 14 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:32:30.77 ID:BHGBc/jT0
- 信教の自由
- 18 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:33:31.53 ID:fLacsduL0
- >>14
それな - 15 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:32:51.61 ID:yVvr5QKs0
- プログラマ「gotoは4ね!」
- 16 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:33:00.49 ID:GKOQE5/X0
- オブジェクト指向がどうこうより、ソースいじれない構造がクソっていうだけだろ
- 27 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:37:04.64 ID:JWNacdqd0
- >>16
せやかてAPIやライブラリなど
到底全員が全体を理解できないものをいじってろくな結果になるとも思えないけど - 30 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:38:21.93 ID:w+Ke+94P0
- >>16
バイナリしか提供されない市販のライブラリとか絶望的だわな - 39 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:42:17.20 ID:rObI4gHO0
- >>30
そんなんコストダウンのために利用するんだからデメリットがあって当然だよね
嫌なら自分で全部書けと - 42 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:42:49.17 ID:nkc7EyeW0
- >>16
それ。
継承しようと思ったらfinal classだったとか。 - 19 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:33:37.27 ID:AUftg6Zi0
- フラットなPHP型が最高だよ
- 20 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:34:21.93 ID:boL0uV0t0
- 日本のIT技術者が育たなかった一つの理由に間違いない
- 21 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:34:41.76 ID:Cvj3RMSq0
- friend 100個できるかな?
- 22 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:34:51.81 ID:d9/eOc1d0
- まあ確かに
サブルーチンでいいじゃん
僕はコボラー - 23 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:35:13.84 ID:+AHYpIGV0
- オブジェクト指向は色々おかしいからな
- 24 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:36:08.24 ID:EAVlDNF70
- 関数型ってコボルの書き方そのものなのに驚くよね
- 25 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:36:35.81 ID:FBTnISjd0
- じゃあ何指向がいいのよ?それ言えよ
- 26 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:36:45.92 ID:A3q2hrZR0
- プログラマー自体がおかしいからな
買おとか臭いとか - 28 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:37:26.10 ID:ZA3ZlrC70
- じゃあサブジェクト思考で行くわ
- 29 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:37:37.03 ID:DJH5ngBj0
- unityも超高速化のために「オブジェクト指向を排したc#」という方向に突撃しだしたからな。
- 35 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:39:30.05 ID:ys8MnAEo0
- >>29
バーストコンパイラーとエンティティシステムな - 31 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:38:23.37 ID:5MT+pcx+0
- ちょっとなに言ってるのかよくわからない
- 32 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:38:49.58 ID:Gb6AQio30
- 最近はコンポーネント指向ってのが流行ってるんだろ
知らんけど - 33 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:38:53.80 ID:zwDdSilv0
- そもそもオブジェクトって何だよ?
- 34 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:39:12.45 ID:8ZiyWkba0
- オブジェクト指向ってのが流行ってすぐ同じこと思ったわ
デバッグできないブラックボックスは使うべきじゃない - 37 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:40:07.25 ID:pH9clFce0
- >>34
デバッグできないのはオブジェクト指向となんの関係もなくね - 41 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:42:26.62 ID:2R/r/2Cc0
- >>37
正確にはそうだけど、代表的なオブジェクト指向言語にprivate属性がある以上大まかには正しい言説なんじゃないの? - 36 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:39:56.70 ID:mnGdnCKC0
- インターフェースは全てを解決する
コードの手間は増大する - 38 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:40:48.84 ID:tw76Aiwp0
- クラス内部の見えない状態変数で関数の挙動が変わるとか
デスマーチ必死だわなw - 40 名前:番組の途中ですが翡翠の名無しがお送りします 投稿日時:2020/10/29(木) 17:42:24.32 ID:VSSE13eu0
- メンバ変数に依存してメンバ関数の挙動が変わるんだぜ?
「オブジェクト指向」は愚かな考え

コメント