カプセル化(英語: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/2SQUll437デフォルトの名無しさん
2020/06/27(土) 22:55:59.77ID:kHv6hhb8 リフレクションはオブジェクト指向にとっては黒魔術でしかないので正当なやり方ではない
この問題の本質はオブジェクト指向にテストの概念がないことにある
オブジェクト指向は規模の大きなシステムの品質を担保するために作られたわけだが
現代ではそれにテストも入れるべきなんだよ
データ、メソッド、テストこの3つを内包するオブジェクトを作ることこそが真のオブジェクト指向
この問題の本質はオブジェクト指向にテストの概念がないことにある
オブジェクト指向は規模の大きなシステムの品質を担保するために作られたわけだが
現代ではそれにテストも入れるべきなんだよ
データ、メソッド、テストこの3つを内包するオブジェクトを作ることこそが真のオブジェクト指向
438デフォルトの名無しさん
2020/06/27(土) 22:56:59.64ID:gS37C1rZ439デフォルトの名無しさん
2020/06/27(土) 22:57:06.02ID:UrcM2fcl >>434
メソッドレベルのテストをリフレクション使ってまでやれって言われたことないですけどねw
inoutがテストしなければならないほど複雑になる1つのメソッドを書くことがおかしいし、
粒度が大きすぎてって、それはinoutを整理しきれてない設計がおかしいのでは?
何でも値が入ってきます、全部1つのメソッドで作ってテストしてください、なんて無茶ぶりだとおもいますねw
メソッドレベルのテストをリフレクション使ってまでやれって言われたことないですけどねw
inoutがテストしなければならないほど複雑になる1つのメソッドを書くことがおかしいし、
粒度が大きすぎてって、それはinoutを整理しきれてない設計がおかしいのでは?
何でも値が入ってきます、全部1つのメソッドで作ってテストしてください、なんて無茶ぶりだとおもいますねw
440デフォルトの名無しさん
2020/06/27(土) 22:57:18.00ID:gS37C1rZ >>436
設計したこと無いの?
設計したこと無いの?
441デフォルトの名無しさん
2020/06/27(土) 22:57:58.35ID:kHv6hhb8442デフォルトの名無しさん
2020/06/27(土) 22:58:22.25ID:e0+LQFD/443デフォルトの名無しさん
2020/06/27(土) 23:00:01.68ID:kHv6hhb8444デフォルトの名無しさん
2020/06/27(土) 23:00:03.74ID:8YCrt6Qf privateをテストするしないっていう想定自体が理解できない
privateメソッドなら当然それを呼び出しているpublicなメソッドがあるはずで
そのpublicメソッドのテストに当然privateなメソッドのテストも含まれるはず
よっぽどprivateメソッドで複雑なことしていない限りそのテストで十分だろうし
それでテストしきれないほど複雑なら別のモジュールに定義し直した方がいいだろう
privateメソッドなら当然それを呼び出しているpublicなメソッドがあるはずで
そのpublicメソッドのテストに当然privateなメソッドのテストも含まれるはず
よっぽどprivateメソッドで複雑なことしていない限りそのテストで十分だろうし
それでテストしきれないほど複雑なら別のモジュールに定義し直した方がいいだろう
445デフォルトの名無しさん
2020/06/27(土) 23:02:02.14ID:kHv6hhb8 >>444
それなりに複雑でメソッドを一つずつテストしたいけど
テストのためにオブジェクト分けるなんてイカれてると思うの
だってオブジェクトがテストのためにあるわけじゃないから
テストがオブジェクトのためにあるべきで、そこでですよ
オブジェクト内にテストを内包するのが正しいオブジェクト指向と結論するわけです
それなりに複雑でメソッドを一つずつテストしたいけど
テストのためにオブジェクト分けるなんてイカれてると思うの
だってオブジェクトがテストのためにあるわけじゃないから
テストがオブジェクトのためにあるべきで、そこでですよ
オブジェクト内にテストを内包するのが正しいオブジェクト指向と結論するわけです
446デフォルトの名無しさん
2020/06/27(土) 23:02:14.45ID:gS37C1rZ >>442
顧客によって覆ることが何の関係があるの?
顧客によって覆ることが何の関係があるの?
447デフォルトの名無しさん
2020/06/27(土) 23:02:29.65ID:kHv6hhb8 仕様が覆るのはあたりまえじゃん
それとアクセス修飾子の話は違うわ
それとアクセス修飾子の話は違うわ
448デフォルトの名無しさん
2020/06/27(土) 23:02:36.66ID:gS37C1rZ449デフォルトの名無しさん
2020/06/27(土) 23:03:54.57ID:gS37C1rZ >>445
> それなりに複雑でメソッドを一つずつテストしたいけど
> テストのためにオブジェクト分けるなんてイカれてると思うの
複雑なメソッドは小さくしてください
設計がそもそも間違っています
テストのために小さく分けるのではなく
そもそも複雑なのが問題なのです。
問題を解決すればテスト可能になります。
> それなりに複雑でメソッドを一つずつテストしたいけど
> テストのためにオブジェクト分けるなんてイカれてると思うの
複雑なメソッドは小さくしてください
設計がそもそも間違っています
テストのために小さく分けるのではなく
そもそも複雑なのが問題なのです。
問題を解決すればテスト可能になります。
450デフォルトの名無しさん
2020/06/27(土) 23:03:58.42ID:kHv6hhb8 >>448
だから、そこにジレンマがあるよねって話を最初からしてるつもりっす
だから、そこにジレンマがあるよねって話を最初からしてるつもりっす
451デフォルトの名無しさん
2020/06/27(土) 23:04:46.01ID:/AdLJL3G いや、この問題は言語と開発環境の問題だろ
概念は関係ないよ
visualstudioができちゃえば
できますよ
で終わりな話
概念は関係ないよ
visualstudioができちゃえば
できますよ
で終わりな話
452デフォルトの名無しさん
2020/06/27(土) 23:05:10.21ID:kHv6hhb8453デフォルトの名無しさん
2020/06/27(土) 23:05:23.02ID:UrcM2fcl 逆に聞きたいけどpythonとかアクセス修飾子ない言語で、大規模プロジェクトがあったら、
ルール以外でアクセスはどう統制とってるの?
そういう言語の経験はWebくらいしか知らないから、全体何百万行(ステップ数でも人月でもいい)くらいのコードでこうしてた(る)ってのあったら教えて欲しい
ルール以外でアクセスはどう統制とってるの?
そういう言語の経験はWebくらいしか知らないから、全体何百万行(ステップ数でも人月でもいい)くらいのコードでこうしてた(る)ってのあったら教えて欲しい
454デフォルトの名無しさん
2020/06/27(土) 23:06:53.54ID:gS37C1rZ >>452
なぜできないんですか?
なぜできないんですか?
455デフォルトの名無しさん
2020/06/27(土) 23:07:46.64ID:XQLOkAsO >>454
あいつらサボってるからだろ
あいつらサボってるからだろ
456デフォルトの名無しさん
2020/06/27(土) 23:07:46.82ID:gS37C1rZ 誰でもできることができないなんて、能力がないなぁ
457デフォルトの名無しさん
2020/06/27(土) 23:10:28.90ID:npRplKHX お前らほんとプログラムのことしか知らないのな
品質を改善するときには品質を測るな これがテストの鉄則
タグチメソッドの入門でもよめ
品質を改善するときには品質を測るな これがテストの鉄則
タグチメソッドの入門でもよめ
458デフォルトの名無しさん
2020/06/27(土) 23:12:05.09ID:gS37C1rZ 1.モノを作る前に品質を創れ
2.品質工学は統計ではない
3.科学的思考ではモノは出来ない
4.市場品質はすべて設計できまる
5.完全な設計は試験や検査は不要
6.品質評価はn=1でよい
7.品質を改善するときには品質を測るな
8.評価はあるべき姿を定義して、安定性はSN比で行う
9.直交表で設計の再現性をチェックする(パラメータ設計)
10. システムは複雑でなければ、改善はできない
2.品質工学は統計ではない
3.科学的思考ではモノは出来ない
4.市場品質はすべて設計できまる
5.完全な設計は試験や検査は不要
6.品質評価はn=1でよい
7.品質を改善するときには品質を測るな
8.評価はあるべき姿を定義して、安定性はSN比で行う
9.直交表で設計の再現性をチェックする(パラメータ設計)
10. システムは複雑でなければ、改善はできない
459デフォルトの名無しさん
2020/06/27(土) 23:12:06.00ID:kHv6hhb8 >>457
ありがとー!タグっちゃん!
ありがとー!タグっちゃん!
460デフォルトの名無しさん
2020/06/27(土) 23:13:46.29ID:gS37C1rZ どこから品質の話が出てきたのか知らんが、
品質とテストの話は
> 5.完全な設計は試験や検査は不要
これですかね?
品質とテストの話は
> 5.完全な設計は試験や検査は不要
これですかね?
461デフォルトの名無しさん
2020/06/27(土) 23:19:08.91ID:gS37C1rZ >>458はいくつか日本語の文章に問題があるな
1.モノを作る前に品質を創れ
2.品質工学は統計ではない ×「品質工学は○○である」と言おう
3.科学的思考ではモノは出来ない ×「○○的思考でモノは出来る」と言おう
4.市場品質はすべて設計できまる
5.完全な設計は試験や検査は不要 ×「不完全な設計は試験や検査が必要」と言おう
6.品質評価はn=1でよい
7.品質を改善するときには品質を測るな ×「品質を改善するときには○○をしろ」と言おう
8.評価はあるべき姿を定義して、安定性はSN比で行う
9.直交表で設計の再現性をチェックする(パラメータ設計)
10. システムは複雑でなければ、改善はできない ×「システムは複雑なら、改善ができる」と言おう
こう偉そうなことを言ってるのに、じゃあどうすればいいかを
相手に考えさせるのって、どうなんでしょうかね(苦笑)
1.モノを作る前に品質を創れ
2.品質工学は統計ではない ×「品質工学は○○である」と言おう
3.科学的思考ではモノは出来ない ×「○○的思考でモノは出来る」と言おう
4.市場品質はすべて設計できまる
5.完全な設計は試験や検査は不要 ×「不完全な設計は試験や検査が必要」と言おう
6.品質評価はn=1でよい
7.品質を改善するときには品質を測るな ×「品質を改善するときには○○をしろ」と言おう
8.評価はあるべき姿を定義して、安定性はSN比で行う
9.直交表で設計の再現性をチェックする(パラメータ設計)
10. システムは複雑でなければ、改善はできない ×「システムは複雑なら、改善ができる」と言おう
こう偉そうなことを言ってるのに、じゃあどうすればいいかを
相手に考えさせるのって、どうなんでしょうかね(苦笑)
462デフォルトの名無しさん
2020/06/27(土) 23:24:56.40ID:gS37C1rZ 「品質が欲しければ、品質を測るな!」は
「品質が欲しければ、機能を測って改善しろ!」という意味みたいですな
つまりオブジェクトの品質を上げたければ
テストできるように機能を改善しろということですな
privateメソッドであれば、インターフェースを明確にして
機能に昇格させればpublicになるわけです。
「品質が欲しければ、機能を測って改善しろ!」という意味みたいですな
つまりオブジェクトの品質を上げたければ
テストできるように機能を改善しろということですな
privateメソッドであれば、インターフェースを明確にして
機能に昇格させればpublicになるわけです。
463デフォルトの名無しさん
2020/06/27(土) 23:31:52.99ID:npRplKHX >>462
ホントにタグチメソッド知らなかったのか?
その割には理解が早いな
ようするにバクをなくしたいのだろ?
それならバクがでるかどうかのテストをすることが自体がずれてるんだ
そんなことは最終段階でやることじゃないんだ どうせモグラたたきになる
最初の設計段階で徹底的にいじめ抜け
どれだけ変更に強いかをテストするんだ
品質が欲しければ,機能を測れ これにつきる
ホントにタグチメソッド知らなかったのか?
その割には理解が早いな
ようするにバクをなくしたいのだろ?
それならバクがでるかどうかのテストをすることが自体がずれてるんだ
そんなことは最終段階でやることじゃないんだ どうせモグラたたきになる
最初の設計段階で徹底的にいじめ抜け
どれだけ変更に強いかをテストするんだ
品質が欲しければ,機能を測れ これにつきる
464デフォルトの名無しさん
2020/06/27(土) 23:40:30.32ID:gS37C1rZ465デフォルトの名無しさん
2020/06/27(土) 23:41:10.95ID:ZFnYFbMi 単体テストとどう違うの?
466デフォルトの名無しさん
2020/06/27(土) 23:41:18.54ID:gS37C1rZ467デフォルトの名無しさん
2020/06/27(土) 23:42:26.37ID:gS37C1rZ468デフォルトの名無しさん
2020/06/27(土) 23:43:10.60ID:ZFnYFbMi 単体テストって結合してからテストするの?
469デフォルトの名無しさん
2020/06/27(土) 23:46:52.77ID:ZFnYFbMi 王家秘伝のレシピ教えてやるよ。
#define private public
皆には内緒だぞ。
#define private public
皆には内緒だぞ。
470デフォルトの名無しさん
2020/06/28(日) 01:34:12.55ID:wUTwjqhp >>469
#define ディレクティブを使用して、通常 C および C++ で行うように定数値を宣言することはできません。
C# の定数は、クラスまたは構造体の静的メンバーとして定義することができます。
そのような定数がいくつかある場合は、それを保持するための "Constants" クラスを個別に作成することを検討してください。
#define ディレクティブを使用して、通常 C および C++ で行うように定数値を宣言することはできません。
C# の定数は、クラスまたは構造体の静的メンバーとして定義することができます。
そのような定数がいくつかある場合は、それを保持するための "Constants" クラスを個別に作成することを検討してください。
471デフォルトの名無しさん
2020/06/28(日) 02:01:57.56ID:pODeKu4C privateメソッドの直接テストしたいけど可視性を変えたくない場合は
リフレクションを簡単に使えるようにしてるテストフレームワークだったりライブラリ使えばいい
ちなみにGoやRustはprivateもテストできる仕組み持ってる
リフレクションを簡単に使えるようにしてるテストフレームワークだったりライブラリ使えばいい
ちなみにGoやRustはprivateもテストできる仕組み持ってる
472デフォルトの名無しさん
2020/06/28(日) 05:51:03.49ID:qNzQpEfW >>469
あざーす!国王あざーす!
あざーす!国王あざーす!
473デフォルトの名無しさん
2020/06/28(日) 05:51:56.56ID:qNzQpEfW >>471
ええなー
ええなー
474デフォルトの名無しさん
2020/06/28(日) 09:51:30.71ID:lfkBrldT >>463
ソフトウェアの作り方も知らずにタグチメソッド真に受けたら、
糞みたいな品質のものしかできんぞw
単体テストってのは設計の一部なんだよ。品質テストとは全く異なる。
抽象論でタグチメソッドを適用しようとしてる輩が一番ヤバい。
ソフトウェアの作り方も知らずにタグチメソッド真に受けたら、
糞みたいな品質のものしかできんぞw
単体テストってのは設計の一部なんだよ。品質テストとは全く異なる。
抽象論でタグチメソッドを適用しようとしてる輩が一番ヤバい。
475デフォルトの名無しさん
2020/06/28(日) 10:22:04.23ID:4vfVPlvE なんだミニ四駆のモータに学ぶことでもあんのか?って思ったら
品質100%の更に上の話じゃねーか
現場の単体テストもロクにやらないクソが問題になってるITでそんなもんいらん
品質100%の更に上の話じゃねーか
現場の単体テストもロクにやらないクソが問題になってるITでそんなもんいらん
476デフォルトの名無しさん
2020/06/28(日) 12:40:59.37ID:L5Cpw8A4 中の磁石が強いほどトルクが上がって回転数が下がる
磁力が弱いほどトルクが下がって回転数が上がる
磁力が弱いほどトルクが下がって回転数が上がる
477デフォルトの名無しさん
2020/06/28(日) 13:22:34.10ID:S7usk0qp >>326
わかりやすい
わかりやすい
478デフォルトの名無しさん
2020/06/28(日) 18:21:30.86ID:3Si3AZJb privateのテストってリファクタリングの妨げじゃないのか
479デフォルトの名無しさん
2020/06/28(日) 18:55:54.96ID:nHckGJvd 開発体制が複数の会社でピラミッド状の階層化されてたら指揮系統的に相当厳しいだろうね。
480デフォルトの名無しさん
2020/06/28(日) 19:33:26.78ID:JoVMtTbA Javaの修飾子宣言鬱陶しくてほんと嫌い
481デフォルトの名無しさん
2020/06/29(月) 14:12:08.40ID:EmVrB3rr 明示的な状態管理は、(不可能ではないにせよ)管理すべき状態の量が増えてくると非常に困難になってくるところ、関数型言語の考え方を取り込むことによってその負担を軽減できるのではないかーーという意見もあるようだけど、
このスレの人(カプセル化肯定派・否定派いずれも)としてはどう?
このスレの人(カプセル化肯定派・否定派いずれも)としてはどう?
482デフォルトの名無しさん
2020/06/29(月) 19:41:29.30ID:bVpw4tuk カプセル化の可否はともかく
階層化の有害性についてはこう思います。
例えばディレクトリを階層化のすると
親ディレクトリと子ディレクトリに同じデータを重複格納
する人が出たりしてデータの二重管理が発生
しやすくなると思います。
そのうちどれが正なのか分からなくなります。
あと単純に子供に格納するほどデータのアクセスパスが
長くなってどこにあるのか探し出すのが大変になると
思います。
これはオブジェクトの階層構造でも
JSONなどの構造についても言えることだと思います。
階層化の有害性についてはこう思います。
例えばディレクトリを階層化のすると
親ディレクトリと子ディレクトリに同じデータを重複格納
する人が出たりしてデータの二重管理が発生
しやすくなると思います。
そのうちどれが正なのか分からなくなります。
あと単純に子供に格納するほどデータのアクセスパスが
長くなってどこにあるのか探し出すのが大変になると
思います。
これはオブジェクトの階層構造でも
JSONなどの構造についても言えることだと思います。
483デフォルトの名無しさん
2020/06/29(月) 20:06:40.16ID:cYsf6eW3 プログラムで階層化なんて意識したことないけど問題起こったことない
分野が違うのかな
分野が違うのかな
484デフォルトの名無しさん
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
わざとバカなことを言って他の人が本気で反論や議論してくるのを笑ってる可能性もゼロではないが、まあ単に本物のバカという可能性のが高いと思う
わざとバカなことを言って他の人が本気で反論や議論してくるのを笑ってる可能性もゼロではないが、まあ単に本物のバカという可能性のが高いと思う
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国営メディア「沖縄は日本ではない」… [BFU★]
- 中国国営メディア「沖縄は日本ではない」… ★2 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」 [ぐれ★]
- 【こんなの初めて…】民泊には既にキャンセルも 中国の渡航自粛で [ぐれ★]
- NY円、一時1ユーロ=180円台まで下落…1999年のユーロ導入以来初 ★2 [蚤の市★]
- 俳優 高岡蒼佑「エジプト出身とかナイジェリア出身とかの人が、日本の代表顔して移民の事とか話してるの見るとなんか違う気がする」★2 [Anonymous★]
- 【悲報】なんで「アジア主義」を唱える右翼が居ないの🤔 [616817505]
- 野田(安倍晋三マニア)「総理は国益を損なうような発言はしてはいけない」 [884040186]
- 中国国営放送「日本は琉球をただちに中国に返還せよ」 キタ━━━━(゚∀゚)━━━━!!!!! [314039747]
- 【高市悲報】アメリカ戦争省「あのさ、何回シミュレートしてもわーくに中国に負けちゃうんだよね🤗」 [359965264]
- 自民「高市の一言でこれまで積み上げてきた関係が駄目になる。言葉の重みを分かっていない。自分でまいた種は自分で刈り取ってもらう」 [256556981]
- 【高市悲報】片山さつき、円安進行を受けコメント「為替の変動を緊張感を持って見極める」 [888298477]
