カプセル化(英語: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)
探検
カプセル化の有害性、オブジェクト指向は愚かな考え
レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん
2020/06/18(木) 23:47:36.69ID:l/2SQUll855デフォルトの名無しさん
2020/07/05(日) 09:30:39.94ID:9F15TCk0 上のチンコの例で言えば、funcSとfuncBのテストをテストケース書いて
コードを書き換えた上でやってドキュメントなりログなりで残すの?
だったらpublicでやれば良いし、そうやってpublicにするなら関数型でも
おんなじ事でしょ。
チンコがnullなのか16以上そこそこでかいのかまでしか関係ないわけで
privateがnullをハンドリングしてないとか無駄なんだよ。もちろん
命に関わるようなところではそれくらいの厳格さが求められる場合も
あるだろうが、普通のビジネスソフトではそこまでやらない。
他のチームが関わる場所を少なくするためにカプセル化するわけで、
そんな全部publicにしたら意味ないんだよ。
コードを書き換えた上でやってドキュメントなりログなりで残すの?
だったらpublicでやれば良いし、そうやってpublicにするなら関数型でも
おんなじ事でしょ。
チンコがnullなのか16以上そこそこでかいのかまでしか関係ないわけで
privateがnullをハンドリングしてないとか無駄なんだよ。もちろん
命に関わるようなところではそれくらいの厳格さが求められる場合も
あるだろうが、普通のビジネスソフトではそこまでやらない。
他のチームが関わる場所を少なくするためにカプセル化するわけで、
そんな全部publicにしたら意味ないんだよ。
856デフォルトの名無しさん
2020/07/05(日) 09:41:54.39ID:LRfXHt7v 弊社はC2カバレッジ100%未満は出荷できませんけどね。
857デフォルトの名無しさん
2020/07/05(日) 09:42:35.87ID:j0cUMVMZ >>854
線引じゃねーよクソ野郎
publicでたまたま呼ばれた1パターンと
privateの網羅テストが同じになってたまるかアホかよ
クラスのなかにあるのでpublicから呼ばれたときだけ動けば
ルーチンとして不出来でもOKなんてあるわけないだろ
お前はクソだからもう死ねよ
線引じゃねーよクソ野郎
publicでたまたま呼ばれた1パターンと
privateの網羅テストが同じになってたまるかアホかよ
クラスのなかにあるのでpublicから呼ばれたときだけ動けば
ルーチンとして不出来でもOKなんてあるわけないだろ
お前はクソだからもう死ねよ
858デフォルトの名無しさん
2020/07/05(日) 09:45:43.25ID:9F15TCk0 >>857
まあじゃあ君はprivateまでテストケース書いてやっとけば良いんじゃない?
誰も止めてないし。大規模ビジネスソフトでは世界的に言って普通ではないというだけで。
僕はあんまり関わることのないレベルの世界だけど、まあ多分一生関わらないので
君が良いならそれで良いと思うよ。
まあじゃあ君はprivateまでテストケース書いてやっとけば良いんじゃない?
誰も止めてないし。大規模ビジネスソフトでは世界的に言って普通ではないというだけで。
僕はあんまり関わることのないレベルの世界だけど、まあ多分一生関わらないので
君が良いならそれで良いと思うよ。
859デフォルトの名無しさん
2020/07/05(日) 09:51:39.34ID:BTTSshKd >>857
君は大変なんだねwテストがんばれーwww
君は大変なんだねwテストがんばれーwww
860デフォルトの名無しさん
2020/07/05(日) 09:54:43.54ID:bzHIXl0a861デフォルトの名無しさん
2020/07/05(日) 10:02:55.49ID:9F15TCk0 >>856
正直QAやってたのは随分前の話だから最近のQAツールは知らんけど、
privateが全部通ってれば100%なわけで、そもそもprivateがある理由は
使われるためなんだから普通は誰も一回も使ってない場合なんかはないわな。
レベルが高くなると通らないケースも出るだろうが。だから線引きってこと。
チンコテストならnullから16までやれば100%通ってる。privateかpublicかって
のは関係ない。ただしprivateはnullをハンドリングしてない。それをどうするかって話。
正直QAやってたのは随分前の話だから最近のQAツールは知らんけど、
privateが全部通ってれば100%なわけで、そもそもprivateがある理由は
使われるためなんだから普通は誰も一回も使ってない場合なんかはないわな。
レベルが高くなると通らないケースも出るだろうが。だから線引きってこと。
チンコテストならnullから16までやれば100%通ってる。privateかpublicかって
のは関係ない。ただしprivateはnullをハンドリングしてない。それをどうするかって話。
862デフォルトの名無しさん
2020/07/05(日) 10:03:22.77ID:iCbhqS6F863デフォルトの名無しさん
2020/07/05(日) 10:05:36.79ID:9F15TCk0864デフォルトの名無しさん
2020/07/05(日) 10:08:05.85ID:9F15TCk0 >>862
だから僕もNTTデータとかは知らんと上に書いてるけれども。
アメリカの大規模ソフトは中の人だし、他の会社のデベロッパも何人も知ってるので、
実際にアメリカの業界は知ってる。
君の「クソブロジェクト」ではないプロジェクトは会社名は出す必要はないが
例えばアメリカのERPとかそのレベルでなんなの?
だから僕もNTTデータとかは知らんと上に書いてるけれども。
アメリカの大規模ソフトは中の人だし、他の会社のデベロッパも何人も知ってるので、
実際にアメリカの業界は知ってる。
君の「クソブロジェクト」ではないプロジェクトは会社名は出す必要はないが
例えばアメリカのERPとかそのレベルでなんなの?
865デフォルトの名無しさん
2020/07/05(日) 10:09:56.64ID:9F15TCk0 だいたい質問を質問で返す人は答えるのに不都合がある人。
数百人のデベロッパーのプロジェクトをやったことなくても全く問題は
ないんだが(ロッキードのミサイルの制御の人とか数百人もいないし)、
「あるよ」とは帰ってこない。
数百人のデベロッパーのプロジェクトをやったことなくても全く問題は
ないんだが(ロッキードのミサイルの制御の人とか数百人もいないし)、
「あるよ」とは帰ってこない。
866デフォルトの名無しさん
2020/07/05(日) 10:15:56.23ID:bzHIXl0a867デフォルトの名無しさん
2020/07/05(日) 10:19:00.51ID:9F15TCk0 >>866
ちょっと弱いかな。「普通はやらんけどやりたかったりやる必要があるならやれば?」
くらい?privateを全部テストケース書いてエッジやネガティブやるとなると多くの場合
サグラダファミリアになるし、普通はやらない。
でもやりたいならやれば良いとは思うのでだいたいそういう感じか。
ちょっと弱いかな。「普通はやらんけどやりたかったりやる必要があるならやれば?」
くらい?privateを全部テストケース書いてエッジやネガティブやるとなると多くの場合
サグラダファミリアになるし、普通はやらない。
でもやりたいならやれば良いとは思うのでだいたいそういう感じか。
868デフォルトの名無しさん
2020/07/05(日) 10:31:49.01ID:BTTSshKd 組み込みおじさんはそこに義務感を感じ、他者に強要するのだろう
難儀なこった
難儀なこった
869デフォルトの名無しさん
2020/07/05(日) 10:37:41.26ID:9F15TCk0 組み込みとかだと多くの場合そもそもOOあんまりいらんと思うのよね。
人工呼吸器の制御とかだときびしくやらないといけないのはわかるし、
やってない人工呼吸器とか俺も付けられたくないけどさw
OOのメソッドとかはちょっと違う話だわな。カプセル化とかは数百人になると
生きてくる。個人的には自分一人の個人プロジェクトでも使うけど。
数年後にまたやる羽目になったりした時に楽なので。
人工呼吸器の制御とかだときびしくやらないといけないのはわかるし、
やってない人工呼吸器とか俺も付けられたくないけどさw
OOのメソッドとかはちょっと違う話だわな。カプセル化とかは数百人になると
生きてくる。個人的には自分一人の個人プロジェクトでも使うけど。
数年後にまたやる羽目になったりした時に楽なので。
870デフォルトの名無しさん
2020/07/05(日) 10:45:19.20ID:MQ9nuMmc871デフォルトの名無しさん
2020/07/05(日) 10:53:33.35ID:kFjTOHVy >>867
どこに差があるのかよくわからんが、どちらにしても一行目は問題ないにしても
二行目はここに存在しない敵を攻撃している印象。
いちいち関係ない話を絡めなくてもいいじゃんと思うが、二度も書くということは
そっちが主張したい本音ということかな?
どこに差があるのかよくわからんが、どちらにしても一行目は問題ないにしても
二行目はここに存在しない敵を攻撃している印象。
いちいち関係ない話を絡めなくてもいいじゃんと思うが、二度も書くということは
そっちが主張したい本音ということかな?
872デフォルトの名無しさん
2020/07/05(日) 10:55:30.48ID:sn+7aSX4 OOPは理解している人とOOPを理解していない人が単体テストについて不毛な争いをするスレかな?
873デフォルトの名無しさん
2020/07/05(日) 10:58:45.46ID:9F15TCk0 >>871
いや、元々がpublicじゃなくてprivate単位でやれという話からなんだからその話だよ。
publicでprivateの分岐通ってるなら良いじゃんといなら誰も否定していないのでは?
逆にprivateで一度も通ってない部分があっても良いじゃんとも言っていないような。
if文書くのに絶対通らない物を書く人いるわけないでしょw
ただ、公式なテストとして、privateのレベルでテストケース書いてログ残してコード
書き換えてコンパイルし直してやるというのは少なくとも普通のビジネスのソフトとしては
一般的なベストプラクティスではないし普通はアメリカの大手一流ではやらないということ。
例外はあるとしても。
いや、元々がpublicじゃなくてprivate単位でやれという話からなんだからその話だよ。
publicでprivateの分岐通ってるなら良いじゃんといなら誰も否定していないのでは?
逆にprivateで一度も通ってない部分があっても良いじゃんとも言っていないような。
if文書くのに絶対通らない物を書く人いるわけないでしょw
ただ、公式なテストとして、privateのレベルでテストケース書いてログ残してコード
書き換えてコンパイルし直してやるというのは少なくとも普通のビジネスのソフトとしては
一般的なベストプラクティスではないし普通はアメリカの大手一流ではやらないということ。
例外はあるとしても。
874デフォルトの名無しさん
2020/07/05(日) 11:03:24.23ID:LRfXHt7v 土台が腐ってたら。
全部検査するほうが楽。
全部検査するほうが楽。
875デフォルトの名無しさん
2020/07/05(日) 11:04:34.60ID:9F15TCk0 幸いそういうのには当たったことはないw
上に書いたように例外は認める。
上に書いたように例外は認める。
876デフォルトの名無しさん
2020/07/05(日) 11:09:23.64ID:MQ9nuMmc アメリカの大手一流ってどこだろ?
877デフォルトの名無しさん
2020/07/05(日) 11:11:04.89ID:MQ9nuMmc アメリカや大手や一流が正しいとは限らないけどね
ボーイングの飛行機があんなことになってるように
ボーイングの飛行機があんなことになってるように
878デフォルトの名無しさん
2020/07/05(日) 11:11:13.65ID:9F15TCk0 まあ会社的にはプログラマなら全員知ってるとこ。それ以上は言わん。
879デフォルトの名無しさん
2020/07/05(日) 11:13:19.35ID:9F15TCk0 >>877
だからボーイングの制御系とかはそもそも全然別の話。
もちろん正しいとは限らないけど標準なのは確かだわな。
日本初のOOより優れたこういうメソッドがある!というなら
もちろん喜んで聞くけどね。
だからボーイングの制御系とかはそもそも全然別の話。
もちろん正しいとは限らないけど標準なのは確かだわな。
日本初のOOより優れたこういうメソッドがある!というなら
もちろん喜んで聞くけどね。
880デフォルトの名無しさん
2020/07/05(日) 11:14:37.74ID:kFjTOHVy >いや、元々がpublicじゃなくてprivate単位でやれという話からなんだからその話だよ。
>ublicでprivateの分岐通ってるなら良いじゃんといなら誰も否定していないのでは?
そう、それが一致しているならいちいち関係ない話を絡めなくてもいいんでは?
public経由のテストで十分網羅できるのにそれでもprivateメソッド単位のテストが
必要なんて主張している人いたかな?そこに誤解があるんじゃないの?
>ublicでprivateの分岐通ってるなら良いじゃんといなら誰も否定していないのでは?
そう、それが一致しているならいちいち関係ない話を絡めなくてもいいんでは?
public経由のテストで十分網羅できるのにそれでもprivateメソッド単位のテストが
必要なんて主張している人いたかな?そこに誤解があるんじゃないの?
881デフォルトの名無しさん
2020/07/05(日) 11:15:16.65ID:9F15TCk0 >>880
いるから揉めてるんすよ。
いるから揉めてるんすよ。
882デフォルトの名無しさん
2020/07/05(日) 11:16:31.89ID:M+BkbwUs >>881
それはどれ?レスを教えて
それはどれ?レスを教えて
883デフォルトの名無しさん
2020/07/05(日) 11:17:47.72ID:MQ9nuMmc アメリカの大手の一流がそうしてるから正しいのだという権威にすがった論理を
展開されておられたのでその会社ってどちらの会社なのって聞いてみたんだけど
そんな会社本当にあるの?
展開されておられたのでその会社ってどちらの会社なのって聞いてみたんだけど
そんな会社本当にあるの?
884デフォルトの名無しさん
2020/07/05(日) 11:18:34.49ID:MQ9nuMmc t_wadaの次はアメリカの大手一流か、議論の根拠が権威ばっかりやな
885デフォルトの名無しさん
2020/07/05(日) 11:21:40.50ID:9F15TCk0 例えばこの方。
848デフォルトの名無しさん2020/07/05(日) 08:16:36.05ID:IUsMolpf
publicを通した範囲でしかできないprivateのテストは網羅されてなく
メソッドの単体テストとして十分なテストは行われていません
あなたの意見は採用できません
できれば実際のプロジェクトを5つぐらい経験されてはいかがでしょうか?
メソッド全部ちゃんとエッジケースやネガティブまでやれって業界があるのは
わかるし、必要だとも思うけど、それはOOのビジネス系だでは普通やらないということを
言ってただけなんだけど、バカだアホだお前は素人だといろんな方面から変に噛みつく
やつばかりでもう僕はいやになっちゃった。この人が噛み付いてきたということではないよ。
もちろんまともな人のが多いんだろうけどおかしな人のが目立つからね。
848デフォルトの名無しさん2020/07/05(日) 08:16:36.05ID:IUsMolpf
publicを通した範囲でしかできないprivateのテストは網羅されてなく
メソッドの単体テストとして十分なテストは行われていません
あなたの意見は採用できません
できれば実際のプロジェクトを5つぐらい経験されてはいかがでしょうか?
メソッド全部ちゃんとエッジケースやネガティブまでやれって業界があるのは
わかるし、必要だとも思うけど、それはOOのビジネス系だでは普通やらないということを
言ってただけなんだけど、バカだアホだお前は素人だといろんな方面から変に噛みつく
やつばかりでもう僕はいやになっちゃった。この人が噛み付いてきたということではないよ。
もちろんまともな人のが多いんだろうけどおかしな人のが目立つからね。
886デフォルトの名無しさん
2020/07/05(日) 11:22:22.08ID:/MeFbFCW いちいち論点ずらすな。
お前ら、何で争ってるんだよ。
お前ら、何で争ってるんだよ。
887デフォルトの名無しさん
2020/07/05(日) 11:23:41.69ID:MQ9nuMmc OOのビジネス系ってどんな仕事?
そんないい加減なことやっていい仕事ある?
トラブってもうちうちでなーなーで済むようなBtoBの仕事?
自社内でしか使わないシステムとか?
そんないい加減なことやっていい仕事ある?
トラブってもうちうちでなーなーで済むようなBtoBの仕事?
自社内でしか使わないシステムとか?
888デフォルトの名無しさん
2020/07/05(日) 11:24:18.36ID:9F15TCk0 アメリカの大手一流が不満なら自分の業界の実例をあげたらいかがだろうか?
privateをテストケース書いて全件やってるとこなんておそらくないぞ。あるというならあげれば良いだけの話。
テストツールどうやって動いてるねん。コード自動で書き換えてコンパイルし直しか。話がおかしいのすぐわかるだろ。
privateをテストケース書いて全件やってるとこなんておそらくないぞ。あるというならあげれば良いだけの話。
テストツールどうやって動いてるねん。コード自動で書き換えてコンパイルし直しか。話がおかしいのすぐわかるだろ。
889デフォルトの名無しさん
2020/07/05(日) 11:24:52.69ID:/MeFbFCW まず、このスレの連中は議論する前に論理学を学ぶことをお勧めするよ。
あと、詭弁について調べろ。
あと、詭弁について調べろ。
890デフォルトの名無しさん
2020/07/05(日) 11:25:24.17ID:MQ9nuMmc >>888
アメリカの大手一流ってどこの会社なん?
アメリカの大手一流ってどこの会社なん?
891デフォルトの名無しさん
2020/07/05(日) 11:25:52.62ID:9F15TCk0892デフォルトの名無しさん
2020/07/05(日) 11:26:35.07ID:9F15TCk0 >>890
君の会社はどこなん?
君の会社はどこなん?
893デフォルトの名無しさん
2020/07/05(日) 11:27:26.12ID:MQ9nuMmc894デフォルトの名無しさん
2020/07/05(日) 11:27:47.35ID:kFjTOHVy >>885
それは網羅してないからダメという意見では?
そこに反論するならば「privateのテストを強制すべきではない」ではなく
「public経由でも網羅することは可能」ではないかね?(できるなら)
それは網羅してないからダメという意見では?
そこに反論するならば「privateのテストを強制すべきではない」ではなく
「public経由でも網羅することは可能」ではないかね?(できるなら)
895デフォルトの名無しさん
2020/07/05(日) 11:27:51.75ID:9F15TCk0896デフォルトの名無しさん
2020/07/05(日) 11:28:29.72ID:MQ9nuMmc897デフォルトの名無しさん
2020/07/05(日) 11:28:59.86ID:YdQ981ul >>870
新しい理論や手法を提唱する人には良くあることだと思うけど、その理論はある前提、ある側面では正しいけど、常に無条件に適用することは正しくないと本人は分かっていて、敢えてそういうことはわざわざ詳しくは説明しない。自分の論が有用な物だと主張したいがため、嘘はつかない範囲で相手が勝手に誤解してすごいと思わせるような物言いをする。
で、その理論に感銘を受けた人の一部が、理論の表面的な効能だけをありがたく受け取って問題点や前提条件などは正しく理解しないまま、受け売りの知識を他所で披露する。
そこで議論になると、本質をちゃんと理解してないまま自説を擁護しようとするから、無理が生じたり話が噛み合わなかったりする。
という流れでイマココなのかなと思う。
新しい理論や手法を提唱する人には良くあることだと思うけど、その理論はある前提、ある側面では正しいけど、常に無条件に適用することは正しくないと本人は分かっていて、敢えてそういうことはわざわざ詳しくは説明しない。自分の論が有用な物だと主張したいがため、嘘はつかない範囲で相手が勝手に誤解してすごいと思わせるような物言いをする。
で、その理論に感銘を受けた人の一部が、理論の表面的な効能だけをありがたく受け取って問題点や前提条件などは正しく理解しないまま、受け売りの知識を他所で披露する。
そこで議論になると、本質をちゃんと理解してないまま自説を擁護しようとするから、無理が生じたり話が噛み合わなかったりする。
という流れでイマココなのかなと思う。
898デフォルトの名無しさん
2020/07/05(日) 11:29:53.38ID:MQ9nuMmc >>897
なるほどね、わかる気がする
なるほどね、わかる気がする
899デフォルトの名無しさん
2020/07/05(日) 11:29:56.16ID:M+BkbwUs 大手一流の名前を言うだけで逃げそう(笑)
900デフォルトの名無しさん
2020/07/05(日) 11:33:32.02ID:MQ9nuMmc 足ガクガクになってまうよー
901デフォルトの名無しさん
2020/07/05(日) 11:36:47.20ID:Ua1+WoRk まぁ、単体テストでprivateを直接呼び出すのは変な話だけどな。
デバッグならともかく、単体テストでリフレクションによるprivate強制実行とか反則でしょ。
デバッグで許される理由は、バグを見つける可能性があるから。
単体テストで駄目な理由は、テストの合否判定が不当に変わる恐れがあるから。
というのが自分の見解だが、皆さんはどう?
スレが加速してからの途中参加だから、自分の発言に自信ないけど。
デバッグならともかく、単体テストでリフレクションによるprivate強制実行とか反則でしょ。
デバッグで許される理由は、バグを見つける可能性があるから。
単体テストで駄目な理由は、テストの合否判定が不当に変わる恐れがあるから。
というのが自分の見解だが、皆さんはどう?
スレが加速してからの途中参加だから、自分の発言に自信ないけど。
902デフォルトの名無しさん
2020/07/05(日) 11:37:26.26ID:9F15TCk0 >>894
そもそもpublicを経由するのが網羅してないから、経由せずにprivate単位で
コード書き換えてテストやるべきという主張自体がOO的にはおかしいわけです。
見せたくないからprivateなわけで。
もちろんデベロッパー個人でコード入れて確認することはあるだろうけれども、
開発手順としてテストケース書いてログ残してというのは違う。
public経由で内部を網羅してるかしてないかは知ったことではない、というのが正解。
上の例で言えばfuncBやfuncSがnullをチェックしてようがしていまいが他のチームには
関係ないわけです。入り口でnullチェックしてれば。
個人的にはサイズがでかければprivateでも入れるけども、それをテストケース書いて
ログ残してと要求されたことはないし、普通はされんはず。少なくともアメリカでは。
そもそもpublicを経由するのが網羅してないから、経由せずにprivate単位で
コード書き換えてテストやるべきという主張自体がOO的にはおかしいわけです。
見せたくないからprivateなわけで。
もちろんデベロッパー個人でコード入れて確認することはあるだろうけれども、
開発手順としてテストケース書いてログ残してというのは違う。
public経由で内部を網羅してるかしてないかは知ったことではない、というのが正解。
上の例で言えばfuncBやfuncSがnullをチェックしてようがしていまいが他のチームには
関係ないわけです。入り口でnullチェックしてれば。
個人的にはサイズがでかければprivateでも入れるけども、それをテストケース書いて
ログ残してと要求されたことはないし、普通はされんはず。少なくともアメリカでは。
903デフォルトの名無しさん
2020/07/05(日) 11:38:33.09ID:MQ9nuMmc GoogleであってもMicrosoftやOracleもバグのないソフトは作れないし
銀の弾丸的な手法があるわけもなく、アメリカ、大手、一流という箔付けに頼ってるだけでしかない
銀の弾丸的な手法があるわけもなく、アメリカ、大手、一流という箔付けに頼ってるだけでしかない
904デフォルトの名無しさん
2020/07/05(日) 11:41:45.16ID:Xwol7cCi905デフォルトの名無しさん
2020/07/05(日) 11:43:37.87ID:9F15TCk0 >>896
君の会社はどこなの?
アメリカ大手1流でブライベート単位でのテストケース書いたりした網羅的なテストは「していない」という証明は悪魔の証明だから無理だけど。全社で働いたわけじゃないし。
逆にアメリカ大手1流でやっているという証明は一件出すだけなのでGAFAのどこでも、マイクロソフトでもアドビでも簡単にできるのでぜひどうぞ。
ただ、なんかコピペで爆撃されたオートメーションツールでは、特にコンパイル必要な言語は、直接privateテスト出来ないよ。当たり前の話。
君の会社はどこなの?
アメリカ大手1流でブライベート単位でのテストケース書いたりした網羅的なテストは「していない」という証明は悪魔の証明だから無理だけど。全社で働いたわけじゃないし。
逆にアメリカ大手1流でやっているという証明は一件出すだけなのでGAFAのどこでも、マイクロソフトでもアドビでも簡単にできるのでぜひどうぞ。
ただ、なんかコピペで爆撃されたオートメーションツールでは、特にコンパイル必要な言語は、直接privateテスト出来ないよ。当たり前の話。
906デフォルトの名無しさん
2020/07/05(日) 11:45:23.06ID:MQ9nuMmc >>905
アメリカの大手一流ってどこなんよ?
アメリカの大手一流ってどこなんよ?
907デフォルトの名無しさん
2020/07/05(日) 11:45:48.03ID:MQ9nuMmc その会社がやってるからすごいんでしょ、はよ教えてやー
908デフォルトの名無しさん
2020/07/05(日) 11:47:16.10ID:MQ9nuMmc もう何でもええから言うて、そしたら僕がすごーいって言うから、もうそれでええやんか
909デフォルトの名無しさん
2020/07/05(日) 11:49:23.59ID:9F15TCk0 また別IDが下痢便とか発狂し始めた。
お前はほんとにウンコとかそのレベルのことが好きだな。
お前はほんとにウンコとかそのレベルのことが好きだな。
910デフォルトの名無しさん
2020/07/05(日) 11:51:02.27ID:9F15TCk0911デフォルトの名無しさん
2020/07/05(日) 11:51:58.59ID:MQ9nuMmc >>910
アメリカの大手一流ってどこなんよ?
アメリカの大手一流ってどこなんよ?
912デフォルトの名無しさん
2020/07/05(日) 11:52:54.88ID:MQ9nuMmc たぶんアップルは単体テストやってない、SSLでアホなバグだしてたから、あの会社適当だわ、しらんけど
913デフォルトの名無しさん
2020/07/05(日) 11:53:26.19ID:9F15TCk0 >>911
君が自分の名刺でもあげたら考えとくわー
君が自分の名刺でもあげたら考えとくわー
914デフォルトの名無しさん
2020/07/05(日) 11:55:12.71ID:MQ9nuMmc915デフォルトの名無しさん
2020/07/05(日) 11:55:58.39ID:M+BkbwUs >>902
> そもそもpublicを経由するのが網羅してないから、経由せずにprivate単位で
> コード書き換えてテストやるべきという主張自体がOO的にはおかしいわけです。
誰がそんなこと言ってるの?
少なく遠も俺は
1. privateはpublic経由でテストすれば十分
2. もしpublic経由でテストできないほど複雑なら、そもそも設計がおかしい
3. 設計の問題を修正して、責務を分割すれば、自然にpublicになるはず
と言ってる。
テストするためにpublicにするのではなく
問題がある設計を直せばpublicになる。と言っている。
> そもそもpublicを経由するのが網羅してないから、経由せずにprivate単位で
> コード書き換えてテストやるべきという主張自体がOO的にはおかしいわけです。
誰がそんなこと言ってるの?
少なく遠も俺は
1. privateはpublic経由でテストすれば十分
2. もしpublic経由でテストできないほど複雑なら、そもそも設計がおかしい
3. 設計の問題を修正して、責務を分割すれば、自然にpublicになるはず
と言ってる。
テストするためにpublicにするのではなく
問題がある設計を直せばpublicになる。と言っている。
916デフォルトの名無しさん
2020/07/05(日) 11:55:59.42ID:9F15TCk0917デフォルトの名無しさん
2020/07/05(日) 11:58:34.47ID:9F15TCk0 >>915
いや だ か ら この人。
848デフォルトの名無しさん2020/07/05(日) 08:16:36.05ID:IUsMolpf
publicを通した範囲でしかできないprivateのテストは網羅されてなく
メソッドの単体テストとして十分なテストは行われていません
あなたの意見は採用できません
できれば実際のプロジェクトを5つぐらい経験されてはいかがでしょうか?
いや だ か ら この人。
848デフォルトの名無しさん2020/07/05(日) 08:16:36.05ID:IUsMolpf
publicを通した範囲でしかできないprivateのテストは網羅されてなく
メソッドの単体テストとして十分なテストは行われていません
あなたの意見は採用できません
できれば実際のプロジェクトを5つぐらい経験されてはいかがでしょうか?
918デフォルトの名無しさん
2020/07/05(日) 11:59:21.06ID:MQ9nuMmc アップルのSSLのバグはこれね
Apple史上最悪のセキュリティバグか、iOSとOS XのSSL接続に危険すぎる脆弱性が発覚──原因はタイプミス?
https://appllio.com/20140223-4899-apple-ios-bug-ssl-goto-fail
Apple史上最悪のセキュリティバグか、iOSとOS XのSSL接続に危険すぎる脆弱性が発覚──原因はタイプミス?
https://appllio.com/20140223-4899-apple-ios-bug-ssl-goto-fail
919デフォルトの名無しさん
2020/07/05(日) 12:06:18.88ID:wqV8YbJ4 IUsMolpfに文句言えばいいのに。
920デフォルトの名無しさん
2020/07/05(日) 12:07:47.85ID:kFjTOHVy >>902
ああつまり、重要度は関数仕様>ブラックボックステスト>ホワイトボックステストだから
テストのために仕様変更はすべきでないという主張か。
それはわからんでもない気はするけど、そういうウォーターフォールが絶対というわけでもないしな。
その是非はさておき、そこが論点なら例えばリフレクションのような形でテストできたり、あるいは
テスト仕様を書く本人が関数仕様も決定することができる条件なら全然問題ないわけだ。
ああつまり、重要度は関数仕様>ブラックボックステスト>ホワイトボックステストだから
テストのために仕様変更はすべきでないという主張か。
それはわからんでもない気はするけど、そういうウォーターフォールが絶対というわけでもないしな。
その是非はさておき、そこが論点なら例えばリフレクションのような形でテストできたり、あるいは
テスト仕様を書く本人が関数仕様も決定することができる条件なら全然問題ないわけだ。
921デフォルトの名無しさん
2020/07/05(日) 12:07:48.24ID:9F15TCk0922デフォルトの名無しさん
2020/07/05(日) 12:08:47.51ID:MQ9nuMmc >>921
せやろw
せやろw
923デフォルトの名無しさん
2020/07/05(日) 12:13:26.38ID:9F15TCk0924デフォルトの名無しさん
2020/07/05(日) 12:16:58.82ID:kFjTOHVy >なんにしてもprivateを(例外はあるにせよ)全部公式な形でテストしろというのは
>OOの手法のプロジェクトでは「普通は」やらんというだけなのになんでこんな揉めるのか。
全部やれなんて主張している人がいないから。
>OOの手法のプロジェクトでは「普通は」やらんというだけなのになんでこんな揉めるのか。
全部やれなんて主張している人がいないから。
925デフォルトの名無しさん
2020/07/05(日) 12:19:09.22ID:9F15TCk0 >>924
だからいるだろうが。本人なの?
848デフォルトの名無しさん2020/07/05(日) 08:16:36.05ID:IUsMolpf
publicを通した範囲でしかできないprivateのテストは網羅されてなく
メソッドの単体テストとして十分なテストは行われていません
あなたの意見は採用できません
できれば実際のプロジェクトを5つぐらい経験されてはいかがでしょうか?
だからいるだろうが。本人なの?
848デフォルトの名無しさん2020/07/05(日) 08:16:36.05ID:IUsMolpf
publicを通した範囲でしかできないprivateのテストは網羅されてなく
メソッドの単体テストとして十分なテストは行われていません
あなたの意見は採用できません
できれば実際のプロジェクトを5つぐらい経験されてはいかがでしょうか?
926デフォルトの名無しさん
2020/07/05(日) 12:20:23.64ID:MQ9nuMmc927デフォルトの名無しさん
2020/07/05(日) 12:21:30.51ID:MQ9nuMmc privateメソッドが正しいことは確認する、その上でpublicのメソッドが正しいかテストするって感じ
928デフォルトの名無しさん
2020/07/05(日) 12:30:30.98ID:kFjTOHVy >>925
これが「privateのテストを全部やれ」に読めてしまうのか。そこが原因だな。
これが「privateのテストを全部やれ」に読めてしまうのか。そこが原因だな。
929デフォルトの名無しさん
2020/07/05(日) 12:32:35.17ID:M+BkbwUs >>923
> ウォーターフォールは関係ないし、重要度をつけてるわけでもないけれども、
> 普通はprivateはソースコード変えてまでテストするものではないというだけの単純な話。
テスト中に設計の問題が発覚しても
ソースコード書き換えないの?
ソースコード変えてまでテストするものではないというけど
なんでソースコードを作成&自分が書いたそのコードをテストしてるときに
自分が作成してるソースコードを変えたらだめなの?
> ウォーターフォールは関係ないし、重要度をつけてるわけでもないけれども、
> 普通はprivateはソースコード変えてまでテストするものではないというだけの単純な話。
テスト中に設計の問題が発覚しても
ソースコード書き換えないの?
ソースコード変えてまでテストするものではないというけど
なんでソースコードを作成&自分が書いたそのコードをテストしてるときに
自分が作成してるソースコードを変えたらだめなの?
930デフォルトの名無しさん
2020/07/05(日) 12:36:24.73ID:M+BkbwUs 普通の開発だったら
0. なにかの修正を行う必要が発生する
1. その修正のためにソースコードを修正する
2. 修正したコードが正しいかテストする
3. 1〜2を繰り返し修正したコードに問題がなければ開発完了
4. 統合テストとかより大きなテストを行う
でしょ?
public・privateメソッドをテストしたいっていうのは
この1〜2のフェーズで発生することなのに、
なんでテストがやりにくいなと思ったときに
ソースコードを修正したらだめなの?
0. なにかの修正を行う必要が発生する
1. その修正のためにソースコードを修正する
2. 修正したコードが正しいかテストする
3. 1〜2を繰り返し修正したコードに問題がなければ開発完了
4. 統合テストとかより大きなテストを行う
でしょ?
public・privateメソッドをテストしたいっていうのは
この1〜2のフェーズで発生することなのに、
なんでテストがやりにくいなと思ったときに
ソースコードを修正したらだめなの?
931デフォルトの名無しさん
2020/07/05(日) 12:38:58.81ID:wqV8YbJ4 >>926
スマホでも見やすくなったな。
あー、なるほど。
でも、サンプルみたら少し混乱してきた。
自分はクラスの単体テストをイメージしてたけど、まさか、Mainクラスの中に定義されたprivateメソッドの単体テスト(?)の話をしていたとか?
もう単体テストの意味が少し崩壊してきたが...
スマホでも見やすくなったな。
あー、なるほど。
でも、サンプルみたら少し混乱してきた。
自分はクラスの単体テストをイメージしてたけど、まさか、Mainクラスの中に定義されたprivateメソッドの単体テスト(?)の話をしていたとか?
もう単体テストの意味が少し崩壊してきたが...
932デフォルトの名無しさん
2020/07/05(日) 12:46:16.73ID:BTTSshKd どういう流れなのか追うのもめんどいなw
933デフォルトの名無しさん
2020/07/05(日) 12:52:51.86ID:9F15TCk0 >>928
そもそも300くらいからそういう話だから。
privateはpublicからアクセスして全部網羅できるから問題ないなんて
誰も否定してないしそういうことならもともと荒れてない。
>>929
あのさ、例えばバグが発生したらコード書き換えるのは当たり前だよね?
そんな話では当然ないよね?
privateを直接テストするためには外部から呼べないのだから、呼ぶためには
クラス内に書くしかないわけだよ。で、ソースに書き込んでクラス内に書いて
テストしたあとまたそのコードを取り除いてとかするの?それをドキュメント化
する?
普通はコード書いてる最中にテストコードを入れて確認するのは公式なテストの
メソッドでは無いし、それをドキュメント化したりするのは求められないと
思うが。
>>926
ワロタw
けどそうじゃ無い。privateで直接アクセスした時のみnullがでるということ。
intじゃ無いのは例のためにわざとそうなっている。あとchinTestが呼ばれてないし、
OptionalにisEmpty無いのでは。
そもそも300くらいからそういう話だから。
privateはpublicからアクセスして全部網羅できるから問題ないなんて
誰も否定してないしそういうことならもともと荒れてない。
>>929
あのさ、例えばバグが発生したらコード書き換えるのは当たり前だよね?
そんな話では当然ないよね?
privateを直接テストするためには外部から呼べないのだから、呼ぶためには
クラス内に書くしかないわけだよ。で、ソースに書き込んでクラス内に書いて
テストしたあとまたそのコードを取り除いてとかするの?それをドキュメント化
する?
普通はコード書いてる最中にテストコードを入れて確認するのは公式なテストの
メソッドでは無いし、それをドキュメント化したりするのは求められないと
思うが。
>>926
ワロタw
けどそうじゃ無い。privateで直接アクセスした時のみnullがでるということ。
intじゃ無いのは例のためにわざとそうなっている。あとchinTestが呼ばれてないし、
OptionalにisEmpty無いのでは。
934デフォルトの名無しさん
2020/07/05(日) 12:54:31.17ID:9F15TCk0 nullがでる->ヌルポがでる
935デフォルトの名無しさん
2020/07/05(日) 12:54:57.72ID:M+BkbwUs >>933
> privateを直接テストするためには外部から呼べないのだから、呼ぶためには
> クラス内に書くしかないわけだよ。で、ソースに書き込んでクラス内に書いて
> テストしたあとまたそのコードを取り除いてとかするの?それをドキュメント化
> する?
誰がそんな事するって言ってんの?
お前が想像が間違ってる
> privateを直接テストするためには外部から呼べないのだから、呼ぶためには
> クラス内に書くしかないわけだよ。で、ソースに書き込んでクラス内に書いて
> テストしたあとまたそのコードを取り除いてとかするの?それをドキュメント化
> する?
誰がそんな事するって言ってんの?
お前が想像が間違ってる
936デフォルトの名無しさん
2020/07/05(日) 12:56:01.25ID:MQ9nuMmc >>933
えっとごめんそのnullの問題は設計が下手なだけだと思ってて、設計を見直すべきかと
privateのテストをどうしますかの例として出したので問題ないっしょ
君はこのプログラムをどうやってテストするん?
えっとごめんそのnullの問題は設計が下手なだけだと思ってて、設計を見直すべきかと
privateのテストをどうしますかの例として出したので問題ないっしょ
君はこのプログラムをどうやってテストするん?
937デフォルトの名無しさん
2020/07/05(日) 12:56:34.25ID:3WDjCjSx よくもまあ粉薬をオブラートで包むような話でこれだけのレスで盛り上がれるなー
938デフォルトの名無しさん
2020/07/05(日) 12:57:28.17ID:M+BkbwUs いやーびっくりだw
設計がおかしいから設計を修正するって話をしてるのに
設計を修正した後に修正前に戻すなんでやらないだろ!って言われちゃった(笑)
だーれも修正前に戻すなんて言ってないの
おかしい設計を修正して「開発完了」なの
設計がおかしいから設計を修正するって話をしてるのに
設計を修正した後に修正前に戻すなんでやらないだろ!って言われちゃった(笑)
だーれも修正前に戻すなんて言ってないの
おかしい設計を修正して「開発完了」なの
939デフォルトの名無しさん
2020/07/05(日) 12:57:46.31ID:JiRnWiGC たぶん、スレタイがスレタイだから、手続き型でプログラムを書く人のイメージする単体テストとオブジェクト指向プログラマーのイメージする単体テストで齟齬が生じているのでは?
そりゃ、サンプルみたいに関数が定義されていたらprivateだろうと関数はテストするべきって発想になるのは不思議じゃないし、オブジェクト指向に基づき設計されたクラスを単体テストする話であれば、privateをテストって、どういう意味なんだろって不思議がるだろうよ。
そして、たぶん、サンプルコードに対して真っ先に突っ込むべき点はOOPでも何でもないコードという点だと思うのだが、そこはいいのかな?
そりゃ、サンプルみたいに関数が定義されていたらprivateだろうと関数はテストするべきって発想になるのは不思議じゃないし、オブジェクト指向に基づき設計されたクラスを単体テストする話であれば、privateをテストって、どういう意味なんだろって不思議がるだろうよ。
そして、たぶん、サンプルコードに対して真っ先に突っ込むべき点はOOPでも何でもないコードという点だと思うのだが、そこはいいのかな?
940デフォルトの名無しさん
2020/07/05(日) 12:57:47.49ID:MQ9nuMmc OptionalにisEmptyが無いというのは何言ってるのかわからない
本当になかったらコンパイルに失敗するよ
本当になかったらコンパイルに失敗するよ
941デフォルトの名無しさん
2020/07/05(日) 13:00:08.78ID:M+BkbwUs942デフォルトの名無しさん
2020/07/05(日) 13:00:23.50ID:MQ9nuMmc943デフォルトの名無しさん
2020/07/05(日) 13:00:34.24ID:9F15TCk0944デフォルトの名無しさん
2020/07/05(日) 13:03:47.50ID:MQ9nuMmc >>943
ヌルポになるような設計はおかしいのがそれはコーディング力の稚拙さゆえ。
だから、いまはそのヌルポの問題は置いておこう。
さて、君はこのプログラムをどうテストするのか教えて欲しいっていうのが僕の要望だよ。
ヌルポになるような設計はおかしいのがそれはコーディング力の稚拙さゆえ。
だから、いまはそのヌルポの問題は置いておこう。
さて、君はこのプログラムをどうテストするのか教えて欲しいっていうのが僕の要望だよ。
945デフォルトの名無しさん
2020/07/05(日) 13:06:51.97ID:9F15TCk0 >>944
いやだから そ う じ ゃ な く て
privateでだけヌルポが出るように書いてるの。privateとpublicのテストの話だから。
出さないだけならnullチェック入れれば良いだけの話だが、そういうことじゃ無くて
わざと出るようになってるの。
そのプログラムならstaticなのだからそのまま呼べば良いし、
chinTestも呼ばれてないけどpublicなのだからテストしたければそのまま
呼べば良い話。
いやだから そ う じ ゃ な く て
privateでだけヌルポが出るように書いてるの。privateとpublicのテストの話だから。
出さないだけならnullチェック入れれば良いだけの話だが、そういうことじゃ無くて
わざと出るようになってるの。
そのプログラムならstaticなのだからそのまま呼べば良いし、
chinTestも呼ばれてないけどpublicなのだからテストしたければそのまま
呼べば良い話。
946デフォルトの名無しさん
2020/07/05(日) 13:10:29.02ID:JiRnWiGC >>942
スマホだからインデントとか崩れは許してほしいが
class USBMemory : Storage{
private:
色々定義
public:
USBMemory(ポート設定)
void open(string file)
string read()
void write(テキスト)
void close()
}
文法適当だが勘弁して
組み込みおじさんにも分かりやすいように、
組み込みを例にするが、
OOPってこんな感じのコードでしょ。
で、ユーザーは
USBMemory usb;
usb.open(ファイル指定)
text = usb.read()
usb.close()
こんな風に内部実装を知らなくても呼べる。
スマホだからインデントとか崩れは許してほしいが
class USBMemory : Storage{
private:
色々定義
public:
USBMemory(ポート設定)
void open(string file)
string read()
void write(テキスト)
void close()
}
文法適当だが勘弁して
組み込みおじさんにも分かりやすいように、
組み込みを例にするが、
OOPってこんな感じのコードでしょ。
で、ユーザーは
USBMemory usb;
usb.open(ファイル指定)
text = usb.read()
usb.close()
こんな風に内部実装を知らなくても呼べる。
947デフォルトの名無しさん
2020/07/05(日) 13:11:36.99ID:MQ9nuMmc >>945
わざと出るように入れたのが現実の実装と乖離してるので、わざと入れる意味が無いので
気にする必要ないですよってこと
君はpublic経由でprivateをテストするんだって立場ですよね
君はどうテストを書きますかってことを教えて欲しいです
君の元のコードでもいいですよ、僕が変更したコードでも良いですよ
君はどうprivateをテストしますか?
わざと出るように入れたのが現実の実装と乖離してるので、わざと入れる意味が無いので
気にする必要ないですよってこと
君はpublic経由でprivateをテストするんだって立場ですよね
君はどうテストを書きますかってことを教えて欲しいです
君の元のコードでもいいですよ、僕が変更したコードでも良いですよ
君はどうprivateをテストしますか?
948デフォルトの名無しさん
2020/07/05(日) 13:12:18.35ID:JiRnWiGC 残念ながら、クラスを使えばOOPという認識は間違い。
949デフォルトの名無しさん
2020/07/05(日) 13:13:15.86ID:MQ9nuMmc >>948
僕は君の認識が間違いだと思ってる、君の方が残念
僕は君の認識が間違いだと思ってる、君の方が残念
950デフォルトの名無しさん
2020/07/05(日) 13:13:55.43ID:MQ9nuMmc クラスの存在こそがOOPの本質
951デフォルトの名無しさん
2020/07/05(日) 13:13:59.63ID:JiRnWiGC え、そこに反論されるの?
何このスレ。
何このスレ。
952デフォルトの名無しさん
2020/07/05(日) 13:14:57.78ID:JiRnWiGC JavaScriptとかpythonとか、元々、クラスはサポートしていないのに?
プロトタイプベースはオブジェクト指向じゃないとでも?
プロトタイプベースはオブジェクト指向じゃないとでも?
953デフォルトの名無しさん
2020/07/05(日) 13:17:49.53ID:MQ9nuMmc >>951
えじゃねえよ、なめんなよ
えじゃねえよ、なめんなよ
954デフォルトの名無しさん
2020/07/05(日) 13:18:05.20ID:9F15TCk0 >>947
意味がないどころか、そこにしか意味がないんだよ。
それ「だけ」を見せるためのコードなんだから。staticとか
なら話の流れとなんにも関係がないのでそれこそ意味がない。
でもあえていうなら、そもそもまず連打が好きじゃ無い。自分ならループにするけど、
それだけでもない。
まず壊すようにテストすんの。null入れたり、変なオブジェクト入れたり。
で、privateをテストするんじゃなくて、要件通り動くかどうか。nullからint maxまで
回して、要件通りの結果が全てでくるか。変なオブジェクト入れたらどうか。
そういう感じ。
でも最初に書いたように、publicとprivateの話なんだから、そこで
エラーが出るか出ないかがないとこのスレ的にはなんの意味もない。
意味がないどころか、そこにしか意味がないんだよ。
それ「だけ」を見せるためのコードなんだから。staticとか
なら話の流れとなんにも関係がないのでそれこそ意味がない。
でもあえていうなら、そもそもまず連打が好きじゃ無い。自分ならループにするけど、
それだけでもない。
まず壊すようにテストすんの。null入れたり、変なオブジェクト入れたり。
で、privateをテストするんじゃなくて、要件通り動くかどうか。nullからint maxまで
回して、要件通りの結果が全てでくるか。変なオブジェクト入れたらどうか。
そういう感じ。
でも最初に書いたように、publicとprivateの話なんだから、そこで
エラーが出るか出ないかがないとこのスレ的にはなんの意味もない。
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 東京株式市場 インバウンド関連株が下落 中国政府の渡航自粛要請で [バイト歴50年★]
- 5:55:55.555
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 戦争は無くならないし殺人は起きるし女はレイプされるし子供は餓死するし
- 日経時間外、5万円割れ 垂直落下始まる [402859164]
- 高市さんに土下座してもらったら一発解決なのに何でやらないんだろ??
- 【悲報】男性人気アイドルグループJO1、中国公演中止wwwwwwwwwwwwwwwwwwwwwwwwwww
