カプセル化の有害性、オブジェクト指向は愚かな考え

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2020/06/18(木) 23:47:36.69ID:l/2SQUll
カプセル化(英語: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)
459デフォルトの名無しさん
垢版 |
2020/06/27(土) 23:12:06.00ID:kHv6hhb8
>>457
ありがとー!タグっちゃん!
2020/06/27(土) 23:13:46.29ID:gS37C1rZ
どこから品質の話が出てきたのか知らんが、
品質とテストの話は

> 5.完全な設計は試験や検査は不要

これですかね?
2020/06/27(土) 23:19:08.91ID:gS37C1rZ
>>458はいくつか日本語の文章に問題があるな

1.モノを作る前に品質を創れ
2.品質工学は統計ではない        ×「品質工学は○○である」と言おう
3.科学的思考ではモノは出来ない     ×「○○的思考でモノは出来る」と言おう
4.市場品質はすべて設計できまる
5.完全な設計は試験や検査は不要     ×「不完全な設計は試験や検査が必要」と言おう
6.品質評価はn=1でよい
7.品質を改善するときには品質を測るな   ×「品質を改善するときには○○をしろ」と言おう
8.評価はあるべき姿を定義して、安定性はSN比で行う
9.直交表で設計の再現性をチェックする(パラメータ設計)
10. システムは複雑でなければ、改善はできない  ×「システムは複雑なら、改善ができる」と言おう

こう偉そうなことを言ってるのに、じゃあどうすればいいかを
相手に考えさせるのって、どうなんでしょうかね(苦笑)
2020/06/27(土) 23:24:56.40ID:gS37C1rZ
「品質が欲しければ、品質を測るな!」は
「品質が欲しければ、機能を測って改善しろ!」という意味みたいですな

つまりオブジェクトの品質を上げたければ
テストできるように機能を改善しろということですな
privateメソッドであれば、インターフェースを明確にして
機能に昇格させればpublicになるわけです。
2020/06/27(土) 23:31:52.99ID:npRplKHX
>>462
ホントにタグチメソッド知らなかったのか?
その割には理解が早いな

ようするにバクをなくしたいのだろ?
それならバクがでるかどうかのテストをすることが自体がずれてるんだ
そんなことは最終段階でやることじゃないんだ どうせモグラたたきになる  
最初の設計段階で徹底的にいじめ抜け
どれだけ変更に強いかをテストするんだ
品質が欲しければ,機能を測れ これにつきる
2020/06/27(土) 23:40:30.32ID:gS37C1rZ
>>463
では「機能を測る」とは?
どうやって測るのかを言ってみましょう
できるかな?w
465デフォルトの名無しさん
垢版 |
2020/06/27(土) 23:41:10.95ID:ZFnYFbMi
単体テストとどう違うの?
2020/06/27(土) 23:41:18.54ID:gS37C1rZ
>>463
> その割には理解が早いな
あんなもん当たり前のことを誰かがまとめただけだからね
デザインパターンと一緒。
よく知られたものに、名前をつけてるだけ
2020/06/27(土) 23:42:26.37ID:gS37C1rZ
>>465
複雑なものを複雑のままテストをしても意味がない
シンプルにテスト可能な形に設計を変えることがテストの目的の一つ
ようはprivateはpublicになるように設計を変えろということ
468デフォルトの名無しさん
垢版 |
2020/06/27(土) 23:43:10.60ID:ZFnYFbMi
単体テストって結合してからテストするの?
469デフォルトの名無しさん
垢版 |
2020/06/27(土) 23:46:52.77ID:ZFnYFbMi
王家秘伝のレシピ教えてやるよ。

#define private public

皆には内緒だぞ。
2020/06/28(日) 01:34:12.55ID:wUTwjqhp
>>469
#define ディレクティブを使用して、通常 C および C++ で行うように定数値を宣言することはできません。
C# の定数は、クラスまたは構造体の静的メンバーとして定義することができます。
そのような定数がいくつかある場合は、それを保持するための "Constants" クラスを個別に作成することを検討してください。
2020/06/28(日) 02:01:57.56ID:pODeKu4C
privateメソッドの直接テストしたいけど可視性を変えたくない場合は
リフレクションを簡単に使えるようにしてるテストフレームワークだったりライブラリ使えばいい

