オブジェクト指向ってクソじゃね?

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/08/24(金) 13:32:09.36ID:ifygL6bT
カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、
オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、
オブジェクトの実際の型を隠蔽したりすることをいう。

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

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

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

https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96
2018/10/10(水) 11:03:52.32ID:az2ldVPt
素人が言い切れるわけ無いだろ。常識で物を言えや
732デフォルトの名無しさん
垢版 |
2018/10/10(水) 11:48:06.40ID:00uAZtDo
ま、分かったじゃあそう思っとけ。このご時世どんなに賢ぶってもそんなに凄いプログラマーが日本に溢れてないのが透けて見えてるんだけどな。
2018/10/10(水) 12:27:49.69ID:AVL6Qil2
俺もオブジェクト指向を中途半端にかじった中途半端な優等生が、
これ見よがしに作った自社製フレームワーク(全然便利ではない)しか
見たことないわ

作ったのは一流大卒の大手ベンダーの開発推進チームなんだが、
日本人ってその程度だと思うよ

Stringクラスって便利ー!ぐらいのほうが幸せになれるぞ
2018/10/10(水) 12:30:14.49ID:AVL6Qil2
中途半端な優等生の成果物がその程度なんだから、
三流大卒のおまいらの成果物なんて推して知るべくだよな
735デフォルトの名無しさん
垢版 |
2018/10/10(水) 12:35:08.25ID:Vh7YHzSV
べつに透かさんでも直接見えるやろw変なやつw
2018/10/10(水) 12:49:50.06ID:2nqQsSqL
>>726
でもprivateだとわからないよね
2018/10/10(水) 13:52:34.56ID:VeUMq7t7
プログラミングセンスと学力ランキングは比例しないんだよなぁ
2018/10/10(水) 13:57:58.08ID:VeUMq7t7
むしろ個人の性格の方がそのまんま実装に現れて来るからな。
2018/10/10(水) 14:27:07.52ID:DTkCRDr0
学力ランキングを批判するだけなら良いぞ
だが、学力の対案は性格っていうのがダメだ
おかしな対案を出すより何も出さない方がマシ
2018/10/10(水) 17:10:39.36ID:az2ldVPt
>>736
分かる必要がないよね。

どうせ関数型だって内部メモリの構造なんてわからないんだから
2018/10/10(水) 17:55:56.61ID:DTc0bT+8
>>733
大手企業のフレームワークは派遣さんがアホなことをしないようにあえて機能を制限してる
生産性が多少犠牲になっても非常識な派遣さんがやらかしてしまうリスクを減らすことが重要と考えたんだね
そういう意味ではオブジェクト指向の基本であるカプセル化は非常に役に立っていると言える
2018/10/10(水) 18:01:10.70ID:az2ldVPt
>>741
なら派遣を使うことがリスクなのでそれをやめればいいと思います。

本当のリスクは・・・無理なコスト削減なのでは?
コスト削減のために、無駄なコストをかける。

うーん、馬鹿なのでしょうね
2018/10/10(水) 18:25:41.34ID:crjMMeGj
既存のフレームワークにケチつけたい人は
それ以上のものを作れる人なの?
それとも、作れないし作ったことも無いけどケチつけたい人なの?

煽りじゃなくて純粋な疑問
ぜひ、小学生のような瞳をしてそっと教えて欲しい
2018/10/10(水) 19:14:20.95ID:DTkCRDr0
それを教えないのが正義っていうのが情報隠蔽、カプセル化
2018/10/10(水) 19:28:47.64ID:AZXT33MT
ママ役は薄幸そうな石田ゆり子かな

