- 1 名前:デフォルトの名無しさん mailto:sage [2018/10/18(木) 23:20:41.34 ID:/ofNkRJS.net]
- すごいんだよ?
カプセル化(英語: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/
- 345 名前:デフォルトの名無しさん [2018/10/27(土) 12:28:48.03 ID:S4VvuAVS.net]
- 残念なことにまともな教育を受けてれば
低学歴かどうかなんかレスからすぐに分かってしまう 低学歴なうえに著しく知能が低い その自覚がない そして自己評価だけは高い つまりこの板の低学歴知恵遅れは救いようがない
- 346 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 12:30:17.69 ID:4RrrP6U6.net]
- >>328
> 私は最初からイベントをデータとして認識してレスしてますよ 誰も「お前がイベントをデータとして認識してない」なんて 言ってないんだが? あたま大丈夫か?文章読めるか? お前は、 DBのトリガーのことを "イベント" といってたのに データの保存のことを "イベント" と言い出した そういうことを俺は言った なんで俺が言ってないことに、話すりかえてんの?
- 347 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 12:30:54.71 ID:RkY7jvte.net]
- >>39
って良書? もしかしたら昔原書を買ったまま本棚に積読してあるかもだけど、 良書なら暇があったらめくってみようかなって気になった。 やっぱオブジェクト指向を使ったソフトウエアの表現て、 実践の場では意外と難しい局面があって煩わされることもしばしばで、 方法の模索が続いて終らない
- 348 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 12:31:46.92 ID:4RrrP6U6.net]
- ID:ZWpnR1MN ってまともに話しているふりして
ただのアンチだろうなw でなければ、こうも関係ない話にすり替えたりしない
- 349 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 12:38:42.17 ID:io741/EL.net]
- >>328
で結局何の話したいの? そのクリーンな実装とやらのアーキテクチャの話?
- 350 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 12:39:08.49 ID:2OuJiKuO.net]
- 何かをトリガーに何かしたいなら関数オブジェクトなりデリゲートなりなんなりぶちこんで何か起きたら呼べ
そんなんオブジェクト指向だろうが関数型だろうか変わらん
- 351 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 12:45:49.91 ID:RkY7jvte.net]
- >>340
本棚の奥から 蒼い表紙に眼鏡をかけたカモノハシが見得のポーズを切って卵を守っている絵の An Introduction to Object-Oriented Programming Timothy Budd が発掘できたぜよ。でも1991年のfirst editionだた…orz 羽部さんの訳ってどうよ? 良ければ3rd Editionの訳を書店で眺めてみるけど。
- 352 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 12:56:30.18 ID:4RrrP6U6.net]
- >>343
でもなぁ、こいつが言っていたイベントはRDBのトリガーで (途中でイベントの意味を変えてきやがったが
- 353 名前:w)
RDBのトリガーの内容をアプリ側から知るのは(オブジェクト指向じゃなくても) 手続き型言語で知るのは難しいぜ。RDBにそういう機能はないからな [] - [ここ壊れてます]
- 354 名前:デフォルトの名無しさん [2018/10/27(土) 12:58:23.60 ID:S4VvuAVS.net]
- オレは書籍の内容について批評はしない
確かなことは書籍は読む人間を選ぶとことになる 頭ワルイのがいくら本読んでもムダだからな なにが書いてあるかを理解するのは自分自身だからな
- 355 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 13:03:02.03 ID:E4+ZR5KW.net]
- T字型ERデータベース知らん人って思ったより居るんだね
オブジェクト指向の最大の弱点は学んだ人がオブジェクト指向は銀の弾丸だと勘違いして他のテクノロジをおろそかにしてしまうことだな
- 356 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 13:03:20.83 ID:RkY7jvte.net]
- >>346
訳は上手いか聞いたんだよ。日本語OK? first editionをぱらぱらめくってみたけどほとんど基本的な内容だった。 Chapter 15のVisibiility and dependenmcyは80年代後半の ソフトウエア工学の話題とOOPの関連性が書いてあって多少面白そう
- 357 名前:デフォルトの名無しさん [2018/10/27(土) 13:08:02.52 ID:S4VvuAVS.net]
- 日本語は知らない
- 358 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 13:10:51.56 ID:RkY7jvte.net]
- 正直でよろしい。
3rd ed訳を立ち読みしてみようかと思ったが そのへんの店舗では扱っているところが少なそうだな…
- 359 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 13:16:03.98 ID:RkY7jvte.net]
- 訳は2002年の2nd edまでなんだな、しかも¥4,723 て
ぼるなあ
- 360 名前:デフォルトの名無しさん [2018/10/27(土) 13:28:14.73 ID:KIIskOQo.net]
- チンポがシコシコするぜ!
- 361 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 13:40:33.66 ID:CO70PLsl.net]
- 半角さんとちんぽさんはコテ付けてくれよ
- 362 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 14:06:02.77 ID:zMT6Eu0F.net]
- 低スペだからコテなんか付けれないだろw
- 363 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 14:20:55.23 ID:COSIUYbm.net]
- ハイ、ここまでオブジェクト指向のメリットなしのクズ男
- 364 名前:デフォルトの名無しさん [2018/10/27(土) 14:22:11.98 ID:+tHchtmr.net]
- おつかれさまでした
- 365 名前:デフォルトの名無しさん [2018/10/27(土) 15:42:15.57 ID:7e4UH6L0.net]
- 半角さんの言うことは正しいよ
> 低学歴なうえに著しく知能が低い > その自覚がない > そして自己評価だけは高い その場にいるほかのメンツの力量判断できないから 一人だけ調子に乗ってしょーもないことを得意げに演説 一人だけ周回遅れの子ってのは滑稽であり悲しくもある 自分が賢いかのような口調で演説するからいたたまれない
- 366 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 16:05:14.75 ID:+tHchtmr.net]
- なるほど、おつでーす
- 367 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 17:49:04.63 ID:RkY7jvte.net]
- >>357
「頭の悪い人はバカ」って、何の話してんだよ、 オブジェクト指向がクソか どうかだろ そういうのを頭が悪いと言うんだよ
- 368 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 19:23:43.65 ID:FFMC2/bw.net]
- 第三回バーチャルYouTuber人気投票リベンジ募集中(全287名、2018年10月27日〜)
あなたの好きなVtuberは?(一人十票) https://script.google.com/macros/s/AKfycbzW_Er5wP6kI0ZNcmcZVA4UdlXPiernQqL4xG1dVv146T8LwGKZ/exec ・前回(2018/8/22)は不正投票が行われた為、投票を途中で中止させていただきました。大変申し訳ありませんでした。 ・Googleフォームは標準仕様では不正投票が可能な為、改造して対策を行いました。 ・2018/10/27時点でチャンネル登録数10,000人以上のVtuberを対象としています。 ・一つのチャンネルでVtuberが複数人いる場合は、それぞれ分けています。 ・一人十票です。(全287名の中からお好きなVtuber10名を選んでください。) ・このフォームに投票するにはグーグルアカウントでログインする必要はありません。 ・並び順は前回の得票数の高い順と新人は登録者数の多い順に並んでいます。 ・今回も1,000人の方が投票するまで継続します。 なお投票結果はスプレッドシートにリアルタイムで表示されるようにしました。 また【概要】と【詳細】でシートを分けております。 https://docs.google.com/spreadsheets/d/1qvhqRdbbOFGQ2veqrnQmaAXIA79xTAANKUKa3HEUUC0 ▽過去の投票結果はこちら 第二回バーチャルYouTuber人気投票結果(2018年6月5日〜8月6日、全投票数1,000票)(スプレッドシート) https://docs.google.com/spreadsheets/d/1HqVp41DzLXPSuarWKkqNFZRyL20-nkMF5O5kkeEmqnA 第一回バーチャルYouTuber人気投票結果(2018年5月7日〜5月30日、全投票数1,000票)(スプレッドシート) https://docs.google.com/spreadsheets/d/1uaKoB3pJQHgC9VEkvg74v9OaSNW3Zvccr91mPN1lt5k
- 369 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 20:09:40.96 ID:if75aWaZ.net]
- ここまでオブジェクト指向のメリットも挙げられないクズ
早く死んで欲しい
- 370 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 20:12:26.50 ID:9XazvJsa.net]
- バグコードを内包するクラスを多重継承させてたりしたら結局何のためのカプセル化なんですかって話になるんだよね
- 371 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 20:18:12.71 ID:Eqi8BIlY.net]
- 多重継承するバカ発見
- 372 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 20:21:12.23 ID:4RrrP6U6.net]
- >>362
それバグを内包するクラスが悪いって話ですか?多重継承は関係なく
- 373 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 20:32:22.95 ID:8vLGwI12.net]
- まぁ一人で作ってるわけじゃなくて何十人も絡むプロジェクトだと「どのモジュールが悪いのか」って
切り分けは必要だから仕方ないんだけど効率悪いよね
- 374 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 21:06:19.63 ID:9XazvJsa.net]
- >>364
継承を通じてバグコードの影響が複雑に伝染することや、多重継承によってクラス間の依存度が高まることでデバッグが難しくなってしまうのが問題の本質なんだから、純粋に多重継承の問題だよ
- 375 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 21:08:20.34 ID:4RrrP6U6.net]
- >>366
でもバグがなければ、何も問題ないですよね? えと、バグが無いという前提で、 何が問題かを語ってくれませんか? どうもバグに話をすり替えているようにしか見えませんから
- 376 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 21:16:06.32 ID:9XazvJsa.net]
- >>367
そもそもバグコード生成や不具合発生が避けられないものであるという前提で話が出来ないのかな?
- 377 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 21:51:44.06 ID:r8YaGOoY.net]
- デバッグが困難になる(特に>>366みたいなアホには)って言うのはまあわかるとして
> 結局何のためのカプセル化なんですか にどうやって繋げるつもりなんだ? w
- 378 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 21:54:09.25 ID:JpRu0mgz.net]
- >>242
今ニュース系サイトで見たんだけど そこ炎上してたんだwww
- 379 名前:デフォルトの名無しさん [2018/10/27(土) 22:13:20.04 ID:p3Z91K38.net]
- どっちもどっち。
大元のクラスライブラリにバグがある事もあるし、100%バグの無いコードは事実上不可能だから、バグが無い前提は流石にあかん。 然りとてバグコード含んだクラスを継承というのも行き過ぎで、十分なデバッグやテストを通してから継承するもの。 理想と現実の狭間で最善尽くすだけ。 上でも何度も言われてるが、オブジェクト指向は銀の弾丸では無い。
- 380 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 22:33:52.71 ID:7e4UH6L0.net]
- >>371
みたいなしょーもないシッタカ意見を排除することからはじめたい
- 381 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 22:37:37.79 ID:Eqi8BIlY.net]
- >十分なデバッグやテストを通してから継承するもの
?????????????????????????????
- 382 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 01:14:01.05 ID:qArEjd5e.net]
- そもそも関数で組んでれば依存がないものを
メソッドにすることでメソッド同士でメンバ変数を共有することになるのだが これはいいことなのか?
- 383 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 02:00:49.16 ID:PnJQ4LJT.net]
- >>368
> そもそもバグコード生成や不具合発生が避けられないものであるという前提で話が出来ないのかな? はい。だから問題はバグってことですね
- 384 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 02:01:43.41 ID:PnJQ4LJT.net]
- >>371
> 上でも何度も言われてるが、オブジェクト指向は銀の弾丸では無い。 それどころか、手続き型も構造化も関数型も銀の弾丸ではない なぜオブジェクト指向だけを違うと主張するのか?
- 385 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 03:32:02.39 ID:heugqVbH.net]
- >>376
あふぉか、 なんらかの弱点があるから、どの方法も無意味だとでも言いたいのか オブジェクト指向には、 特に問題があったのではないだろうかって いままでさんざ議論してきて 何だそのレスは
- 386 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 04:19:38.38 ID:ntMMh/Va.net]
- 中身のないことを議論とは言わない
- 387 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 04:43:07.45 ID:heugqVbH.net]
- それはオブジェクト指向の有効性の議論は
中身はなかったと同義だぞ
- 388 名前:デフォルトの名無しさん [2018/10/28(日) 04:52:49.27 ID:vBzuIBdi.net]
- >>376
誰もオブジェクト指向だけがなんて言ってないし。 そういうのは、それぞれのスレでお願いします。 もしくは異種格闘技的なスレ建てて下さい。
- 389 名前:デフォルトの名無しさん [2018/10/28(日) 04:53:59.71 ID:vBzuIBdi.net]
- >>376
誰もオブジェクト指向だけがなんて言ってないし。 そういうのは、それぞれのスレでお願いします。 もしくは異種格闘技的なスレ建てて下さい。
- 390 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 07:12:49.71 ID:PnJQ4LJT.net]
- >>377
> あふぉか、 > なんらかの弱点があるから、どの方法も無意味だとでも言いたいのか 無意味なわけ無いじゃんw あぁ、もちろんオブジェクト指向がってことだよ。
- 391 名前:デフォルトの名無しさん [2018/10/28(日) 07:36:23.63 ID:MrnoigLK.net]
- チンポがシコシコするぜ!
- 392 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 07:47:13.80 ID:9S8iKrwU.net]
- >>374
そこに疑問を持たないチンカスばっかりなんだよね
- 393 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 07:53:29.84 ID:JSYSCVAX.net]
- 共有できるメソッドが制限できているので・・・カプセル化全否定?
副作用副作用言うならimmutableにでもすれば?
- 394 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 08:31:13.63 ID:q5KpZg+C.net]
- >>374
フィールドの共有がなかったら全てのフィールドを引数でバケツリレーするようなプログラムになる 引数の数が大爆発して意味不明になるぜ そもそもフィールドを共有してるから依存があるというのは正しくない 片方のメソッドを消去してももう片方のメソッドは独立に使用し続けられる なのでそこには依存はないんだぜ
- 395 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 08:38:18.12 ID:A1A18Cj4.net]
- オブジェクトに対しての作用としてメソッドが存在するのに、メソッドが同じ変数を共有するって発想自体が意味不明だよな。
- 396 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 08:47:35.25 ID:q5KpZg+C.net]
- フィールドの共有で依存が発生すると主張するのは
引数の共有で依存が発生すると主張するようなものだな
- 397 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 09:04:48.97 ID:A1A18Cj4.net]
- 相手のメソッド記述するって結合度気にするなら、全部メッセージでやりとりすれば良い。
宛先と送受信の共通の関数さえあれば結合度気にする必要が無いぞ。
- 398 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 09:58:02.87 ID:q5KpZg+C.net]
- 案外、難しく考えない方がいいのかもしれないね
なんか同じこと何度も書いとるなー👉関数 同じ組み合わせの引数ばかりわたしとるなー👉構造体 構造体と関数の組み合わせっていつも同じだなー👉クラス フィールド直接弄るとバグ出やすいなー👉カプセル化 これでも十分なメリットを享受できる まずは体感としてこれらのメリットを感じれるまでコードを書く それから本格的な議論に参加すればいい 逆にこれらのメリットに体感的にすら気付いてないレベルで議論しても時間の無駄だろう
- 399 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 10:07:49.72 ID:9S8iKrwU.net]
- >>390
そっか、お前らサルってメリットがどういうものか知らないんだな メリットってのはお金を産まなきゃ意味がないんだぞ 具体的には工数削減と品質向上だ 工数削減はわかると思うが、さらに品質向上には基準が必要だ これらの数字を具体的に変更して初めてメリット足りうる おk?
- 400 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 10:08:23.71 ID:9S8iKrwU.net]
- このスレにいるのは
俺にはサルしか見えない メリットも見えない技術を使って悦にいってるような雑魚は そもそも技術者でもプログラマでもなくてサルだろ
- 401 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 10:15:58.76 ID:PnJQ4LJT.net]
- >>391
> 工数削減はわかると思うが、さらに品質向上には基準が必要だ > これらの数字を具体的に変更して初めてメリット足りうる > おk? 結論を言ってしまうと、コードメトリクスだね。 ツールを使って客観的に計測できる
- 402 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 10:22:50.11 ID:q5KpZg+C.net]
- >>391
計測すればわかるけど俺が書いたことをやればスコア普通に良くなるよ 誰とは言わないけど感情が全てのサルには理解できないかもしれない けど計測手段を持ってる人間にとってはオブジェクト指向のメリットは明白なんだよね
- 403 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 10:27:04.29 ID:9S8iKrwU.net]
- >>394
じゃあ、具体的に何がどういう理由でそうなるの?
- 404 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 10:31:53.41 ID:q5KpZg+C.net]
- >>395
コードの重複が減る 変数や引数が減る 分岐やループが減る 不正な操作が減る 危険な操作が減る したがってスコアが良くなる
- 405 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 10:40:16.34 ID:9S8iKrwU.net]
- >>396
具体的にどうして? 関数と比べて増える要素はあっても減る要素ないよ
- 406 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 10:46:09.61 ID:9S8iKrwU.net]
- 局所的なグローバル変数を使ってるに過ぎないのにメリットなんかねーよ
バカって結論を俺は持ってるけどね オブジェクト指向のデメリットはグローバル変数のデメリットと同じなんだよ
- 407 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 10:49:54.17 ID:PnJQ4LJT.net]
- >>398
お前が言ってるのは、グローバル関数のデメリットのことだろ?
- 408 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 10:52:05.99 ID:PnJQ4LJT.net]
- グローバル変数が悪だからって
グローバルクラスも、同じグローバルがついてる 悪に違いない!って考えるのは単なる短絡思考
- 409 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 10:53:27.65 ID:oBRWPPCT.net]
- グローバル変数は丸出しでかつ一個じゃん?
メンバ変数は隠すこともできてかつ複数じゃん? あと、まとめて隠しとくメリットもでかくね? int cap = 32, size = 0, data[cap]; // こーいうのより vector<int> v; // こっちがスッキリじゃね
- 410 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 10:56:23.17 ID:q5KpZg+C.net]
- 局所的なグローバル変数で爆笑した
コメディアンの才能あるんじゃないか?
- 411 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 11:01:33.11 ID:oBRWPPCT.net]
- というよりもよく考えたら
> 局所的なグローバル変数 というのが単に誤解なんだよな struct data {int value;} void method(struct data *this) {} っていう単なるパラメータなんだから
- 412 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 11:03:35.69 ID:A1A18Cj4.net]
- おまえら、オブジェクトの意味を知ってて言ってるのか?
知ってりゃグローバル変数なんて意味不明な話しないかw
- 413 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 11:13:27.53 ID:B8FJbCxl.net]
- ここだけ30年前かよ
ぽっくんの業務では当てはまりませんでしたー ってCOBOLでも書いていたらいいよ 別に困ってないだろ?
- 414 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 11:46:39.03 ID:WEhY2ED3.net]
- >>396
で、なっぜJavaやC++でたコード書くと あんなことになるんだw
- 415 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 12:58:44.66 ID:9S8iKrwU.net]
- >>386
それで爆発するならメンバ変数の把握できない状態爆発のが問題 状態を複数持つオブジェクトをクラス内に内包すると単純に乗算でその数が増えていく 状態を10個持つクラスと状態を5個持つクラスがあるだけで取りうる状態数は 50個 ウォーズマンの超人パワー波に状態が増えていく グローバル変数のまずさはこの把握できない状態爆発が本当の問題 問題の本質もわからないサルがオブジェクト指向なんてありがたがってるだけ
- 416 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 13:07:28.41 ID:Ok+RtHZ3.net]
- ローカル・グローバル・ヴァリアブルwwwwwww
- 417 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 13:33:22.60 ID:+hej1rjz.net]
- >>386
それは別に構造体定義して引数で渡せばいいだけだね。 >片方のメソッドを消去してももう片方のメソッドは独立に使用し続けられる >なのでそこには依存はないんだぜ メソッドを消去したらみたいな静的なことは問題にしていない。 メソッドの呼び出し順で動作が異なる点について言及している。 つまり状態を共有しているってことについて。 コードベースで見れば確かに構造体の型とそれにひもづく関数を結びつけとくのは 管理しやすいってのはそうだが上記のデメリットをどれだけ上回っているか。
- 418 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 13:58:58.05 ID:Ok+RtHZ3.net]
- >>409
そうそう 第一段階: 構造体にして渡せばいいだけじゃん(クラス的発想のスタート地点) 第二段階: っていうか構造体と関数っていつもセットだから一緒に管理しよ(メソッド) 第三段界: 管理されたメソッド以外から弄るとバグでやすいから禁止しよ(カプセル化) キミが言うように「〜すればいいだけだよね」ってのを素直に実践するとOOPに到達するんだよ キミも後少しで議論のスタート地点にたてるかもね キミの考え方だと funcA(pState); funcB(pState); これはfuncAとfuncBが状態を共有しているということになるネ
- 419 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 14:03:43.02 ID:9S8iKrwU.net]
- >>410
funcAに特定のpStateを入れて必ず同じ結果が返るならそれはいいコード 異なる結果が返るならさいっこうにクソ ボディブロー100連発
- 420 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 14:06:00.57 ID:+hej1rjz.net]
- >キミの考え方だと
>funcA(pState); >funcB(pState); >これはfuncAとfuncBが状態を共有しているということになるネ ならねーよ。 普通に見ればpStateが状態を共有してるってことになるだろ。 どんな馬鹿な見方をするとこんな考え方になるんだろうか。。
- 421 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 14:06:10.12 ID:Ok+RtHZ3.net]
- 補足すると
funcB(pState); funcA(pState); にかえると動作が異なるからキミの言い分だと常態を共有しているということだね さらに最悪なことにカプセル化されてない場合 funcB(pState); pState->x = 10; funcA(pState); みたいなアドホックなコードから状態を変更されるリスクがあるから 事実上プログラム全体で状態を共有しているようなものだね
- 422 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 14:07:31.98 ID:Ok+RtHZ3.net]
- >>412
>>413でも補足したけどキミが言ったことをそのまま引用したんだよ 呼び出し順で動作が変わるなら状態を共有してるってね
- 423 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 14:13:50.08 ID:9S8iKrwU.net]
- >>413
だからいいんだって テメーのコードは pState.funcA() ってやっても pStateの中身が見えないのが問題なんだよ
- 424 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 14:25:39.53 ID:9S8iKrwU.net]
- funcA(pState)「僕が変更したのはpStateだけです、グローバル変数なんて使ってませんよ」
pState.funcA()「あああああ!!!!!!!! (ブリブリブリブリュリュリュリュリュリュ!!!!!!ブツチチブブブチチチチブリリイリブブブブゥゥゥゥッッッ!!!!!!!)」
- 425 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 14:29:45.55 ID:i0t9ojwl.net]
- オブジェクト指向でも副作用って無くすべきだよなぁ
こういうのって手続きかオブジェクト指向しか触ってこなかった人は気づかないもんかな
- 426 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 14:37:41.79 ID:JSYSCVAX.net]
- pState.func()、funcA(pState)
どちらもpStateを渡して呼び出しているし、pStateを変更しただけです!と言えるのでは 副作用が嫌ならimmutable objectにすれば?
- 427 名前:デフォルトの名無しさん [2018/10/28(日) 14:39:53.29 ID:86INTnoC.net]
- >>418
nimではどっちも同じ意味だな…
- 428 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 14:43:01.09 ID:WEhY2ED3.net]
- もうしっちゃかめっちゃかだな
ホント都市伝説なオブジェクト指向
- 429 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 14:47:10.20 ID:9S8iKrwU.net]
- >>418
private無ければな
- 430 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 15:03:12.30 ID:JSYSCVAX.net]
- >>421
privateはデータに直接アクセスできる関数を制限するだけなのに それを無くしたいは何で?
- 431 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 15:42:48.94 ID:q5KpZg+C.net]
- >>417
ValueObjectからAggregate Rootまで全部イミュータブルにする派閥もあるよ
- 432 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 16:02:29.47 ID:1gIkUjQ9.net]
- あるメソッドがどのスーパークラスで定義されてて、
それがどのスーパークラスでオーバーライドされてて、 結果的にいま自クラスで呼んでるこのメソッドはどこで定義されたものなのかが わかりにくいのが非常にイライラすることがあるけどお前らどうしてんの? 真面目にクラスライブラリのリファレンスを愚直に辿ってんの?
- 433 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 16:09:00.49 ID:q5KpZg+C.net]
- >>424
どれが呼ばれて何をやってるかを気にしなくていいように作るのが正解
- 434 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 16:15:39.00 ID:1gIkUjQ9.net]
- >>425
そもそも一つ上のスーパークラスで定義されてないメソッドを呼んでるコードを見た時 そのメソッドってどのクラスで定義されてるのかがわからないと、どういう機能のメソッド なのかわからなくね? スーパークラスから継承したメソッドはオーバーライドしていなくても全て下位のサブクラスの リファレンスマニュアルに書いてくれるならいいんだがそうなってないのがイラつくって話
- 435 名前:デフォルトの名無しさん [2018/10/28(日) 16:25:39.62 ID:vBzuIBdi.net]
- オブジェクト指向と関係あるか不明だけど、一時期関数型言語に嵌って、オブジェクト指向よりも依存性を抑えられて保守性が上がって良いとは思ったんだが、そればかりだとCPUパワーが発揮出来ないんだよね。
(ほぼキャッシュに収まらず、メモリアクセスが増える) んで、対極のCやアセンブラに手を出した。 今度はグローバル変数が多くなる。 (逆に如何に変数(メモリアドレス)へのアクセス減らしてレジスタ使い回すかで速さが違ってくるから、それはそれで楽しい。ただし8/16ビットに限る。それ以上はハードが複雑になり過ぎる) 結局オブジェクト指向って、その間をとったんじゃ無いかと思うんだよね。(メモリアクセス減らしつつグローバル変数減らす苦肉の策+責任分担) 実際、CからC++への移行期はまだCPUも遅くて、オブジェクト指向にすると遅くなると言う意見が多かった。 (C++やJava、C#、Delphiで一応オブジェクト指向も勉強したけど、効率と言うより保守性や多人数での開発が前提な気がする。コードは全体じゃ増えるけど、このクラスはお前ね。みたいに割り振り易い) (特にC#は1つのクラスを複数ファイルに分けられるので、メソッド単位で人に任せ易い。個人では逆に分かりにくくて迷惑な機能) tcl/tkとかある通り、必ずしもGUIはオブジェクト指向じゃ無いと使い難いって事はない。 Haskellだって(関数的じゃないから気持ち悪いだけで)向いてないとは思わなかった。 ただ既にIDEの整っているのがオブジェクト指向ってだけだが、それだけで十分オブジェクト指向を勧める価値はあるんじゃないかな。
- 436 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 16:31:22.24 ID:q5KpZg+C.net]
- C#のpatialは分業のためじゃない
コード生成のためだ
- 437 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 16:39:33.30 ID:WEhY2ED3.net]
- >>427
スピードをとても重視するなら不便でも強い最適化のかかる言語を選ぶしかないだろ 突き詰めればCかFortranかアセンブラしかなくなる 逆にvm上やインタプリタでもスピード敵に問題なければ生産性、保守性、可読性、 依存抑制、独立性、局所性、階層化構造、拡張性を重視していいだろ ほとんどは後者
- 438 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 16:40:53.22 ID:9S8iKrwU.net]
- >>422
値が見えないから
- 439 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 16:42:51.19 ID:JSYSCVAX.net]
- >>430
getterとかプロパティ作って
- 440 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 16:44:46.79 ID:WEhY2ED3.net]
- そうやってwebみたいにくもの巣状態になるんだよな
- 441 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 16:45:09.74 ID:9S8iKrwU.net]
- >>431
publicでええよ
- 442 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 16:46:44.13 ID:WEhY2ED3.net]
- いやいっそclassの外に出せよw
- 443 名前:デフォルトの名無しさん [2018/10/28(日) 16:51:06.47 ID:vBzuIBdi.net]
- >>429
いあ、だから。。。 その中間を目指したんじゃないかと。 関数型言語ほど目指すと遅くなる。 最適化目指し過ぎると大規模開発に対応出来ない。 オブジェクト指向は現実解だったんじゃないかと。
- 444 名前:デフォルトの名無しさん [2018/10/28(日) 16:56:20.42 ID:oLhbCszz.net]
- チンポがシコシコするぜ!
- 445 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 16:57:12.44 ID:WEhY2ED3.net]
- >>435
結果として性能的にそういう位置づけに当たることがあるかもしれないが スピードのための折衷案を目指して作り出された物ではなく あくまでソフトウエアの構造を表現する新しいパラダイムを目指していたと思うよ。 少なくとも1990年代初期ころまでは。 あとhaskelやMLの生成するnativeコードは結構早い(といわれている
|

|