ちなみにGoやRustはprivateもテストできる仕組み持ってる
2020/06/28(日) 05:51:03.49ID:qNzQpEfW
>>469
あざーす!国王あざーす!
2020/06/28(日) 05:51:56.56ID:qNzQpEfW
>>471
ええなー
2020/06/28(日) 09:51:30.71ID:lfkBrldT
>>463
ソフトウェアの作り方も知らずにタグチメソッド真に受けたら、
糞みたいな品質のものしかできんぞw
単体テストってのは設計の一部なんだよ。品質テストとは全く異なる。
抽象論でタグチメソッドを適用しようとしてる輩が一番ヤバい。
2020/06/28(日) 10:22:04.23ID:4vfVPlvE
なんだミニ四駆のモータに学ぶことでもあんのか?って思ったら
品質100%の更に上の話じゃねーか

現場の単体テストもロクにやらないクソが問題になってるITでそんなもんいらん
2020/06/28(日) 12:40:59.37ID:L5Cpw8A4
中の磁石が強いほどトルクが上がって回転数が下がる
磁力が弱いほどトルクが下がって回転数が上がる
2020/06/28(日) 13:22:34.10ID:S7usk0qp
>>326
わかりやすい
2020/06/28(日) 18:21:30.86ID:3Si3AZJb
privateのテストってリファクタリングの妨げじゃないのか
2020/06/28(日) 18:55:54.96ID:nHckGJvd
開発体制が複数の会社でピラミッド状の階層化されてたら指揮系統的に相当厳しいだろうね。
480デフォルトの名無しさん
垢版 |
2020/06/28(日) 19:33:26.78ID:JoVMtTbA
Javaの修飾子宣言鬱陶しくてほんと嫌い
2020/06/29(月) 14:12:08.40ID:EmVrB3rr
明示的な状態管理は、(不可能ではないにせよ)管理すべき状態の量が増えてくると非常に困難になってくるところ、関数型言語の考え方を取り込むことによってその負担を軽減できるのではないかーーという意見もあるようだけど、
このスレの人(カプセル化肯定派・否定派いずれも)としてはどう?
482デフォルトの名無しさん
垢版 |
2020/06/29(月) 19:41:29.30ID:bVpw4tuk
カプセル化の可否はともかく
階層化の有害性についてはこう思います。
例えばディレクトリを階層化のすると
親ディレクトリと子ディレクトリに同じデータを重複格納
する人が出たりしてデータの二重管理が発生
しやすくなると思います。
そのうちどれが正なのか分からなくなります。
あと単純に子供に格納するほどデータのアクセスパスが
長くなってどこにあるのか探し出すのが大変になると
思います。

これはオブジェクトの階層構造でも
JSONなどの構造についても言えることだと思います。
483デフォルトの名無しさん
垢版 |
2020/06/29(月) 20:06:40.16ID:cYsf6eW3
プログラムで階層化なんて意識したことないけど問題起こったことない
分野が違うのかな
2020/06/29(月) 20:18:08.97ID:6d9dL1u1
そう、問題が起こるのはいつも人間関係です
2020/06/29(月) 20:19:42.34ID:tYVp58Ca
つまり、人間関係の問題を持ってきても、技術を否定したことにはならないのです。
2020/06/29(月) 21:42:10.57ID:P3P3vIj6
>>483
>>1に書いてあることが理解できない?
2020/06/29(月) 23:35:22.76ID:L39gVdue
>>482
そこで挙げている階層化の問題だが、階層化せずフラットに格納すれば解決するのか?
階層化しないということは同じレベルに大量の物が同格に並ぶわけだが、そうなると目的の物を探すのが困難になりすでにあるデータと同じものを重複して格納する危険性があるだろう。
またアクセスパスが長くなるというが、フラットな構造で多数の物を適切に命名しようとすれば階層的な名前付けが役立つはずだが、それすら長くなると忌避するなら場当たり的に短い名前を着けていっていずれ収集が着かなくなるだけでないの?
お前さんが挙げた階層化の問題は階層化の仕方が悪い(下手な)だけで、階層化をしなければ解決するというものではなかろう。
2020/06/30(火) 05:33:42.93ID:v2qXZCJh
結局、分類だったり抽象化のやり方がクソってだけの話だろ。
フラットにしようが階層にしようが、クソな分け方したらどうにもならんてだけの話だ。
2020/06/30(火) 08:05:51.26ID:GiU27GCt
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
2020/06/30(火) 08:11:00.58ID:PIU/381m
>>486
ぴえ?
2020/06/30(火) 10:40:18.75ID:J3IrN4Ey
>>1が例に上げてるRFC3439は「Layering Considered Harmful」という強い言葉を使ってるが
レイヤ化は万能じゃなくデメリットもあるという当たり前のことを書いてるだけ
もちろん「カプセル化は絶対やめろ」なんてことは書いてない