異論は認める
2018/10/10(水) 19:29:51.69ID:AZXT33MT
すまん、誤爆だ
2018/10/10(水) 20:28:30.09ID:DTc0bT+8
>>742
派遣さんを切ったら中抜きで稼いでる人達が困る
派遣さんは使う、でもバカな真似はやらせたくない
このバランスが大事
2018/10/10(水) 20:31:47.32ID:1d6HAJSZ
最近は中抜きはまだまともな行為だと思えてきた。
バカがクソみたいな意見押し通してくるよりマシだ。
そういう意味でベイシックインカム賛成。
2018/10/10(水) 20:32:00.42ID:az2ldVPt
>>747
結局、中抜きで困るからっていうのが本当の理由なのね(笑)
2018/10/10(水) 21:57:06.99ID:YM9RoEIA
>>740
え?グローバル変数使わなければ戻り値か引数が全てだけど?
2018/10/10(水) 22:09:31.63ID:crjMMeGj
>>750
つ[クロージャ]
2018/10/11(木) 06:25:53.98ID:o+Pj5MkJ
有識者、燃料投下ヨロ

くだらなくてつまんない
2018/10/11(木) 17:52:18.63ID:lqVwZR/7
んじゃクロージャ出たから

オブジェクト指向で末端の人、要は上の誰かが作った仕組みやクラス使って自分はそこからオブジェクト弄るだけの人は可能な限りクロージャ使いまくった方がと思うんだよな
よく委譲処理でこのふたつどちらか選ぶ事あると思うんだが末端なら即クロージャ
2018/10/11(木) 19:53:44.01ID:hrM+9Jlq
>>714
仕事は範囲が限られているからね
その仕事でやらなければならない範囲だけ出来れば
後は何が出来ようが出来まいが関係なくなるからね
一言で言えば視野が狭い
横文字を多用する人は狭い世界で通じてそれでokになっちゃってる
多種ではないし世界が兎に角狭い
実際ゲームなんかでは敵クラスを作って敵が増えるたびにオブジェクトを生成する
ってやると感覚的に凄く簡単
2018/10/11(木) 20:31:48.13ID:m9vsKwrk
>>752
どんな話題が面白いの?
このスレ的にはオブジェクト指向のメリットが説明できなければ
終わりなんだけど
2018/10/11(木) 20:34:12.11ID:U1kKB/4M
逆でしょ?説明されれば終わりなのがいやだから
答えが出てるのに、同じことをくり返し聞く
2018/10/11(木) 20:38:52.62ID:m9vsKwrk
>>756
え?メリット出てる?
見たことないよ
毎回、バカが長文書くだけで
品質向上なのか工数削減なのか、それが起こるロジックが全くの謎
2018/10/11(木) 21:05:36.68ID:o+Pj5MkJ
犬がワン、猫がニャン
→なにそれ美味しいの?

大規模じゃないとメリット説明しにくいよ
→説明できないって、大規模なプログラムを経験して体で覚えろと?

要するに、簡単には説明できないよ
→だったら学習コストとの天秤では?

俺の中ではこんな感じ
2018/10/11(木) 21:06:47.80ID:U1kKB/4M
品質向上だし工数削減にもなる

馬鹿はそこでなぜか品質向上と工数削減のために
追加作業が増えるとダメだと話を聞かない
2018/10/11(木) 21:07:43.81ID:o+Pj5MkJ
ちな俺、初心者プログラマだけど宮廷文系
761デフォルトの名無しさん
垢版 |
2018/10/11(木) 21:48:27.62ID:29n02hV2
いわゆる土方候補生か
2018/10/11(木) 22:35:19.32ID:FTrPBrPb
>>753
関数ポインタと汎用のvoidポインタ渡すインターフェイスより明らかに良いとは思うけど、
ガベコレない言語では上手くいかんだろ。
その場合は継承させるしかないっていうc++の選択は間違いじゃない。
763デフォルトの名無しさん
垢版 |
2018/10/12(金) 00:40:23.27ID:U1NbXGxJ
>>762
そういう欠点解消するため、
結構前に拡張されたのに何で勉強しないのかねOOP厨はホントにもう
https://cpprefjp.github.io/lang/cpp11/lambda_expressions.html
764デフォルトの名無しさん
垢版 |
2018/10/12(金) 00:47:17.48ID:U1NbXGxJ
オレぐらいのレベルでないと
オブジェクト指向は使いこなせない
765デフォルトの名無しさん
垢版 |
2018/10/12(金) 00:47:48.97ID:U1NbXGxJ
だいたいわかる

