- 1 名前:デフォルトの名無しさん [2020/06/18(木) 23:47:36.69 ID:l/2SQUll.net]
- カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、オブジェクトの実際の型を隠蔽したりすることをいう。
かつて偏差値の低い学校向けの情報処理系教科書において「カプセル化は大変すばらしいものであり絶対に使うように」と大体的に宣伝された。 一方、カリフォルニア大学バークレー校の有識者を中心とした「インターネットを作った人たち」は「階層化の有害性」として「カプセル化は絶対にやめろ」としている。 https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
- 496 名前:ルんと嫌い []
- [ここ壊れてます]
- 497 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 14:12:08 ID:EmVrB3rr.net]
- 明示的な状態管理は、(不可能ではないにせよ)管理すべき状態の量が増えてくると非常に困難になってくるところ、関数型言語の考え方を取り込むことによってその負担を軽減できるのではないかーーという意見もあるようだけど、
このスレの人(カプセル化肯定派・否定派いずれも)としてはどう?
- 498 名前:デフォルトの名無しさん [2020/06/29(月) 19:41:29.30 ID:bVpw4tuk.net]
- カプセル化の可否はともかく
階層化の有害性についてはこう思います。 例えばディレクトリを階層化のすると 親ディレクトリと子ディレクトリに同じデータを重複格納 する人が出たりしてデータの二重管理が発生 しやすくなると思います。 そのうちどれが正なのか分からなくなります。 あと単純に子供に格納するほどデータのアクセスパスが 長くなってどこにあるのか探し出すのが大変になると 思います。 これはオブジェクトの階層構造でも JSONなどの構造についても言えることだと思います。
- 499 名前:デフォルトの名無しさん [2020/06/29(月) 20:06:40.16 ID:cYsf6eW3.net]
- プログラムで階層化なんて意識したことないけど問題起こったことない
分野が違うのかな
- 500 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 20:18:08.97 ID:6d9dL1u1.net]
- そう、問題が起こるのはいつも人間関係です
- 501 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 20:19:42.34 ID:tYVp58Ca.net]
- つまり、人間関係の問題を持ってきても、技術を否定したことにはならないのです。
- 502 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 21:42:10.57 ID:P3P3vIj6.net]
- >>483
>>1に書いてあることが理解できない?
- 503 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 23:35:22 ID:L39gVdue.net]
- >>482
そこで挙げている階層化の問題だが、階層化せずフラットに格納すれば解決するのか? 階層化しないということは同じレベルに大量の物が同格に並ぶわけだが、そうなると目的の物を探すのが困難になりすでにあるデータと同じものを重複して格納する危険性があるだろう。 またアクセスパスが長くなるというが、フラットな構造で多数の物を適切に命名しようとすれば階層的な名前付けが役立つはずだが、それすら長くなると忌避するなら場当たり的に短い名前を着けていっていずれ収集が着かなくなるだけでないの? お前さんが挙げた階層化の問題は階層化の仕方が悪い(下手な)だけで、階層化をしなければ解決するというものではなかろう。
- 504 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 05:33:42.93 ID:v2qXZCJh.net]
- 結局、分類だったり抽象化のやり方がクソってだけの話だろ。
フラットにしようが階層にしようが、クソな分け方したらどうにもならんてだけの話だ。
- 505 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 08:05:51.26 ID:GiU27GCt.net]
- https://monobook.org/wiki/%E9%9A%8E%E5%B1%A4%E5%8C%96%E3%81%AE%E6%9C%89%E5%AE%B3%E6%80%A7
- 506 名前:デフォルトの名無しさん mailto:age [2020/06/30(火) 08:11:00.58 ID:PIU/381m.net]
- >>486
ぴえ?
- 507 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 10:40:18.75 ID:J3IrN4Ey.net]
- >>1が例に上げてるRFC3439は「Layering Considered Harmful」という強い言葉を使ってるが
レイヤ化は万能じゃなくデメリットもあるという当たり前のことを書いてるだけ もちろん「カプセル化は絶対やめろ」なんてことは書いてない メリット・デメリットを把握した上で 状況に応じたトレードオフの判断ができない人(>>1)には ソフトウェアの設計はできない
- 508 名前:途中から見た。 mailto:sage [2020/06/30(火) 19:35:05 ID:g7PLkMcM.net]
- なんか、privateメソッドのテストでもめているけど、なんで。
そもそも、privateメソッドを外部から呼び出してテストしないといけない場面が想像できないのだが。 クラスライブラリのコードを紛失したとか笑えないケースを想定しているの?
- 509 名前:デフォルトの名無しさん [2020/06/30(火) 19:48:43 ID:MKfuvp+I.net]
- gitや自動ビルドツールの存在がなかった時代の
オブジェクト指向技術は淘汰されてもいいんじゃない? 昔はこれらがなかったからカプセル化で神経質に 防御してたけど 今は無理にパッケージを固めてやり取りすることが なくなって gitでソースを差分転送して再ビルドする方式に 切り替わった 旧仕様はブランチを切り分けといて復旧が簡単に なって、仕様変更に対してそこまでビビらなくて良くなった。 それと自作のアプリのオブジェクトで webからインストールしたライブラリや フレームワークが自動生成して提供するもの以外で それほど長時間状態を保持するような巨大なオブジェクト 構造を自作設計して作成することがあるか? あるとすれば webのセッションや オープンワールドやFPSみたいなゲームくらいか
- 510 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 20:19:26 ID:v2qXZCJh.net]
- 今でもSIerなんかはコード書き換えないことに固執してるから可視範囲に対して神経質なんだよ。
- 511 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 20:27:32.13 ID:+5DxT57L.net]
- >>492
それは「テストの時にだけpublicに変えればいいじゃん」か「privateはpublicに内在してるから直接テストする必要ないじゃん」のどっちの意味ですか?
- 512 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 20:58:39.82 ID:Ya6sc1A9.net]
- >>492
コード紛失してなくても他社開発のをガッチャンコだと手が出せないでしょ。
- 513 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 20:58:42.09 ID:ww2Xd+MO.net]
- × テストの時にだけpublicに変えればいいじゃん
○ テストがやりにくいというのは設計がまずいということ 自然な形でpublicになるような設計を改善すべきだ
- 514 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 20:59:02.71 ID:Ya6sc1A9.net]
- 小規模なら問題ない
- 515 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 21:38:14 ID:BIUXizBX.net]
- 他社のコードをテストすんの?
- 516 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 22:07:21.34 ID:GiU27GCt.net]
- >>497
はぁ?バカはレスすんなよ
- 517 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 22:42:13.84 ID:zKRJDZmr.net]
- >>499
そりゃ結合試験はするだろ
- 518 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 23:23:26.17 ID:BIUXizBX.net]
- >>501
結合試験時に他社コードのprivateメソッドを態々呼出してテストすんの?
- 519 名前:途中から見た。 mailto:sage [2020/07/01(水) 00:09:32.11 ID:vgPSMoJs.net]
- >>495
よくわからないが...強いて言うなら後者? 第一、クラスって実装者が責任を持ってテストするものだろう。 なんで、privateで定義されたものをpublicにして呼び出そうとするのかも、正直、わからない。 ブラックボックステストでもしたいの? まぁ、ブラックボックステストってprivateメソッドを呼び出せば成立するかというと、違うと思うけど。 正直、何がしたいのかわからなさすぎて困惑している。
- 520 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 00:11:23.37 ID:Dh09feZF.net]
- >第一、クラスって実装者が責任を持ってテストするものだろう。
これが守られてりゃこのスレみたいな議論は起こらんわ。
- 521 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 00:22:36 ID:dTufBNXb.net]
- 守るも何もクラスに不具合があれば実装者の責任だろ
って言うのが通用しないのか?
- 522 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 00:26:31 ID:Dh09feZF.net]
- 責任といってももういない奴に責任は取れんわな。
- 523 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 00:33:27.93 ID:XAYXSYxH.net]
- 客先に納めたプログラムを客先が勝手に変更したら責任は外れる契約になってると思う
これは弊社の納めたプログラムではありませんってなるから 社内で引き継いだなら文句を言うのは自由だが任された者がなんとかしろの精神だろ
- 524 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 00:43:31.96 ID:Dh09feZF.net]
- クラスごとにしっかりテストがあって
引き継ぎがしっかりされる職場ばかりなら何の問題もないだろうね。 とても幸せな世界でいいですね。
- 525 名前:デフォルトの名無しさん [2020/0
]
- [ここ壊れてます]
- 526 名前:7/01(水) 01:04:03.02 ID:Ke5amsYp.net mailto: まだ続いてたか
結局問題は出来の悪いモジュールをどうするかって話だろ [] - [ここ壊れてます]
- 527 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 01:36:00.07 ID:bx11ZQ99.net]
- 違うよ
visualstudioがテストプロジェクトでprivateをpublicみたいに呼べるようにするだけ
- 528 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 06:19:16.09 ID:y/Wgtnem.net]
- >>503
privateを呼び出す必要があるってのはUnit Testの時で、実装者とテスターが同一人物かどうかは関係ないよ。 オブジェクト指向に限らずテスト理論の話になっちゃうんだけど、プロジェクトや規格で指定されるUnit Testの種類によってはpublic経由でprivate呼び出してたら組合せ爆発してテストドライバやスタブの開発やレビューだけで多大な工数が必要になってやってられなくなる。 なので十分に単純化されたprivateを含めて関数毎にテストする必要が出てくるのよ。
- 529 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 06:46:59.11 ID:5jdJ/dE3.net]
- >>501
> そりゃ結合試験はするだろ 統合試験って言うことは、当然標準ライブラリの テストも行うんだよな?例えばprintf関数のテストとか
- 530 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 06:53:14.54 ID:lozEWamw.net]
- >>511
> public経由でprivate呼び出してたら組合せ爆発してテストドライバやスタブの開発やレビューだけで多大な工数が必要になってやってられなくなる。 そういうことだよね。だからそれはpublicメソッドが行ってる機能が多すぎるわけで 複数のpublicメソッドに分解するわけ。これが設計。 適切な関数の行数って思ったより短いものだから。 俺の場合、一部のcaseテーブルのようなものを除いてロジックと呼べるようなものがあるコードは 長いもので1関数30行〜40行程度半分以上は10行程度だよ
- 531 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 08:23:11.98 ID:y4QPMVjI.net]
- >>512
何時何分何秒地球が何周回ったときに言いましたかーみたいな煽りだな
- 532 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 08:27:13.77 ID:3Re1TFuk.net]
- >>512
そりゃprintf使うシステムの結合テストならもちろん結合テストのセンスでprintfもテストするよ。 ユニットテストの粒度とは違って「〜が標準出力されること」ってテスト項目になるけど。
- 533 名前:途中から見た。 mailto:sage [2020/07/01(水) 11:10:06.09 ID:LiVkSFt2.net]
- 結合テストと総合テストって同じ意味なのか?
- 534 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 12:14:34.41 ID:hgyYQ8XK.net]
- 総合テストって検収テストと同じじゃね?
- 535 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 12:24:10 ID:wljUBRxY.net]
- テストの呼び方はプロジェクトによって違うからなんとも言えんなぁ
- 536 名前:途中から見た。 mailto:sage [2020/07/01(水) 12:36:28.97 ID:LiVkSFt2.net]
- なんというか...コミュニケーションがまともにとれていないのでは?
恐らく、他人の作ったライブラリに対して単体テストをお前はやるのか?という意図で聞いた質問に、結合試験はするだろと回答したり、 結合試験と総合試験という字面で見ると似ているけど全然違う話を混在させたり、 似ているようで関係のない話を持ち出して混沌としているな。 語りたい事の本質が行方不明になっているように見える。
- 537 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 14:20:36 ID:JqIYLyXt.net]
- >>512は総合じゃなく統合って書いてるぞ
結合テストのことを統合テストと呼ぶところもある 結合の度合いによって結合、統合、総合とそれぞれ分けてるところもある 単なる読み間違いなのか結合 = 統合の意味で使ってるのかは知らんけど
- 538 名前:途中から見た。 mailto:sage [2020/07/01(水) 14:54:20.92 ID:LiVkSFt2.net]
- うわっ!恥ずかしいミスをしてたのは自分だったか。あとで、読み直す...。
- 539 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 17:50:33.35 ID:1PwA88RR.net]
- visualstudioのテストプロジェクトが不甲斐ないってだけやし
- 540 名前:デフォルトの名無しさん [2020/07/02(Thu) 19:42:17 ID:84e/i8uV.net]
- privateメソッドテストするとか正気?
テストしなくてよくするためのprivateだろ
- 541 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 19:49:51.80 ID:iX514c6x.net]
- テストする必要があるというのは
全部書き直した方がましということだが
- 542 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 20:08:44.37 ID:/yt09sjO.net]
- >>523
特大クラス一つの
- 543 名前:中に全部privateでメソッド作成したら
どういう理由で全メソッドテスト免除になるの? [] - [ここ壊れてます]
- 544 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 20:10:40.42 ID:/yt09sjO.net]
- マイクロソフトに頼らんで独自にテストプロジェクト作ってるような会社はできてんで
visualstudioの都合でテストやりたくないって言ってるだけだろクズども
- 545 名前:デフォルトの名無しさん [2020/07/02(木) 20:46:21.86 ID:Vurtjy2V.net]
- 関数どころか変数に至るまで一つ一つ丁寧に検査してましたわ。
- 546 名前:デフォルトの名無しさん mailto:sage [2020/07/02(Thu) 21:29:57 ID:lIo9GiA1.net]
- >>525
どんだけ巨大なクラスでも全部privateだと外から一切呼び出せないデッドコードになるのでテストする意味さえないだろ。
- 547 名前:デフォルトの名無しさん [2020/07/02(Thu) 21:35:43 ID:UKbwg08G.net]
- >>528
せやかてpublic通してたら結合テストじゃんw
- 548 名前:デフォルトの名無しさん [2020/07/02(Thu) 21:36:02 ID:UKbwg08G.net]
- unit testの意味わかっとんのけ?
- 549 名前:デフォルトの名無しさん mailto:sage [2020/07/02(Thu) 21:37:29 ID:7zBU/W9S.net]
- プロジェクトによって違ってたなあ
- 550 名前:デフォルトの名無しさん [2020/07/02(Thu) 21:40:09 ID:UKbwg08G.net]
- >>531
せやろ、ワイの会社も結合テストのことをunit testと呼んでるわ 本当のunit testはやってない
- 551 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 22:14:17.02 ID:/yt09sjO.net]
- >>528
Form1とかそんな感じじゃん
- 552 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 07:01:01.95 ID:Ul5hp/bW.net]
- >>525
誰も使わんからテスト不要だね
- 553 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 08:34:55.79 ID:zR3byV+3.net]
- >>532
それは珍しいな
- 554 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 08:56:10.03 ID:N+TCe3uh.net]
- これは酷い。RFC 3439はネットワークの仕様の話であってオブジェクト志向なんか
一切関係ないし、プログラミングの話でもない。 偏差値が低い学校でだけ教えてた事実なんてないしアメリカの大規模システムは 全部OOでカプセル化が基本。 的外れすぎて開いた口が塞がらない。これ書いた人間が全く一切わかってないのはよくわかった。
- 555 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 09:22:53.27 ID:r9jTvXIP.net]
- >>536
わざとバカなことを言って他の人が本気で反論や議論してくるのを笑ってる可能性もゼロではないが、まあ単に本物のバカという可能性のが高いと思う
- 556 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 10:20:55.42 ID:N+TCe3uh.net]
- >>537
本気感が凄いね。反論とかしようがない1から10まで間違ってるレベルだし。
- 557 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 10:22:52.04 ID:N+TCe3uh.net]
- こんなんでもRFC確認する人なんてほとんどいないだろうし、クラウドがあるじゃないですか!
のレベルの日本ではショーンK的に通用しそうというか、結構このスレでも通用してるのがおっかない。
- 558 名前:デフォルトの名無しさん [2020/07/03(金) 10:25:42.60 ID:lDWf2b6S.net]
- Javaで外クラスから内クラスのprivateメンバが見れるのはなぜですか?
超論理的思考によるとどう考えても理論に欠陥があり矛盾してる。 みなさんはこのJavaにおけるクラス体系をおかしいと思いながら割りきって使ってるのですよね?
- 559 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 10:27:37.08 ID:N+TCe3uh.net]
- 単に道具だから自分で考えて必要なら使えば良い訳で。
カプセル化ってのはつまり部署ごとにお前のところはお前で責任を持て、 お前が変えたからって他の部署に仕事をさせるな、ということだから、 それができてればなんでも良い。
- 560 名前:デフォルトの名無しさん [2020/07/03(金) 11:40:51 ID:x82j4VqA.net]
- 複数の開発会社が絡む大規模案件と
一社開発や個人開発の小規模案件を ゴッチャゴチャにして同列で語り合うから、話が噛み合わないし、話が終わらないんよ。
- 561 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 11:47:43 ID:Gy+Up1+B.net]
- >>542
各クラスの仕様を明確にするのか仕様を決めずに実装するかの差だよ 開発手法の差だが開発規模の差ではない
- 562 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 11:51:37 ID:uIgOlo/V.net]
- >>543
仕様が明確じゃないのにテストする意味あるの? それともprivateメソッドの仕様を明確にするの?
- 563 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 11:53:31 ID:N+TCe3uh.net]
- そもそもOO
- 564 名前:ニかは大規模開発するために出てきた手法だから個人で小さいもの
作ってるなら関数でもスパゲッティでも本人わかってりゃいいわけだし、昔は 関数でも部署ごとで話し合ってちゃんとやってたけど、どうしても直接アクセスして 変更の際ぶっ壊れるようなものを作るやつが出るから、じゃあもう見せなきゃそういう 事態は起こらないということで実際それはうまくいってる。 個人のソフトとかは好きにすれば良いし、好きにできるようになってるんだから それぞれ道具を自分の必要に応じて使って勝手にやれば良い。 [] - [ここ壊れてます]
- 565 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 11:59:07 ID:Gy+Up1+B.net]
- >>544
「privateはxunit testingしなくていい」と言われる理由はそこだ 他のクラスとの関わりとして必要な仕様は非privateメンバのみに着目すればいい publicメンバの振る舞いが変わらずすべてのテストをパスできるならprivateがどう変更されようが他のクラスからは関係ないからな
- 566 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 12:07:31 ID:uIgOlo/V.net]
- つまりprivateをテストするってことは仕様が明確になってるわけで
publicにしても問題ないってことだよね
- 567 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 12:07:34 ID:Gy+Up1+B.net]
- 勢いで書いたから非privateとpublicがごっちゃになってるけどこの手の話題でpublicと書いてあったら全部非privateと読み替えて下さい
- 568 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 12:10:41.37 ID:BB9T+E2r.net]
- >>540
超論理的思考によるとって、論理を超えた思考なんかされたって会話にならないから、論理的思考をした上で疑問があれば相談してくれ。
- 569 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 12:16:49.80 ID:N+TCe3uh.net]
- Privateをテストするかどうかはプロジェクトごとのテストのやり方次第だし、
なんのテストかにもよるわけで。 デベロッパーテストなら当然するだろうし、リグレッションテストで普通は プライベートメソッドをテストしないだろう。 その辺はカプセル化とかOOとかはあまり関係の無い話。
- 570 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 12:22:55.88 ID:hDsckVNf.net]
- privateもテストしろよハゲ
- 571 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 12:26:06.83 ID:sqXfkC+n.net]
- privateをpublicにしてもいいよねって言ってるやつは、改修で命名とかしたことないんかな
- 572 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 12:26:36.41 ID:hDsckVNf.net]
- どこの現場でも通じないトンデモ理論を前面に出して話してんじゃねーぞガイジ
- 573 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 12:29:48.69 ID:Gy+Up1+B.net]
- >>551
クラスの仕様変更でpublicになったときに追加すればいい 極端な話、複数のpublicメンバの中でprivateAとprivateBが使われてて各privateの挙動は実装者の想定と実は違ったとしてもすべてのpublicメンバの挙動が仕様通りなら(クラス仕様変更して変なバグを引く羽目になるまで)なんの問題もない その時対処する事案
- 574 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 12:55:27.30 ID:MMMvRh6C.net]
- privateな状態を確認するテストのがテスト数が減る。
二つのpublicなメソッドの関連をテストする場合、 n*m になるが 状態が k 個の場合、 (n + m)*k になるわけだよ。 無理にpublicだけのテストを書くことがどれだけアホか。
- 575 名前:デフォルトの名無しさん [2020/07/03(金) 13:00:40 ID:lDWf2b6S.net]
- Javaで外クラスから内クラスのprivateメンバが見れるのはなぜですか?
論理的思考によるとどう考えても理論に欠陥があり矛盾してる。 みなさんはこのJavaにおけるクラス体系をおかしいと思いながら割りきって使ってるのですよね?
- 576 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 13:19:27.55 ID:Gy+Up1+B.net]
- >>555
privateテストでテスト数減るならその方がいいのは自分も同意 誤 privateはテストしなければならない 誤 privateはテストしてはならない 正 必要なテストだけ簡単になるように書けば良い
- 577 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 13:48:21.04 ID:BB9T+E2r.net]
- >>556
https://ja.coder.work/so/java/17371
- 578 名前:デフォルトの名無しさん [2020/07/03(金) 14:48:27.68 ID:lDWf2b6S.net]
- >>558
それは内クラスから外クラスが見えることの説明。 わたしの質問はなぜ外クラスから内クラスのprivateメンバが見れるのか?
- 579 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 15:31:34 ID:/F47has6.net]
- >>525
もしかして 神オブジェクト?
- 580 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 15:33:00 ID:/F47has6.net]
- よく見たら全部privateか。
...いや、そんなの誰が呼ぶんだ。
- 581 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 15:36:50.41 ID:FAOrvW1R.net]
- しらんがな、言ったやつがコードサンプルでも出さなきゃ説明力足りてないから分からんだろ
外部クラスがどうのとか言ってるやつもな。Javaの外部内部の関係も理解が曖昧なんだろ
- 582 名前:デフォルトの名無しさん [2020/07/03(金) 16:46:44.22 ID:q5wbDGG6.net]
- Javaって修飾子付けないとpackage privateがデフォルトだからその事言ってんじゃね?
package privateとは言い換えればpakage内publicと同じだから
- 583 名前:デフォルトの名無しさん [2020/07/03(金) 16:51:38 ID:36TwtcUk.net]
- じゃあpimplで。
- 584 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 16:55:37 ID:hDsckVNf.net]
- >>554
言い訳こいてんじゃねーよ 単体テストにpublicもprivateもねーよ 全メソッドテストしろや
- 585 名前:デフォルトの名無しさん [2020/07/03(金) 16:58:29 ID:36TwtcUk.net]
- 弊社はC2カバレッジ100%に満たないものは出荷できませんけどね。
- 586 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 17:19:33.24 ID:Gy+Up1+B.net]
- c2の100%は分野次第だがwebや基幹程度なら無駄と欺瞞で逆に信用できない
- 587 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 17:47:09.01 ID:DQKehNsV.net]
- それな
- 588 名前:デフォルトの名無しさん mailto:age [2020/07/03(金) 19:19:16 ID:TUVANe+h.net]
- >>566
普通そうだよね
- 589 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 19:53:44 ID:FArQoHTp.net]
- 特に組み込みはC2カバレッジが常識なんだけど、ISO26262では関数カバレッジでOKという不思議。
- 590 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 20:32:31.27 ID:Gy+Up1+B.net]
- >>569
分野によるって言ってるだろ 人命関わらないgui優先で運用回避がまかり通る分野全般はカバレッジなしやc0カバレッジ70%(自動生成コード除く)とかなんだよ
- 591 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 21:06:04.59 ID:DQKehNsV.net]
- あー、ここ組み込みとかのやつらが多いのか!納得だわ
- 592 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 03:14:27.24 ID:1AXxY7r6.net]
- >>559
そりゃインナークラスは親クラスのメンバーなんだから 親クラスから見えるのは当たり前。 巨大クラスを作ってその中にインナークラスが大量にあるような コードならそれはカプセル化できてない。Java使ったから自動的に カプセル化できるものでも適切なOOの設計になるわけでもない。 それらがやりやすいような言語なだけ。 適切に使えば、インナークラスを使わなかった場合パブリックで メンバーにアクセスさせなければいけないのに対して、インナークラスの メンバーはアウタークラス以外には見えないわけだから、よりカプセル化は 進んでいる。
- 593 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 03:31:41.97 ID:1AXxY7r6.net]
- 親クラスは不適切だった。インナークラスはアウタークラスのメンバーなんだから
メンバーを見られるのは当たり前。
- 594 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 08:51:34.07 ID:+L2cGNSv.net]
- >>572
組み込み開発やってるけど、ちゃんと最先端の勉強をしている人はオブジェクト指向理解しているよ(別にOOP自体は普及しきったノウハウだが)。 言語はC/C++言語ほぼ一択だけど。(他はRustくらいだが、まだ普及しない) まぁ、WEBやアプリ開発等、我々から見て抽象レイヤーで使われるノウハウを軽視するおじさん上司も多いし、組み込みに残念なプログラマーが多いことは否定しないけど。
- 595 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 09:02:21.50 ID:+L2cGNSv.net]
- >>566
カバレッジテストとアクセス修飾子って関係あるの? カバレッジテストを合格するためにpublicにするとか、本末転倒じゃね?
- 596 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 10:13:15.22 ID:6t8LAACC.net]
- >>576
ねーよ 黙って100%にしろや
|

|