メリット・デメリットを把握した上で
状況に応じたトレードオフの判断ができない人(>>1)には
ソフトウェアの設計はできない
2020/06/30(火) 19:35:05.23ID:g7PLkMcM
なんか、privateメソッドのテストでもめているけど、なんで。
そもそも、privateメソッドを外部から呼び出してテストしないといけない場面が想像できないのだが。
クラスライブラリのコードを紛失したとか笑えないケースを想定しているの?
493デフォルトの名無しさん
垢版 |
2020/06/30(火) 19:48:43.49ID:MKfuvp+I
gitや自動ビルドツールの存在がなかった時代の
オブジェクト指向技術は淘汰されてもいいんじゃない?

昔はこれらがなかったからカプセル化で神経質に
防御してたけど
今は無理にパッケージを固めてやり取りすることが
なくなって

gitでソースを差分転送して再ビルドする方式に
切り替わった
旧仕様はブランチを切り分けといて復旧が簡単に
なって、仕様変更に対してそこまでビビらなくて良くなった。

それと自作のアプリのオブジェクトで
webからインストールしたライブラリや
フレームワークが自動生成して提供するもの以外で
それほど長時間状態を保持するような巨大なオブジェクト
構造を自作設計して作成することがあるか?
あるとすれば
webのセッションや
オープンワールドやFPSみたいなゲームくらいか
2020/06/30(火) 20:19:26.97ID:v2qXZCJh
今でもSIerなんかはコード書き換えないことに固執してるから可視範囲に対して神経質なんだよ。
2020/06/30(火) 20:27:32.13ID:+5DxT57L
>>492
それは「テストの時にだけpublicに変えればいいじゃん」か「privateはpublicに内在してるから直接テストする必要ないじゃん」のどっちの意味ですか?
2020/06/30(火) 20:58:39.82ID:Ya6sc1A9
>>492
コード紛失してなくても他社開発のをガッチャンコだと手が出せないでしょ。
2020/06/30(火) 20:58:42.09ID:ww2Xd+MO
× テストの時にだけpublicに変えればいいじゃん

○ テストがやりにくいというのは設計がまずいということ
自然な形でpublicになるような設計を改善すべきだ
2020/06/30(火) 20:59:02.71ID:Ya6sc1A9
小規模なら問題ない
2020/06/30(火) 21:38:14.42ID:BIUXizBX
他社のコードをテストすんの?
2020/06/30(火) 22:07:21.34ID:GiU27GCt
>>497
はぁ?バカはレスすんなよ
2020/06/30(火) 22:42:13.84ID:zKRJDZmr
>>499
そりゃ結合試験はするだろ
2020/06/30(火) 23:23:26.17ID:BIUXizBX
>>501
結合試験時に他社コードのprivateメソッドを態々呼出してテストすんの?
2020/07/01(水) 00:09:32.11ID:vgPSMoJs
>>495
よくわからないが...強いて言うなら後者?
第一、クラスって実装者が責任を持ってテストするものだろう。
なんで、privateで定義されたものをpublicにして呼び出そうとするのかも、正直、わからない。
ブラックボックステストでもしたいの?
まぁ、ブラックボックステストってprivateメソッドを呼び出せば成立するかというと、違うと思うけど。
正直、何がしたいのかわからなさすぎて困惑している。
2020/07/01(水) 00:11:23.37ID:Dh09feZF
>第一、クラスって実装者が責任を持ってテストするものだろう。
これが守られてりゃこのスレみたいな議論は起こらんわ。
2020/07/01(水) 00:22:36.05ID:dTufBNXb
守るも何もクラスに不具合があれば実装者の責任だろ
って言うのが通用しないのか?
2020/07/01(水) 00:26:31.70ID:Dh09feZF
責任といってももういない奴に責任は取れんわな。
2020/07/01(水) 00:33:27.93ID:XAYXSYxH
客先に納めたプログラムを客先が勝手に変更したら責任は外れる契約になってると思う
これは弊社の納めたプログラムではありませんってなるから
社内で引き継いだなら文句を言うのは自由だが任された者がなんとかしろの精神だろ
2020/07/01(水) 00:43:31.96ID:Dh09feZF
クラスごとにしっかりテストがあって
引き継ぎがしっかりされる職場ばかりなら何の問題もないだろうね。
とても幸せな世界でいいですね。
509デフォルトの名無しさん
垢版 |
2020/07/01(水) 01:04:03.02ID:Ke5amsYp
まだ続いてたか
結局問題は出来の悪いモジュールをどうするかって話だろ
2020/07/01(水) 01:36:00.07ID:bx11ZQ99
違うよ
visualstudioがテストプロジェクトでprivateをpublicみたいに呼べるようにするだけ
2020/07/01(水) 06:19:16.09ID:y/Wgtnem
>>503
privateを呼び出す必要があるってのはUnit Testの時で、実装者とテスターが同一人物かどうかは関係ないよ。
オブジェクト指向に限らずテスト理論の話になっちゃうんだけど、プロジェクトや規格で指定されるUnit Testの種類によってはpublic経由でprivate呼び出してたら組合せ爆発してテストドライバやスタブの開発やレビューだけで多大な工数が必要になってやってられなくなる。
なので十分に単純化されたprivateを含めて関数毎にテストする必要が出てくるのよ。
2020/07/01(水) 06:46:59.11ID:5jdJ/dE3
>>501
> そりゃ結合試験はするだろ