低学歴知恵遅れが
ムダにオブジェクト指向あげしてる
2018/10/12(金) 00:48:51.77ID:mmIXjKhu
メリットの挙げられない技術を採用するな
2018/10/12(金) 07:03:34.63ID:ogDn0rIL
>>762
全く解消されてないだろ。。
キャプチャーしてる変数の寿命を考慮してなきゃならんし、こんなん使わねーわ。
2018/10/12(金) 08:23:50.28ID:8+F5vpV5
型の問題と寿命の問題を分離しない
OSとGUIを分離しない
フルスタックな環境を作る密結合指向って感じ
2018/10/12(金) 10:20:48.35ID:4mK9L0RW
>>768
それただの設計の問題じゃね?
2018/10/12(金) 11:04:22.00ID:8+F5vpV5
>>769
その設計にオブジェクト指向が関与していると疑われている
その問題の解決にオブジェクト指向は全く寄与しない、と宣言すれば疑いは晴れる
2018/10/12(金) 11:12:44.85ID:4mK9L0RW
>>770
いや、どう見ても設計の機能分けの問題
オブジェクト指向の前にレイヤーってあんだろ?
2018/10/12(金) 17:19:28.65ID:5jm0P0/q
オブジェクト指向信者もDI信者も同じ臭いがするね

【Java】DIコンテナって本当に便利か?
http://mevius.5ch.net/test/read.cgi/tech/1219242206/

次は何を担ぐのやら


外国で流行って育っていくのだから、それなりのメリットはあるんだろうけど、なぜか仕事では恩恵にあずかったことはない
2018/10/12(金) 20:33:03.38ID:4mK9L0RW
設計のセンスの無い奴はどんな流行が来たって糞な設計しか出来ないんだよなぁ
センスがある奴はなんとなくどんな流行のスタイルでもこなして来るからなぁ
774デフォルトの名無しさん
垢版 |
2018/10/12(金) 20:41:34.47ID:CecLyO81
どーでもいーけどコーディングの事設計てゆーのいーかげん恥ずかしくね?w
2018/10/12(金) 20:45:43.93ID:4mK9L0RW
は?
設計はコーディングじゃねーよw
四角い箱描いて矢印や電線で繋げて遊ぶ奴だぞ。
2018/10/12(金) 20:45:57.27ID:SyXP90mj
ある一定以下に対して理解できるような教範が出てこない
だから一部の人しか使えないようになってる
結局は出来る人の間で持て囃されるだけになってしまう
この何か新しいやり方を創造するのと一般に使えるようにする
というのは本来両輪なんだけど
普通以下の人達が使えるようになる教範を作る
というのはかなり難しい上に
それをやる人には余りメリットがないから
なかなか出てこない
だから
オブジェクト指向プログラミングにしても
関数型プログラミングにしてもその他の技術にしても
広く(普通程度以下)使われるのは難しいし
このスレのタイトルみたいな感想を持つしかなくなる
後は自分が出来るけど他の人が出来ないままのほうが出来る人には得だから妨害する
みたいなのが居るくらいだろうかねぇ
2018/10/12(金) 20:48:39.65ID:4mK9L0RW
あー電線繋げては遊ばないわ、危ないしw
点線の間違いだわ。
778デフォルトの名無しさん
垢版 |
2018/10/12(金) 21:12:49.59ID:CecLyO81
ガチでわかっとらん奴やったw
2018/10/12(金) 21:17:29.38ID:mCoAwEvP
>>772
DIはほんと便利
めちゃくちゃ開発が楽になった
780デフォルトの名無しさん
垢版 |
2018/10/12(金) 21:21:05.43ID:xVyRtSc0
少なくともこのスレにいるような低学歴知恵遅れのドカタには
オブジェクト指向言語を適切に使いこなせない
2018/10/12(金) 21:27:17.84ID:d1sPni1g
少なくともこのスレにいるような低学歴知恵遅れのドカタには
オブジェクト指向言語を適切に使いこなせない
2018/10/12(金) 22:41:19.80ID:F7y/wInK
>>772
テストしたことないのかい?
783デフォルトの名無しさん
垢版 |
2018/10/12(金) 23:12:30.21ID:xVyRtSc0
日銀短観のDIは便利
池沼あげのDIはtraitsなみにウンコくさい
2018/10/13(土) 10:26:58.14ID:YNebL+WU
今時DIも使いこなせない人材とか組織にとってのリスクでしか無いよ
あっちこっち結合しまくったクソコードを社内リポジトリにばらまくとか悪夢そのものじゃん
2018/10/13(土) 10:58:13.65ID:H4Y+M12v
DI使っても結合しまくったくそコードはくそのままだ
業務分析の時点でコケて役割分担がぐちゃぐちゃなんだからDI導入したって解決しない
2018/10/13(土) 21:25:17.45ID:YNebL+WU
>>785
DIを使わないから業務分析の時点でコケて役割分担がぐちゃぐちゃになるのでは?
設計者にDIを学習させてDIを使う前提で設計させればそのあたりの分担がキレイになるように意識して設計するようになるよ
2018/10/13(土) 22:13:29.66ID:An0DfPZD
>>786
それで成功した例なんてあんの?
788デフォルトの名無しさん
垢版 |
2018/10/13(土) 22:15:51.44ID:L3Dj2/gz
cのたくさんの構造体にいっぱい変数や関数ポインタもたせて
それ入力にして処理するのと同じ
2018/10/13(土) 22:29:25.59ID:HA3RUpZg
DIはたしかにきれいな設計になるが、めんどくて工数がかかる。
作業者にはYAGNIのほうが優先度高いから勝手に採用できない

