カプセル化(英語: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)
探検
カプセル化の有害性、オブジェクト指向は愚かな考え
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/06/18(木) 23:47:36.69ID:l/2SQUll484デフォルトの名無しさん
2020/06/29(月) 20:18:08.97ID:6d9dL1u1 そう、問題が起こるのはいつも人間関係です
485デフォルトの名無しさん
2020/06/29(月) 20:19:42.34ID:tYVp58Ca つまり、人間関係の問題を持ってきても、技術を否定したことにはならないのです。
486デフォルトの名無しさん
2020/06/29(月) 21:42:10.57ID:P3P3vIj6487デフォルトの名無しさん
2020/06/29(月) 23:35:22.76ID:L39gVdue >>482
そこで挙げている階層化の問題だが、階層化せずフラットに格納すれば解決するのか?
階層化しないということは同じレベルに大量の物が同格に並ぶわけだが、そうなると目的の物を探すのが困難になりすでにあるデータと同じものを重複して格納する危険性があるだろう。
またアクセスパスが長くなるというが、フラットな構造で多数の物を適切に命名しようとすれば階層的な名前付けが役立つはずだが、それすら長くなると忌避するなら場当たり的に短い名前を着けていっていずれ収集が着かなくなるだけでないの?
お前さんが挙げた階層化の問題は階層化の仕方が悪い(下手な)だけで、階層化をしなければ解決するというものではなかろう。
そこで挙げている階層化の問題だが、階層化せずフラットに格納すれば解決するのか?
階層化しないということは同じレベルに大量の物が同格に並ぶわけだが、そうなると目的の物を探すのが困難になりすでにあるデータと同じものを重複して格納する危険性があるだろう。
またアクセスパスが長くなるというが、フラットな構造で多数の物を適切に命名しようとすれば階層的な名前付けが役立つはずだが、それすら長くなると忌避するなら場当たり的に短い名前を着けていっていずれ収集が着かなくなるだけでないの?
お前さんが挙げた階層化の問題は階層化の仕方が悪い(下手な)だけで、階層化をしなければ解決するというものではなかろう。
488デフォルトの名無しさん
2020/06/30(火) 05:33:42.93ID:v2qXZCJh 結局、分類だったり抽象化のやり方がクソってだけの話だろ。
フラットにしようが階層にしようが、クソな分け方したらどうにもならんてだけの話だ。
フラットにしようが階層にしようが、クソな分け方したらどうにもならんてだけの話だ。
489デフォルトの名無しさん
2020/06/30(火) 08:05:51.26ID:GiU27GCt490デフォルトの名無しさん
2020/06/30(火) 08:11:00.58ID:PIU/381m >>486
ぴえ?
ぴえ?
491デフォルトの名無しさん
2020/06/30(火) 10:40:18.75ID:J3IrN4Ey492途中から見た。
2020/06/30(火) 19:35:05.23ID:g7PLkMcM なんか、privateメソッドのテストでもめているけど、なんで。
そもそも、privateメソッドを外部から呼び出してテストしないといけない場面が想像できないのだが。
クラスライブラリのコードを紛失したとか笑えないケースを想定しているの?
そもそも、privateメソッドを外部から呼び出してテストしないといけない場面が想像できないのだが。
クラスライブラリのコードを紛失したとか笑えないケースを想定しているの?
493デフォルトの名無しさん
2020/06/30(火) 19:48:43.49ID:MKfuvp+I gitや自動ビルドツールの存在がなかった時代の
オブジェクト指向技術は淘汰されてもいいんじゃない?
昔はこれらがなかったからカプセル化で神経質に
防御してたけど
今は無理にパッケージを固めてやり取りすることが
なくなって
gitでソースを差分転送して再ビルドする方式に
切り替わった
旧仕様はブランチを切り分けといて復旧が簡単に
なって、仕様変更に対してそこまでビビらなくて良くなった。
それと自作のアプリのオブジェクトで
webからインストールしたライブラリや
フレームワークが自動生成して提供するもの以外で
それほど長時間状態を保持するような巨大なオブジェクト
構造を自作設計して作成することがあるか?
あるとすれば
webのセッションや
オープンワールドやFPSみたいなゲームくらいか
オブジェクト指向技術は淘汰されてもいいんじゃない?
昔はこれらがなかったからカプセル化で神経質に
防御してたけど
今は無理にパッケージを固めてやり取りすることが
なくなって
gitでソースを差分転送して再ビルドする方式に
切り替わった
旧仕様はブランチを切り分けといて復旧が簡単に
なって、仕様変更に対してそこまでビビらなくて良くなった。
それと自作のアプリのオブジェクトで
webからインストールしたライブラリや
フレームワークが自動生成して提供するもの以外で
それほど長時間状態を保持するような巨大なオブジェクト
構造を自作設計して作成することがあるか?
あるとすれば
webのセッションや
オープンワールドやFPSみたいなゲームくらいか
494デフォルトの名無しさん
2020/06/30(火) 20:19:26.97ID:v2qXZCJh 今でもSIerなんかはコード書き換えないことに固執してるから可視範囲に対して神経質なんだよ。
495デフォルトの名無しさん
2020/06/30(火) 20:27:32.13ID:+5DxT57L >>492
それは「テストの時にだけpublicに変えればいいじゃん」か「privateはpublicに内在してるから直接テストする必要ないじゃん」のどっちの意味ですか?
それは「テストの時にだけpublicに変えればいいじゃん」か「privateはpublicに内在してるから直接テストする必要ないじゃん」のどっちの意味ですか?
496デフォルトの名無しさん
2020/06/30(火) 20:58:39.82ID:Ya6sc1A9 >>492
コード紛失してなくても他社開発のをガッチャンコだと手が出せないでしょ。
コード紛失してなくても他社開発のをガッチャンコだと手が出せないでしょ。
497デフォルトの名無しさん
2020/06/30(火) 20:58:42.09ID:ww2Xd+MO × テストの時にだけpublicに変えればいいじゃん
○ テストがやりにくいというのは設計がまずいということ
自然な形でpublicになるような設計を改善すべきだ
○ テストがやりにくいというのは設計がまずいということ
自然な形でpublicになるような設計を改善すべきだ
498デフォルトの名無しさん
2020/06/30(火) 20:59:02.71ID:Ya6sc1A9 小規模なら問題ない
499デフォルトの名無しさん
2020/06/30(火) 21:38:14.42ID:BIUXizBX 他社のコードをテストすんの?
500デフォルトの名無しさん
2020/06/30(火) 22:07:21.34ID:GiU27GCt >>497
はぁ?バカはレスすんなよ
はぁ?バカはレスすんなよ
501デフォルトの名無しさん
2020/06/30(火) 22:42:13.84ID:zKRJDZmr >>499
そりゃ結合試験はするだろ
そりゃ結合試験はするだろ
502デフォルトの名無しさん
2020/06/30(火) 23:23:26.17ID:BIUXizBX >>501
結合試験時に他社コードのprivateメソッドを態々呼出してテストすんの?
結合試験時に他社コードのprivateメソッドを態々呼出してテストすんの?
503途中から見た。
2020/07/01(水) 00:09:32.11ID:vgPSMoJs >>495
よくわからないが...強いて言うなら後者?
第一、クラスって実装者が責任を持ってテストするものだろう。
なんで、privateで定義されたものをpublicにして呼び出そうとするのかも、正直、わからない。
ブラックボックステストでもしたいの?
まぁ、ブラックボックステストってprivateメソッドを呼び出せば成立するかというと、違うと思うけど。
正直、何がしたいのかわからなさすぎて困惑している。
よくわからないが...強いて言うなら後者?
第一、クラスって実装者が責任を持ってテストするものだろう。
なんで、privateで定義されたものをpublicにして呼び出そうとするのかも、正直、わからない。
ブラックボックステストでもしたいの?
まぁ、ブラックボックステストってprivateメソッドを呼び出せば成立するかというと、違うと思うけど。
正直、何がしたいのかわからなさすぎて困惑している。
504デフォルトの名無しさん
2020/07/01(水) 00:11:23.37ID:Dh09feZF >第一、クラスって実装者が責任を持ってテストするものだろう。
これが守られてりゃこのスレみたいな議論は起こらんわ。
これが守られてりゃこのスレみたいな議論は起こらんわ。
505デフォルトの名無しさん
2020/07/01(水) 00:22:36.05ID:dTufBNXb 守るも何もクラスに不具合があれば実装者の責任だろ
って言うのが通用しないのか?
って言うのが通用しないのか?
506デフォルトの名無しさん
2020/07/01(水) 00:26:31.70ID:Dh09feZF 責任といってももういない奴に責任は取れんわな。
507デフォルトの名無しさん
2020/07/01(水) 00:33:27.93ID:XAYXSYxH 客先に納めたプログラムを客先が勝手に変更したら責任は外れる契約になってると思う
これは弊社の納めたプログラムではありませんってなるから
社内で引き継いだなら文句を言うのは自由だが任された者がなんとかしろの精神だろ
これは弊社の納めたプログラムではありませんってなるから
社内で引き継いだなら文句を言うのは自由だが任された者がなんとかしろの精神だろ
508デフォルトの名無しさん
2020/07/01(水) 00:43:31.96ID:Dh09feZF クラスごとにしっかりテストがあって
引き継ぎがしっかりされる職場ばかりなら何の問題もないだろうね。
とても幸せな世界でいいですね。
引き継ぎがしっかりされる職場ばかりなら何の問題もないだろうね。
とても幸せな世界でいいですね。
509デフォルトの名無しさん
2020/07/01(水) 01:04:03.02ID:Ke5amsYp まだ続いてたか
結局問題は出来の悪いモジュールをどうするかって話だろ
結局問題は出来の悪いモジュールをどうするかって話だろ
510デフォルトの名無しさん
2020/07/01(水) 01:36:00.07ID:bx11ZQ99 違うよ
visualstudioがテストプロジェクトでprivateをpublicみたいに呼べるようにするだけ
visualstudioがテストプロジェクトでprivateをpublicみたいに呼べるようにするだけ
511デフォルトの名無しさん
2020/07/01(水) 06:19:16.09ID:y/Wgtnem >>503
privateを呼び出す必要があるってのはUnit Testの時で、実装者とテスターが同一人物かどうかは関係ないよ。
オブジェクト指向に限らずテスト理論の話になっちゃうんだけど、プロジェクトや規格で指定されるUnit Testの種類によってはpublic経由でprivate呼び出してたら組合せ爆発してテストドライバやスタブの開発やレビューだけで多大な工数が必要になってやってられなくなる。
なので十分に単純化されたprivateを含めて関数毎にテストする必要が出てくるのよ。
privateを呼び出す必要があるってのはUnit Testの時で、実装者とテスターが同一人物かどうかは関係ないよ。
オブジェクト指向に限らずテスト理論の話になっちゃうんだけど、プロジェクトや規格で指定されるUnit Testの種類によってはpublic経由でprivate呼び出してたら組合せ爆発してテストドライバやスタブの開発やレビューだけで多大な工数が必要になってやってられなくなる。
なので十分に単純化されたprivateを含めて関数毎にテストする必要が出てくるのよ。
512デフォルトの名無しさん
2020/07/01(水) 06:46:59.11ID:5jdJ/dE3513デフォルトの名無しさん
2020/07/01(水) 06:53:14.54ID:lozEWamw >>511
> public経由でprivate呼び出してたら組合せ爆発してテストドライバやスタブの開発やレビューだけで多大な工数が必要になってやってられなくなる。
そういうことだよね。だからそれはpublicメソッドが行ってる機能が多すぎるわけで
複数のpublicメソッドに分解するわけ。これが設計。
適切な関数の行数って思ったより短いものだから。
俺の場合、一部のcaseテーブルのようなものを除いてロジックと呼べるようなものがあるコードは
長いもので1関数30行〜40行程度半分以上は10行程度だよ
> public経由でprivate呼び出してたら組合せ爆発してテストドライバやスタブの開発やレビューだけで多大な工数が必要になってやってられなくなる。
そういうことだよね。だからそれはpublicメソッドが行ってる機能が多すぎるわけで
複数のpublicメソッドに分解するわけ。これが設計。
適切な関数の行数って思ったより短いものだから。
俺の場合、一部のcaseテーブルのようなものを除いてロジックと呼べるようなものがあるコードは
長いもので1関数30行〜40行程度半分以上は10行程度だよ
514デフォルトの名無しさん
2020/07/01(水) 08:23:11.98ID:y4QPMVjI >>512
何時何分何秒地球が何周回ったときに言いましたかーみたいな煽りだな
何時何分何秒地球が何周回ったときに言いましたかーみたいな煽りだな
515デフォルトの名無しさん
2020/07/01(水) 08:27:13.77ID:3Re1TFuk516途中から見た。
2020/07/01(水) 11:10:06.09ID:LiVkSFt2 結合テストと総合テストって同じ意味なのか?
517デフォルトの名無しさん
2020/07/01(水) 12:14:34.41ID:hgyYQ8XK 総合テストって検収テストと同じじゃね?
518デフォルトの名無しさん
2020/07/01(水) 12:24:10.62ID:wljUBRxY テストの呼び方はプロジェクトによって違うからなんとも言えんなぁ
519途中から見た。
2020/07/01(水) 12:36:28.97ID:LiVkSFt2 なんというか...コミュニケーションがまともにとれていないのでは?
恐らく、他人の作ったライブラリに対して単体テストをお前はやるのか?という意図で聞いた質問に、結合試験はするだろと回答したり、
結合試験と総合試験という字面で見ると似ているけど全然違う話を混在させたり、
似ているようで関係のない話を持ち出して混沌としているな。
語りたい事の本質が行方不明になっているように見える。
恐らく、他人の作ったライブラリに対して単体テストをお前はやるのか?という意図で聞いた質問に、結合試験はするだろと回答したり、
結合試験と総合試験という字面で見ると似ているけど全然違う話を混在させたり、
似ているようで関係のない話を持ち出して混沌としているな。
語りたい事の本質が行方不明になっているように見える。
520デフォルトの名無しさん
2020/07/01(水) 14:20:36.35ID:JqIYLyXt >>512は総合じゃなく統合って書いてるぞ
結合テストのことを統合テストと呼ぶところもある
結合の度合いによって結合、統合、総合とそれぞれ分けてるところもある
単なる読み間違いなのか結合 = 統合の意味で使ってるのかは知らんけど
結合テストのことを統合テストと呼ぶところもある
結合の度合いによって結合、統合、総合とそれぞれ分けてるところもある
単なる読み間違いなのか結合 = 統合の意味で使ってるのかは知らんけど
521途中から見た。
2020/07/01(水) 14:54:20.92ID:LiVkSFt2 うわっ!恥ずかしいミスをしてたのは自分だったか。あとで、読み直す...。
522デフォルトの名無しさん
2020/07/01(水) 17:50:33.35ID:1PwA88RR visualstudioのテストプロジェクトが不甲斐ないってだけやし
523デフォルトの名無しさん
2020/07/02(木) 19:42:17.69ID:84e/i8uV privateメソッドテストするとか正気?
テストしなくてよくするためのprivateだろ
テストしなくてよくするためのprivateだろ
524デフォルトの名無しさん
2020/07/02(木) 19:49:51.80ID:iX514c6x テストする必要があるというのは
全部書き直した方がましということだが
全部書き直した方がましということだが
525デフォルトの名無しさん
2020/07/02(木) 20:08:44.37ID:/yt09sjO526デフォルトの名無しさん
2020/07/02(木) 20:10:40.42ID:/yt09sjO マイクロソフトに頼らんで独自にテストプロジェクト作ってるような会社はできてんで
visualstudioの都合でテストやりたくないって言ってるだけだろクズども
visualstudioの都合でテストやりたくないって言ってるだけだろクズども
527デフォルトの名無しさん
2020/07/02(木) 20:46:21.86ID:Vurtjy2V 関数どころか変数に至るまで一つ一つ丁寧に検査してましたわ。
528デフォルトの名無しさん
2020/07/02(木) 21:29:57.44ID:lIo9GiA1 >>525
どんだけ巨大なクラスでも全部privateだと外から一切呼び出せないデッドコードになるのでテストする意味さえないだろ。
どんだけ巨大なクラスでも全部privateだと外から一切呼び出せないデッドコードになるのでテストする意味さえないだろ。
529デフォルトの名無しさん
2020/07/02(木) 21:35:43.34ID:UKbwg08G >>528
せやかてpublic通してたら結合テストじゃんw
せやかてpublic通してたら結合テストじゃんw
530デフォルトの名無しさん
2020/07/02(木) 21:36:02.64ID:UKbwg08G unit testの意味わかっとんのけ?
531デフォルトの名無しさん
2020/07/02(木) 21:37:29.20ID:7zBU/W9S プロジェクトによって違ってたなあ
532デフォルトの名無しさん
2020/07/02(木) 21:40:09.15ID:UKbwg08G533デフォルトの名無しさん
2020/07/02(木) 22:14:17.02ID:/yt09sjO >>528
Form1とかそんな感じじゃん
Form1とかそんな感じじゃん
534デフォルトの名無しさん
2020/07/03(金) 07:01:01.95ID:Ul5hp/bW >>525
誰も使わんからテスト不要だね
誰も使わんからテスト不要だね
535デフォルトの名無しさん
2020/07/03(金) 08:34:55.79ID:zR3byV+3 >>532
それは珍しいな
それは珍しいな
536デフォルトの名無しさん
2020/07/03(金) 08:56:10.03ID:N+TCe3uh これは酷い。RFC 3439はネットワークの仕様の話であってオブジェクト志向なんか
一切関係ないし、プログラミングの話でもない。
偏差値が低い学校でだけ教えてた事実なんてないしアメリカの大規模システムは
全部OOでカプセル化が基本。
的外れすぎて開いた口が塞がらない。これ書いた人間が全く一切わかってないのはよくわかった。
一切関係ないし、プログラミングの話でもない。
偏差値が低い学校でだけ教えてた事実なんてないしアメリカの大規模システムは
全部OOでカプセル化が基本。
的外れすぎて開いた口が塞がらない。これ書いた人間が全く一切わかってないのはよくわかった。
537デフォルトの名無しさん
2020/07/03(金) 09:22:53.27ID:r9jTvXIP >>536
わざとバカなことを言って他の人が本気で反論や議論してくるのを笑ってる可能性もゼロではないが、まあ単に本物のバカという可能性のが高いと思う
わざとバカなことを言って他の人が本気で反論や議論してくるのを笑ってる可能性もゼロではないが、まあ単に本物のバカという可能性のが高いと思う
538デフォルトの名無しさん
2020/07/03(金) 10:20:55.42ID:N+TCe3uh >>537
本気感が凄いね。反論とかしようがない1から10まで間違ってるレベルだし。
本気感が凄いね。反論とかしようがない1から10まで間違ってるレベルだし。
539デフォルトの名無しさん
2020/07/03(金) 10:22:52.04ID:N+TCe3uh こんなんでもRFC確認する人なんてほとんどいないだろうし、クラウドがあるじゃないですか!
のレベルの日本ではショーンK的に通用しそうというか、結構このスレでも通用してるのがおっかない。
のレベルの日本ではショーンK的に通用しそうというか、結構このスレでも通用してるのがおっかない。
540デフォルトの名無しさん
2020/07/03(金) 10:25:42.60ID:lDWf2b6S Javaで外クラスから内クラスのprivateメンバが見れるのはなぜですか?
超論理的思考によるとどう考えても理論に欠陥があり矛盾してる。
みなさんはこのJavaにおけるクラス体系をおかしいと思いながら割りきって使ってるのですよね?
超論理的思考によるとどう考えても理論に欠陥があり矛盾してる。
みなさんはこのJavaにおけるクラス体系をおかしいと思いながら割りきって使ってるのですよね?
541デフォルトの名無しさん
2020/07/03(金) 10:27:37.08ID:N+TCe3uh 単に道具だから自分で考えて必要なら使えば良い訳で。
カプセル化ってのはつまり部署ごとにお前のところはお前で責任を持て、
お前が変えたからって他の部署に仕事をさせるな、ということだから、
それができてればなんでも良い。
カプセル化ってのはつまり部署ごとにお前のところはお前で責任を持て、
お前が変えたからって他の部署に仕事をさせるな、ということだから、
それができてればなんでも良い。
542デフォルトの名無しさん
2020/07/03(金) 11:40:51.40ID:x82j4VqA 複数の開発会社が絡む大規模案件と
一社開発や個人開発の小規模案件を
ゴッチャゴチャにして同列で語り合うから、話が噛み合わないし、話が終わらないんよ。
一社開発や個人開発の小規模案件を
ゴッチャゴチャにして同列で語り合うから、話が噛み合わないし、話が終わらないんよ。
543デフォルトの名無しさん
2020/07/03(金) 11:47:43.16ID:Gy+Up1+B544デフォルトの名無しさん
2020/07/03(金) 11:51:37.50ID:uIgOlo/V545デフォルトの名無しさん
2020/07/03(金) 11:53:31.15ID:N+TCe3uh そもそもOOとかは大規模開発するために出てきた手法だから個人で小さいもの
作ってるなら関数でもスパゲッティでも本人わかってりゃいいわけだし、昔は
関数でも部署ごとで話し合ってちゃんとやってたけど、どうしても直接アクセスして
変更の際ぶっ壊れるようなものを作るやつが出るから、じゃあもう見せなきゃそういう
事態は起こらないということで実際それはうまくいってる。
個人のソフトとかは好きにすれば良いし、好きにできるようになってるんだから
それぞれ道具を自分の必要に応じて使って勝手にやれば良い。
作ってるなら関数でもスパゲッティでも本人わかってりゃいいわけだし、昔は
関数でも部署ごとで話し合ってちゃんとやってたけど、どうしても直接アクセスして
変更の際ぶっ壊れるようなものを作るやつが出るから、じゃあもう見せなきゃそういう
事態は起こらないということで実際それはうまくいってる。
個人のソフトとかは好きにすれば良いし、好きにできるようになってるんだから
それぞれ道具を自分の必要に応じて使って勝手にやれば良い。
546デフォルトの名無しさん
2020/07/03(金) 11:59:07.38ID:Gy+Up1+B >>544
「privateはxunit testingしなくていい」と言われる理由はそこだ
他のクラスとの関わりとして必要な仕様は非privateメンバのみに着目すればいい
publicメンバの振る舞いが変わらずすべてのテストをパスできるならprivateがどう変更されようが他のクラスからは関係ないからな
「privateはxunit testingしなくていい」と言われる理由はそこだ
他のクラスとの関わりとして必要な仕様は非privateメンバのみに着目すればいい
publicメンバの振る舞いが変わらずすべてのテストをパスできるならprivateがどう変更されようが他のクラスからは関係ないからな
547デフォルトの名無しさん
2020/07/03(金) 12:07:31.88ID:uIgOlo/V つまりprivateをテストするってことは仕様が明確になってるわけで
publicにしても問題ないってことだよね
publicにしても問題ないってことだよね
548デフォルトの名無しさん
2020/07/03(金) 12:07:34.57ID:Gy+Up1+B 勢いで書いたから非privateとpublicがごっちゃになってるけどこの手の話題でpublicと書いてあったら全部非privateと読み替えて下さい
549デフォルトの名無しさん
2020/07/03(金) 12:10:41.37ID:BB9T+E2r >>540
超論理的思考によるとって、論理を超えた思考なんかされたって会話にならないから、論理的思考をした上で疑問があれば相談してくれ。
超論理的思考によるとって、論理を超えた思考なんかされたって会話にならないから、論理的思考をした上で疑問があれば相談してくれ。
550デフォルトの名無しさん
2020/07/03(金) 12:16:49.80ID:N+TCe3uh Privateをテストするかどうかはプロジェクトごとのテストのやり方次第だし、
なんのテストかにもよるわけで。
デベロッパーテストなら当然するだろうし、リグレッションテストで普通は
プライベートメソッドをテストしないだろう。
その辺はカプセル化とかOOとかはあまり関係の無い話。
なんのテストかにもよるわけで。
デベロッパーテストなら当然するだろうし、リグレッションテストで普通は
プライベートメソッドをテストしないだろう。
その辺はカプセル化とかOOとかはあまり関係の無い話。
551デフォルトの名無しさん
2020/07/03(金) 12:22:55.88ID:hDsckVNf privateもテストしろよハゲ
552デフォルトの名無しさん
2020/07/03(金) 12:26:06.83ID:sqXfkC+n privateをpublicにしてもいいよねって言ってるやつは、改修で命名とかしたことないんかな
553デフォルトの名無しさん
2020/07/03(金) 12:26:36.41ID:hDsckVNf どこの現場でも通じないトンデモ理論を前面に出して話してんじゃねーぞガイジ
554デフォルトの名無しさん
2020/07/03(金) 12:29:48.69ID:Gy+Up1+B >>551
クラスの仕様変更でpublicになったときに追加すればいい
極端な話、複数のpublicメンバの中でprivateAとprivateBが使われてて各privateの挙動は実装者の想定と実は違ったとしてもすべてのpublicメンバの挙動が仕様通りなら(クラス仕様変更して変なバグを引く羽目になるまで)なんの問題もない
その時対処する事案
クラスの仕様変更でpublicになったときに追加すればいい
極端な話、複数のpublicメンバの中でprivateAとprivateBが使われてて各privateの挙動は実装者の想定と実は違ったとしてもすべてのpublicメンバの挙動が仕様通りなら(クラス仕様変更して変なバグを引く羽目になるまで)なんの問題もない
その時対処する事案
555デフォルトの名無しさん
2020/07/03(金) 12:55:27.30ID:MMMvRh6C privateな状態を確認するテストのがテスト数が減る。
二つのpublicなメソッドの関連をテストする場合、
n*m になるが
状態が k 個の場合、 (n + m)*k になるわけだよ。
無理にpublicだけのテストを書くことがどれだけアホか。
二つのpublicなメソッドの関連をテストする場合、
n*m になるが
状態が k 個の場合、 (n + m)*k になるわけだよ。
無理にpublicだけのテストを書くことがどれだけアホか。
556デフォルトの名無しさん
2020/07/03(金) 13:00:40.80ID:lDWf2b6S Javaで外クラスから内クラスのprivateメンバが見れるのはなぜですか?
論理的思考によるとどう考えても理論に欠陥があり矛盾してる。
みなさんはこのJavaにおけるクラス体系をおかしいと思いながら割りきって使ってるのですよね?
論理的思考によるとどう考えても理論に欠陥があり矛盾してる。
みなさんはこのJavaにおけるクラス体系をおかしいと思いながら割りきって使ってるのですよね?
557デフォルトの名無しさん
2020/07/03(金) 13:19:27.55ID:Gy+Up1+B >>555
privateテストでテスト数減るならその方がいいのは自分も同意
誤 privateはテストしなければならない
誤 privateはテストしてはならない
正 必要なテストだけ簡単になるように書けば良い
privateテストでテスト数減るならその方がいいのは自分も同意
誤 privateはテストしなければならない
誤 privateはテストしてはならない
正 必要なテストだけ簡単になるように書けば良い
558デフォルトの名無しさん
2020/07/03(金) 13:48:21.04ID:BB9T+E2r559デフォルトの名無しさん
2020/07/03(金) 14:48:27.68ID:lDWf2b6S560デフォルトの名無しさん
2020/07/03(金) 15:31:34.78ID:/F47has6 >>525
もしかして 神オブジェクト?
もしかして 神オブジェクト?
561デフォルトの名無しさん
2020/07/03(金) 15:33:00.38ID:/F47has6 よく見たら全部privateか。
...いや、そんなの誰が呼ぶんだ。
...いや、そんなの誰が呼ぶんだ。
562デフォルトの名無しさん
2020/07/03(金) 15:36:50.41ID:FAOrvW1R しらんがな、言ったやつがコードサンプルでも出さなきゃ説明力足りてないから分からんだろ
外部クラスがどうのとか言ってるやつもな。Javaの外部内部の関係も理解が曖昧なんだろ
外部クラスがどうのとか言ってるやつもな。Javaの外部内部の関係も理解が曖昧なんだろ
563デフォルトの名無しさん
2020/07/03(金) 16:46:44.22ID:q5wbDGG6 Javaって修飾子付けないとpackage privateがデフォルトだからその事言ってんじゃね?
package privateとは言い換えればpakage内publicと同じだから
package privateとは言い換えればpakage内publicと同じだから
564デフォルトの名無しさん
2020/07/03(金) 16:51:38.12ID:36TwtcUk じゃあpimplで。
565デフォルトの名無しさん
2020/07/03(金) 16:55:37.72ID:hDsckVNf566デフォルトの名無しさん
2020/07/03(金) 16:58:29.95ID:36TwtcUk 弊社はC2カバレッジ100%に満たないものは出荷できませんけどね。
567デフォルトの名無しさん
2020/07/03(金) 17:19:33.24ID:Gy+Up1+B c2の100%は分野次第だがwebや基幹程度なら無駄と欺瞞で逆に信用できない
568デフォルトの名無しさん
2020/07/03(金) 17:47:09.01ID:DQKehNsV それな
569デフォルトの名無しさん
2020/07/03(金) 19:19:16.44ID:TUVANe+h >>566
普通そうだよね
普通そうだよね
570デフォルトの名無しさん
2020/07/03(金) 19:53:44.94ID:FArQoHTp 特に組み込みはC2カバレッジが常識なんだけど、ISO26262では関数カバレッジでOKという不思議。
571デフォルトの名無しさん
2020/07/03(金) 20:32:31.27ID:Gy+Up1+B572デフォルトの名無しさん
2020/07/03(金) 21:06:04.59ID:DQKehNsV あー、ここ組み込みとかのやつらが多いのか!納得だわ
573デフォルトの名無しさん
2020/07/04(土) 03:14:27.24ID:1AXxY7r6 >>559
そりゃインナークラスは親クラスのメンバーなんだから
親クラスから見えるのは当たり前。
巨大クラスを作ってその中にインナークラスが大量にあるような
コードならそれはカプセル化できてない。Java使ったから自動的に
カプセル化できるものでも適切なOOの設計になるわけでもない。
それらがやりやすいような言語なだけ。
適切に使えば、インナークラスを使わなかった場合パブリックで
メンバーにアクセスさせなければいけないのに対して、インナークラスの
メンバーはアウタークラス以外には見えないわけだから、よりカプセル化は
進んでいる。
そりゃインナークラスは親クラスのメンバーなんだから
親クラスから見えるのは当たり前。
巨大クラスを作ってその中にインナークラスが大量にあるような
コードならそれはカプセル化できてない。Java使ったから自動的に
カプセル化できるものでも適切なOOの設計になるわけでもない。
それらがやりやすいような言語なだけ。
適切に使えば、インナークラスを使わなかった場合パブリックで
メンバーにアクセスさせなければいけないのに対して、インナークラスの
メンバーはアウタークラス以外には見えないわけだから、よりカプセル化は
進んでいる。
574デフォルトの名無しさん
2020/07/04(土) 03:31:41.97ID:1AXxY7r6 親クラスは不適切だった。インナークラスはアウタークラスのメンバーなんだから
メンバーを見られるのは当たり前。
メンバーを見られるのは当たり前。
575デフォルトの名無しさん
2020/07/04(土) 08:51:34.07ID:+L2cGNSv >>572
組み込み開発やってるけど、ちゃんと最先端の勉強をしている人はオブジェクト指向理解しているよ(別にOOP自体は普及しきったノウハウだが)。
言語はC/C++言語ほぼ一択だけど。(他はRustくらいだが、まだ普及しない)
まぁ、WEBやアプリ開発等、我々から見て抽象レイヤーで使われるノウハウを軽視するおじさん上司も多いし、組み込みに残念なプログラマーが多いことは否定しないけど。
組み込み開発やってるけど、ちゃんと最先端の勉強をしている人はオブジェクト指向理解しているよ(別にOOP自体は普及しきったノウハウだが)。
言語はC/C++言語ほぼ一択だけど。(他はRustくらいだが、まだ普及しない)
まぁ、WEBやアプリ開発等、我々から見て抽象レイヤーで使われるノウハウを軽視するおじさん上司も多いし、組み込みに残念なプログラマーが多いことは否定しないけど。
576デフォルトの名無しさん
2020/07/04(土) 09:02:21.50ID:+L2cGNSv577デフォルトの名無しさん
2020/07/04(土) 10:13:15.22ID:6t8LAACC578デフォルトの名無しさん
2020/07/04(土) 10:19:47.88ID:+L2cGNSv 話の流れからして、テストのためにpublicにしろに読み取れたけど、ミスリード?
まぁ、そんな馬鹿な話、あるわけねーか。
まぁ、そんな馬鹿な話、あるわけねーか。
579デフォルトの名無しさん
2020/07/04(土) 10:30:23.87ID:xLCX+W2/580デフォルトの名無しさん
2020/07/04(土) 10:45:14.19ID:MjvraXl0 草、どんな立場だよw
581デフォルトの名無しさん
2020/07/04(土) 11:02:29.17ID:pmIasW6W publicにしなくてもリフレクション使ったりすればええんやで
privateだからテストしないなんてプログラマとしてありえない
privateだからテストしないなんてプログラマとしてありえない
582デフォルトの名無しさん
2020/07/04(土) 11:03:03.13ID:pmIasW6W C2 100%は新人でも最低ライン
583デフォルトの名無しさん
2020/07/04(土) 11:06:53.34ID:pmIasW6W テストの仕方を知らない教えない会社があるんだなー
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【実況】博衣こよりのえちえち歌枠🧪
- 高市「発言は撤回しない。謝罪もするな。外務省局長!任せたぞ。」👈なにをさせたかったの?😲 [826239858]
- 【速報】51歳まで自衛隊になれるように法改正ww [347751896]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 自分に自信がない女の子、陽キャ美容室で80cmのエクステを付けた結果wwwwwwwwwwwwwwwwwww [329329848]