統合試験って言うことは、当然標準ライブラリの
テストも行うんだよな?例えばprintf関数のテストとか
2020/07/01(水) 06:53:14.54ID:lozEWamw
>>511
> public経由でprivate呼び出してたら組合せ爆発してテストドライバやスタブの開発やレビューだけで多大な工数が必要になってやってられなくなる。

そういうことだよね。だからそれはpublicメソッドが行ってる機能が多すぎるわけで
複数のpublicメソッドに分解するわけ。これが設計。

適切な関数の行数って思ったより短いものだから。
俺の場合、一部のcaseテーブルのようなものを除いてロジックと呼べるようなものがあるコードは
長いもので1関数30行〜40行程度半分以上は10行程度だよ
2020/07/01(水) 08:23:11.98ID:y4QPMVjI
>>512
何時何分何秒地球が何周回ったときに言いましたかーみたいな煽りだな
2020/07/01(水) 08:27:13.77ID:3Re1TFuk
>>512
そりゃprintf使うシステムの結合テストならもちろん結合テストのセンスでprintfもテストするよ。
ユニットテストの粒度とは違って「〜が標準出力されること」ってテスト項目になるけど。
2020/07/01(水) 11:10:06.09ID:LiVkSFt2
結合テストと総合テストって同じ意味なのか?
2020/07/01(水) 12:14:34.41ID:hgyYQ8XK
総合テストって検収テストと同じじゃね?
2020/07/01(水) 12:24:10.62ID:wljUBRxY
テストの呼び方はプロジェクトによって違うからなんとも言えんなぁ
2020/07/01(水) 12:36:28.97ID:LiVkSFt2
なんというか...コミュニケーションがまともにとれていないのでは?

恐らく、他人の作ったライブラリに対して単体テストをお前はやるのか?という意図で聞いた質問に、結合試験はするだろと回答したり、
結合試験と総合試験という字面で見ると似ているけど全然違う話を混在させたり、
似ているようで関係のない話を持ち出して混沌としているな。

語りたい事の本質が行方不明になっているように見える。
2020/07/01(水) 14:20:36.35ID:JqIYLyXt
>>512は総合じゃなく統合って書いてるぞ

結合テストのことを統合テストと呼ぶところもある
結合の度合いによって結合、統合、総合とそれぞれ分けてるところもある