だからそういうのはトップエンジニアが最初に管理方針としてきめとくもんだ
末端のプログラマーに責任押し付けるのは酷
2018/10/13(土) 22:38:19.49ID:HA3RUpZg
今のDIはめんどすぎる
既存コードをいじらないで中身をすげかえる
もっと楽な方法はないものか
2018/10/13(土) 22:42:51.86ID:An0DfPZD
DIは言語自体に組み込まれるべきもの
高級言語はどんどん高級になるべきだが
ガベコレ搭載あたりで停滞してしまったからね

本来はDIやデザインパターンやユニットテストや
フレームワークまで高級言語の仕様に含めなきゃいけない
792デフォルトの名無しさん
垢版 |
2018/10/13(土) 22:44:08.09ID:L3Dj2/gz
インターフェースを決め打ちにしたテンプレート作る間抜けな作りと
大してかわらないからな
2018/10/13(土) 22:48:54.83ID:c+yfSqJ1
使用者との合意の無いインターフェースほどクソなモンは無い
独りよがりで考えたものは全部クソなので誰にも見られないうちに捨てて欲しい
2018/10/13(土) 22:54:18.52ID:An0DfPZD
逆に言えば使用者との合意のあるインターフェースは問題ない
ということになってしまう。
2018/10/13(土) 22:59:41.42ID:c+yfSqJ1
>>794
もちろんそうだろ
2018/10/13(土) 23:21:29.03ID:An0DfPZD
>>795
あ、そうだって認めたねw