単なる読み間違いなのか結合 = 統合の意味で使ってるのかは知らんけど
2020/07/01(水) 14:54:20.92ID:LiVkSFt2
うわっ!恥ずかしいミスをしてたのは自分だったか。あとで、読み直す...。
2020/07/01(水) 17:50:33.35ID:1PwA88RR
visualstudioのテストプロジェクトが不甲斐ないってだけやし
523デフォルトの名無しさん
垢版 |
2020/07/02(木) 19:42:17.69ID:84e/i8uV
privateメソッドテストするとか正気?
テストしなくてよくするためのprivateだろ
2020/07/02(木) 19:49:51.80ID:iX514c6x
テストする必要があるというのは
全部書き直した方がましということだが
2020/07/02(木) 20:08:44.37ID:/yt09sjO
>>523
特大クラス一つの中に全部privateでメソッド作成したら
どういう理由で全メソッドテスト免除になるの?
2020/07/02(木) 20:10:40.42ID:/yt09sjO
マイクロソフトに頼らんで独自にテストプロジェクト作ってるような会社はできてんで
visualstudioの都合でテストやりたくないって言ってるだけだろクズども
527デフォルトの名無しさん
垢版 |
2020/07/02(木) 20:46:21.86ID:Vurtjy2V
関数どころか変数に至るまで一つ一つ丁寧に検査してましたわ。
2020/07/02(木) 21:29:57.44ID:lIo9GiA1
>>525
どんだけ巨大なクラスでも全部privateだと外から一切呼び出せないデッドコードになるのでテストする意味さえないだろ。
529デフォルトの名無しさん
垢版 |
2020/07/02(木) 21:35:43.34ID:UKbwg08G
>>528
せやかてpublic通してたら結合テストじゃんw
530デフォルトの名無しさん
垢版 |
2020/07/02(木) 21:36:02.64ID:UKbwg08G
unit testの意味わかっとんのけ?
2020/07/02(木) 21:37:29.20ID:7zBU/W9S
プロジェクトによって違ってたなあ
532デフォルトの名無しさん
垢版 |
2020/07/02(木) 21:40:09.15ID:UKbwg08G
>>531
せやろ、ワイの会社も結合テストのことをunit testと呼んでるわ
本当のunit testはやってない
2020/07/02(木) 22:14:17.02ID:/yt09sjO
>>528
Form1とかそんな感じじゃん
2020/07/03(金) 07:01:01.95ID:Ul5hp/bW
>>525
誰も使わんからテスト不要だね
2020/07/03(金) 08:34:55.79ID:zR3byV+3
>>532
それは珍しいな
2020/07/03(金) 08:56:10.03ID:N+TCe3uh
これは酷い。RFC 3439はネットワークの仕様の話であってオブジェクト志向なんか
一切関係ないし、プログラミングの話でもない。

偏差値が低い学校でだけ教えてた事実なんてないしアメリカの大規模システムは
全部OOでカプセル化が基本。

的外れすぎて開いた口が塞がらない。これ書いた人間が全く一切わかってないのはよくわかった。
2020/07/03(金) 09:22:53.27ID:r9jTvXIP
>>536
わざとバカなことを言って他の人が本気で反論や議論してくるのを笑ってる可能性もゼロではないが、まあ単に本物のバカという可能性のが高いと思う
2020/07/03(金) 10:20:55.42ID:N+TCe3uh
>>537
本気感が凄いね。反論とかしようがない1から10まで間違ってるレベルだし。
2020/07/03(金) 10:22:52.04ID:N+TCe3uh
こんなんでもRFC確認する人なんてほとんどいないだろうし、クラウドがあるじゃないですか!
のレベルの日本ではショーンK的に通用しそうというか、結構このスレでも通用してるのがおっかない。
540デフォルトの名無しさん
垢版 |
2020/07/03(金) 10:25:42.60ID:lDWf2b6S
Javaで外クラスから内クラスのprivateメンバが見れるのはなぜですか?

超論理的思考によるとどう考えても理論に欠陥があり矛盾してる。
みなさんはこのJavaにおけるクラス体系をおかしいと思いながら割りきって使ってるのですよね?
2020/07/03(金) 10:27:37.08ID:N+TCe3uh
単に道具だから自分で考えて必要なら使えば良い訳で。

カプセル化ってのはつまり部署ごとにお前のところはお前で責任を持て、
お前が変えたからって他の部署に仕事をさせるな、ということだから、
それができてればなんでも良い。
542デフォルトの名無しさん
垢版 |
2020/07/03(金) 11:40:51.40ID:x82j4VqA
複数の開発会社が絡む大規模案件と
一社開発や個人開発の小規模案件を
ゴッチャゴチャにして同列で語り合うから、話が噛み合わないし、話が終わらないんよ。
2020/07/03(金) 11:47:43.16ID:Gy+Up1+B
>>542
各クラスの仕様を明確にするのか仕様を決めずに実装するかの差だよ
開発手法の差だが開発規模の差ではない
2020/07/03(金) 11:51:37.50ID:uIgOlo/V
>>543
仕様が明確じゃないのにテストする意味あるの?
それともprivateメソッドの仕様を明確にするの?
2020/07/03(金) 11:53:31.15ID:N+TCe3uh
そもそもOOとかは大規模開発するために出てきた手法だから個人で小さいもの
作ってるなら関数でもスパゲッティでも本人わかってりゃいいわけだし、昔は
関数でも部署ごとで話し合ってちゃんとやってたけど、どうしても直接アクセスして
変更の際ぶっ壊れるようなものを作るやつが出るから、じゃあもう見せなきゃそういう
事態は起こらないということで実際それはうまくいってる。

個人のソフトとかは好きにすれば良いし、好きにできるようになってるんだから
それぞれ道具を自分の必要に応じて使って勝手にやれば良い。
2020/07/03(金) 11:59:07.38ID:Gy+Up1+B
>>544
「privateはxunit testingしなくていい」と言われる理由はそこだ
他のクラスとの関わりとして必要な仕様は非privateメンバのみに着目すればいい
publicメンバの振る舞いが変わらずすべてのテストをパスできるならprivateがどう変更されようが他のクラスからは関係ないからな
2020/07/03(金) 12:07:31.88ID:uIgOlo/V
つまりprivateをテストするってことは仕様が明確になってるわけで
publicにしても問題ないってことだよね
2020/07/03(金) 12:07:34.57ID:Gy+Up1+B
勢いで書いたから非privateとpublicがごっちゃになってるけどこの手の話題でpublicと書いてあったら全部非privateと読み替えて下さい
2020/07/03(金) 12:10:41.37ID:BB9T+E2r
>>540
超論理的思考によるとって、論理を超えた思考なんかされたって会話にならないから、論理的思考をした上で疑問があれば相談してくれ。
2020/07/03(金) 12:16:49.80ID:N+TCe3uh
Privateをテストするかどうかはプロジェクトごとのテストのやり方次第だし、
なんのテストかにもよるわけで。

デベロッパーテストなら当然するだろうし、リグレッションテストで普通は
プライベートメソッドをテストしないだろう。

その辺はカプセル化とかOOとかはあまり関係の無い話。
2020/07/03(金) 12:22:55.88ID:hDsckVNf
privateもテストしろよハゲ
2020/07/03(金) 12:26:06.83ID:sqXfkC+n
privateをpublicにしてもいいよねって言ってるやつは、改修で命名とかしたことないんかな
2020/07/03(金) 12:26:36.41ID:hDsckVNf
どこの現場でも通じないトンデモ理論を前面に出して話してんじゃねーぞガイジ
2020/07/03(金) 12:29:48.69ID:Gy+Up1+B
>>551
クラスの仕様変更でpublicになったときに追加すればいい
極端な話、複数のpublicメンバの中でprivateAとprivateBが使われてて各privateの挙動は実装者の想定と実は違ったとしてもすべてのpublicメンバの挙動が仕様通りなら(クラス仕様変更して変なバグを引く羽目になるまで)なんの問題もない
その時対処する事案
2020/07/03(金) 12:55:27.30ID:MMMvRh6C
privateな状態を確認するテストのがテスト数が減る。
二つのpublicなメソッドの関連をテストする場合、
n*m になるが
状態が k 個の場合、 (n + m)*k になるわけだよ。
無理にpublicだけのテストを書くことがどれだけアホか。
556デフォルトの名無しさん
垢版 |
2020/07/03(金) 13:00:40.80ID:lDWf2b6S
Javaで外クラスから内クラスのprivateメンバが見れるのはなぜですか?

論理的思考によるとどう考えても理論に欠陥があり矛盾してる。
みなさんはこのJavaにおけるクラス体系をおかしいと思いながら割りきって使ってるのですよね?
2020/07/03(金) 13:19:27.55ID:Gy+Up1+B
>>555
privateテストでテスト数減るならその方がいいのは自分も同意

誤 privateはテストしなければならない
誤 privateはテストしてはならない
正 必要なテストだけ簡単になるように書けば良い
2020/07/03(金) 13:48:21.04ID:BB9T+E2r
>>556
https://ja.coder.work/so/java/17371
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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