つまり、お前はインターフェースに問題があるとしようとしていたようだが、
俺はインターフェースには問題ないという話への誘導に成功したわけだ
797デフォルトの名無しさん
垢版 |
2018/10/13(土) 23:38:37.37ID:L3Dj2/gz
クソが余計なことをして
余計にクソなコードを生産するサイクルが途絶えることはない
2018/10/13(土) 23:45:30.90ID:An0DfPZD
SEが余計なことをして
クソコードを量産することになるのは
よくある話だな
2018/10/14(日) 11:01:28.22ID:RzJcTIeH
DIを使わないと結合部分に余計なコードが入り乱れて大変なんだよな
2018/10/14(日) 12:27:39.55ID:mBxOrkWE
え?どんなコードが入るの?
ありえないのに
2018/10/15(月) 20:24:46.22ID:vo4hBZ/w
なあ、おまえのクラス内に公開変数作って、そいつをインクルードして関数呼び出し時にポインター参照で指定するなんてインターフェス、誰が言い出したの?
しかも各関数は自前のその公開変数を直接参照して動いてるし。
こんな中途半端なやり方するなら、最初から隠蔽しちゃってくださいよ。
2018/10/15(月) 20:30:03.66ID:1WHouwEf
ごめん自分のデータクラスを全クラスの共通IFにする自信がなかった
2018/10/15(月) 21:16:54.08ID:E6pr56BO
 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。
804デフォルトの名無しさん
垢版 |
2018/10/16(火) 03:09:47.94ID:ou8fzFot
この記事拍手の数すげぇな。まだ伸び続けてる
Goodbye, Object Oriented Programming
https://medium.com/@cscalfani/goodbye-object-oriented-programming-a59cda4c0e53
2018/10/16(火) 07:54:43.79ID:Z3LiiLXa
誰か和訳してよ
2018/10/16(火) 07:57:35.98ID:Z3LiiLXa
オブジェクト指向を厚く語るヤツは
お勉強いまいちのヤツが多くて信用できないけど、
さらっとオブジェクト指向で書いたようなライブラリを公開してるヤツが
高学歴というわけでもない不思議な業界だよね
2018/10/16(火) 08:20:25.22ID:Jp8CUHhN
Banana Monkey Jungle Solution

まで読んだ
2018/10/16(火) 09:47:48.81ID:hiAtkD1Q
Elm最高まで読んだ
2018/10/16(火) 10:44:44.96ID:KsONw+2K
結局関数プログラミングが良い
って書いてある様に見えるけど
オブジェクト指向に対して何がどう良いのかは書いてないように見える
オブジェクト指向の問題点の指摘自体は有ってるように思えるけど
そもそもそういう使い方をするものじゃない
って気がするなぁ
現実世界とどうたらこうたら
こういう書き方をする人は自分からみてほぼ間違えている様に見える
騙された
って書いて有るけど
オブジェクト指向ってそんなに劇的に何かが壮大に変わるわけじゃないんだけど
その辺を誤解しているかオブジェクト指向を宣伝している奴がそもそも捕らえ違いをしている
そう自分には感じる事が多いなぁ
2018/10/16(火) 10:49:18.08ID:hiAtkD1Q
現実世界とマッピングさせようとしたらそりゃ上手くいかんし
バナナモンキージャングルになるわな
あほくさ
2018/10/16(火) 11:00:52.85ID:sVO7hlJ7
アクセス修飾子について分かりやすい説明しているサイトない?
privateからゲッター → セッターの理由がわかんないんだよな。
publicとの違いがなんなのか
2018/10/16(火) 11:06:30.91ID:HqnwAz6t
>>811
アクセサーを用意すると
ゲトーとセトーのアクセスを個別に制御できる
2018/10/16(火) 11:07:25.98ID:HqnwAz6t
ゲターもせターもパブリクーにするなら
アクセサーとフィールドの違いはない
2018/10/16(火) 11:39:32.23ID:8J+M5yKD
あとから処理をフックできるぞ!
2018/10/16(火) 11:40:12.83ID:Ul6KAhVk
setget時にログ出したいときに一括でできるぐらいか?
2018/10/16(火) 13:06:07.08ID:GbK/byr7
>>811
わかんないなら使わなくていいよ
用もないのにゲッターセッターを用意しろってのは間違って広まった悪いスタイルだ

多態したいとか、書かれてるようにログを取りたいとか、アクセサがあるとインスペクタで値が見えて便利とか
なんか用事がある時だけでいい
2018/10/16(火) 13:22:26.52ID:sVO7hlJ7
>>816
色々サイトみてるけど不要論も結構あるんだよな

よくわからないけどありがとう
2018/10/16(火) 14:20:20.47ID:cFNbEHw0
言語仕様で何とでもなるものにいちいちゲッターセッター付けるの無駄じゃね?
2018/10/16(火) 14:59:03.86ID:8J+M5yKD
それがプロパティなわけだが
ゲッターセッターと機能が重複しててほぼシンタックスシュガーで邪魔
2018/10/16(火) 15:33:44.68ID:pkWZobMJ
今時まだゲッターセッターなんて無意味なもん書いてる奴いんのか。
821デフォルトの名無しさん
垢版 |
2018/10/16(火) 16:52:45.97ID:nQomBRvE
セットなんちゃらって書く場面を考えると
なにかの状態遷移を伴うケースが大抵である
だとしたら、それを具体的に示す関数を書くべきなのでは
初期化が不便だというのもなんか違う

設定するメンバの組み合わせは決めておくべきではないか
それに併せて初期化関数を用意するだけ
2018/10/16(火) 17:08:05.58ID:JHQMnpCL
>>820
プロパティがない言語ではゲッターセッターが
プロパティの代わりになる
2018/10/16(火) 17:10:16.39ID:JHQMnpCL
>>821
> セットなんちゃらって書く場面を考えると

セットなんちゃらって書くと思うからいけない。
本当に書きたいことは、属性の変更
2018/10/16(火) 18:13:44.49ID:AosmVSTK
いつもクラスの例にでてくるPersonクラスはNameとAgeを持ってるけどあれ適当だよな
Ageは不変じゃないからいつの時点のAgeなのかもわからん

本来は誕生日を持っておいてAgeが必要なときにいつの時点の年齢が欲しいかを引数で与えて計算すべきなんだよな
825デフォルトの名無しさん
垢版 |
2018/10/16(火) 18:57:36.52ID:PnSVhV/K
言われたらそうだなw盲点だった
2018/10/16(火) 19:03:13.54ID:JHQMnpCL
そこででてくるのがプロパティだよ
ageは属性かメソッドかといったら属性だろ?

一見属性にアクセスしているようで、内部では
いろんな処理を行って値を返す。
それがプロパティ
2018/10/16(火) 19:04:22.70ID:JHQMnpCL
>>825
盲点でも何でも無いよw

例えば、Configクラスであっても、いつの時点のConfigかわからんだろ?
一年前の設定がほしいかもしれない。
2018/10/16(火) 19:12:47.50ID:AosmVSTK
>>826
引数が渡せるプロパティじゃないとね
c#使いなんだけどc#は引数を渡せない
2018/10/16(火) 19:22:26.29ID:AzP++FB2
状態状態ってよく悪者にされるけどOOPの肝はのへんににあると思う
#include <iostream>
struct logger {
std::ostream *out;
logger() : out(0) {}
void p(const char *s) {
if (out) *out << s << std::endl;
}
};
void f(logger &l) {
l.p("foo");
l.p("bar");
}
int main() {
logger g;
f(g);
g.out = &std::cout;
f(g);
g.out = &std::cerr;
f(g);
return 0;
}
ログの有効無効なんかをこうやって切り替えるのって
そんなに悪いこと?
2018/10/16(火) 19:24:41.24ID:GbK/byr7
Delphiなら配列の構文で引数付きプロパティを扱えたりするが
そんなことするぐらいならpersonからはbirthdayだけ見せて
今何歳かなんて呼び出し側で勝手に計算しやがれって思うわw
2018/10/16(火) 19:26:14.38ID:OiVT6sa2
読み取りのプロパティは冪等であるべきじゃないの?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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