◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

カプセル化■プライベートメソッドをテストする方法 ->画像>7枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1593949666/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん2020/07/05(日) 20:47:46.60ID:M+BkbwUs
■短い回答
プライベートをテストしたい場合は設計に問題があるので、パブリックに変更してテストしましょう

■これに対する(変な人の)驚いた反論

プライベートを一時的にパブリックにして、テストが終わったら
プライベートに戻すなんてやるわけないだろw
↑誰もそんなコトしろなんて言ってない

■テスト専門家による回答

t-wadaのブログ
https://t-wada.hatenablog.jp/entry/should-we-test-private-methods

短くまとめると、プライベートなメソッドのテストを書く必要は 無い と考えています。

ほとんどのプライベートメソッドはパブリックメソッド経由でテストできるからです。
プライベートメソッドは実装の詳細であり、自動テストのターゲットとなる「外部から見た振る舞い」ではありません。
プライベートなメソッドのテストに関しては、4つの考え方があります。

・パブリックメソッド経由でテストする
・別クラスのパブリックメソッドとする
・テスト対象の可視性を(やや)上げる
・プライベートのまま、リフレクションでアクセスしてテストを書く

パブリックメソッド経由でテストする
多くの場合、そのクラスのパブリックメソッド経由でプライベートメソッドのテストも同時に行えます。テストできているか不安があるならテストカバレッジを確認しましょう。

別クラスのパブリックメソッドとする
プライベートなメソッドのテストを書きたいということは、実はテスト対象の責務が多すぎることを示唆している場合があります。
テストがどうしても書きたい場合は、その責務はテスト対象のプライベートな振る舞いではなく、他の誰かのパブリックな振る舞いなのでしょう。

2デフォルトの名無しさん2020/07/05(日) 20:48:27.27ID:M+BkbwUs
前スレ

カプセル化の有害性、オブジェクト指向は愚かな考え
http://2chb.net/r/tech/1592491656/

3デフォルトの名無しさん2020/07/05(日) 20:51:53.15ID:M+BkbwUs
クソコード例。こんなコード書いてるやつが、privateのテストで
パブリックに変更してテストするのはおかしいとか言ってる(笑)
lenが配列(笑)理由 int型にはnullが入れられないから(笑)

http://2chb.net/r/tech/1592491656/805
ずれるかもしれないが下のような場合、privateにnullを突っ込んだらヌルポだが
privateをわざわざコード弄ってまで別にテストするようなことは少なくとも
ビジネスソフトでは知ってる限り無い。組み込みとかは知らんし必要ならやれば良いけど。

class ChinTester {
public void testChin(int[] len) {
if (len==null){System.out.println("You are a woman");
return;}
if (len.length<11){ uncS(len);}
else{funcB(len);}
return;}

private void funcS(int[] len){
if (len.length<9){System.out.println("Smallest");
}else{System.out.println("Smaller");}
return;}

private void funcB(int[] len){
if (len.length<14){System.out.println("Medium");}
else if (len.length<16){System.out.println("Bigger");
}else{ System.out.println("Wow!");}
return;}
}

4デフォルトの名無しさん2020/07/05(日) 20:53:33.00ID:M+BkbwUs
983 名前:デフォルトの名無しさん[] 投稿日:2020/07/05(日) 14:18:27.81 ID:9F15TCk0 [68/74]
正直あの短さでOOかどうかと(スタティックでインスタンス化もないコードだが)言うのは
不毛だけどID:JiRnWiGCの組み込みおじさんのがOO感はあるよ。

で、staticで出されてもprivateのテストがどうかと言う話には全く寄与しないわけだが、
じゃあ逆に、>>805のチンコテストのfuncSとfuncBはどうやってテストするの?

パブリック経由で全パターンと言うことならこれでこの話はおしまい。
パブリック経由でやりましょう。

違うと言うなら具体的にコードでおながいします。

5デフォルトの名無しさん2020/07/05(日) 20:54:53.36ID:M+BkbwUs
>>4への回答
設計に問題があるので、コードを修正しましょう。
修正すれば自然とpublicになります↓

926 名前:デフォルトの名無しさん[] 投稿日:2020/07/05(日) 12:20:23.64 ID:MQ9nuMmc [21/53]
>>805
こう書いた方が良いと思うの
https://paiza.io/projects/mPhqBnYZnQukkW6HY9LmOQ

6デフォルトの名無しさん2020/07/05(日) 20:57:49.33ID:M+BkbwUs
>>5の補足、これはまだプライベートですが
普通はMainクラスにコードをごちゃごちゃ書かないので
judgeLengthを含むクラスを作成します。

そしてmainから呼び出します。
必然的にjudgeLengthメソッドはパブリックになります。

7デフォルトの名無しさん2020/07/05(日) 21:03:41.24ID:MQ9nuMmc
>>6
judgeLengthをpublicにしてよいかどうか、オブジェクトをわけて良いかどうかは微妙なところで
publicにした場合って他のオブジェクトからも参照可能になってしまうので
そこの依存があとあとjudgeLengthの修正をできなくする可能性があるので
privateにするっていうのは他のオブジェクトから依存させないようにして独立させる意味もあるので
テストするためにpublicにしますっていうのは僕はやっぱり反対ですね

8デフォルトの名無しさん2020/07/05(日) 21:04:50.23ID:MQ9nuMmc
僕が書いたように同じオブジェクトにテストコードも書いちゃえば良いと思います

9デフォルトの名無しさん2020/07/05(日) 21:07:40.54ID:M+BkbwUs
>>7
微妙でもなんでもねーよ
Mainクラスに関係ない処理を入れるな

これは小さいサンプルだが、大きくなった時
Mainクラスに、そんな処理はいってたらおかしいだろ
なんで(大きくなったコードの)その他の部分は別のクラスにあるのに
この処理だけMainクラスにあるんだ?って

10デフォルトの名無しさん2020/07/05(日) 21:09:37.34ID:MQ9nuMmc
>>9
Mainクラスと関係ある処理だからMainクラスにあるんじゃよ
Mainクラスからしかアクセスしないからprivateなんじゃよ
テストするためにpublicにするのはおかしいのじゃよ

11デフォルトの名無しさん2020/07/05(日) 21:11:26.55ID:M+BkbwUs
>>10
Mainクラスと関係ある処理だから?

じゃあ名前が悪いよね。
誰が「Mainクラス」と聞いて
その中にある処理を想像できるんだ?w

12デフォルトの名無しさん2020/07/05(日) 21:13:00.77ID:MQ9nuMmc
>>11
えっと、前にも言ったけどpaizaはMainという名前じゃないと動かないんだよ
Mainとわけてクラスを作ることもできるけど面倒だからやらなかっただけ
普通のプログラマならpaizaの制約ぐらい知ってるだろうし説明する必要もないと思ってた
君の無知さを想像できなかった僕のミスだ

13デフォルトの名無しさん2020/07/05(日) 21:13:24.90ID:MQ9nuMmc
君が無知すぎてごめん

14デフォルトの名無しさん2020/07/05(日) 21:14:24.05ID:MQ9nuMmc
誠にごめんなさい

15デフォルトの名無しさん2020/07/05(日) 21:14:43.14ID:M+BkbwUs
>>12
だから分けろって。設計がおかしいだろ。

Mainクラスにメインの処理を入れるな
設計が悪いって言ってるのになんで理解できない?

16デフォルトの名無しさん2020/07/05(日) 21:15:37.89ID:M+BkbwUs
プライベートをテストしたいっていうのは
本質的に設計が悪いってことが理解できないやつ
もしくは設計なんてしたことがないやつなんだろう

17デフォルトの名無しさん2020/07/05(日) 21:15:45.13ID:MQ9nuMmc
>>15
てめえでやれやハゲ

18デフォルトの名無しさん2020/07/05(日) 21:16:23.44ID:M+BkbwUs
>>17
だからやるのが正解だろw

19デフォルトの名無しさん2020/07/05(日) 21:17:00.58ID:MQ9nuMmc
>>16
君は簡単なロジックしか組む機会がなかった幸せな人だと思うよ
僕は君が羨ましい、幸せな人生を歩んでいるね

20デフォルトの名無しさん2020/07/05(日) 21:17:17.30ID:MQ9nuMmc
>>18
やってない君が不正解だね

21デフォルトの名無しさん2020/07/05(日) 21:19:16.27ID:MQ9nuMmc
僕は下痢便コードをこうするべきって修正したよ
paizaで動くようにMainというクラス名に変えたけどね
paizaだからそうなるよねってみんな理解してくれるものと思ってた
paizaを知らない木偶の坊がクラス名に文句つけてきたとき僕は絶望した

22デフォルトの名無しさん2020/07/05(日) 21:20:28.56ID:Xwol7cCi
まだやってたのかw
>>5みたいな下痢便コードが出てきた時点で
「あっ・・・(察し)」でスレ終了でしょ

23デフォルトの名無しさん2020/07/05(日) 21:21:29.14ID:MQ9nuMmc
こうするべきだと思うならやれば良いがな
自分でやりもせず他人に文句いうだけの人間は木偶の坊のそしりを免れないよ

24デフォルトの名無しさん2020/07/05(日) 21:22:53.14ID:M+BkbwUs
Mainに他のクラスの処理を全て同居させる

全部Mainにあるから呼び出せるよね?と
publicメソッドをprivateメソッドに変更

publicメソッドはMainのみ!
と言い

あぁ、プライベートメソッドのテストができない~と嘆く(笑)

アホなのか?自分でテストできないようにクソ設計に変更して
自業自得じゃんw

25222020/07/05(日) 21:23:27.95ID:Xwol7cCi
×>>5みたいな下痢便コードが出てきた時点で
>>3みたいな下痢便コードが出てきた時点で

すまん訂正

26デフォルトの名無しさん2020/07/05(日) 21:25:43.01ID:MQ9nuMmc
>>24
君はまだMainという名前のレトリックから抜け出せてないように見える
paizaで動かすためにMainという名前にしたってだけだから
実際にはそれなりの名前になるでしょう
privateメソッドは当然クラスと関係あるものになるでしょうということ

Mainという名前に囚われ過ぎておられるように見受けられる
自分だったらこう書くのにって言うのがあるならそれを実践してみるべきかと思われます

27デフォルトの名無しさん2020/07/05(日) 21:25:44.19ID:M+BkbwUs
おそらく設計とは何かを知らずに、
ただ動けばいいと思ってるんだろう

テストしやすく設計するのも
設計の一つ

28デフォルトの名無しさん2020/07/05(日) 21:26:22.28ID:MQ9nuMmc
>>27
Mainを勘違いしてたアホが何抜かしとんねん

29デフォルトの名無しさん2020/07/05(日) 21:26:36.76ID:M+BkbwUs
>>26
だからテストしやすようにjudgeLengthメソッドを含んだ
クラスを作るだけ

30デフォルトの名無しさん2020/07/05(日) 21:27:04.67ID:M+BkbwUs
>>28
勘違いしてませんが?
Main関数とロジックを同居させるなの意味がわかりませんか?

31デフォルトの名無しさん2020/07/05(日) 21:27:05.17ID:MQ9nuMmc
謙虚になれや
オブジェクト指向とは礼儀作法と心得よ

32デフォルトの名無しさん2020/07/05(日) 21:27:44.35ID:MQ9nuMmc
>>30
はいはいもうえーから

33デフォルトの名無しさん2020/07/05(日) 21:27:45.52ID:Xwol7cCi
>>27
Mainクラス云々については単に誤解してると思うけど
このスレの登場人物じゃあ多分おまいが一番マシな感性持ってそうやなw

34デフォルトの名無しさん2020/07/05(日) 21:28:41.91ID:MQ9nuMmc
>>29
作ってへんやんけ

35デフォルトの名無しさん2020/07/05(日) 21:28:59.67ID:MQ9nuMmc
やりもせずに何抜かしとんねん

36デフォルトの名無しさん2020/07/05(日) 21:29:55.13ID:MQ9nuMmc
ほんま口だけやな

37デフォルトの名無しさん2020/07/05(日) 22:31:17.31ID:cdjjBT1g
あら。続いていたのか。

38デフォルトの名無しさん2020/07/05(日) 22:53:15.98ID:VS9zJ3bZ
このスレの主旨的にはprivateメソッドのテストコードを書きたいんだよね?
書く必要がないって主張は違うよね?

39デフォルトの名無しさん2020/07/05(日) 23:21:59.16ID:MQ9nuMmc
それはそれでありだと思うよ

40デフォルトの名無しさん2020/07/05(日) 23:22:46.55ID:MQ9nuMmc
結局のところ何でもあり
僕は単体テストさえやってないからね

41デフォルトの名無しさん2020/07/05(日) 23:27:01.94ID:cdjjBT1g
スレタイと書いてあることがチグハグで趣旨が解りづらいな。
スレタイに従えば、privateを呼び出したいみたいだが、>>1の発言を見るとprivateの呼び出しは推奨しないように見える。
まぁ、私も推奨しないけど。

という訳で、適当に独り言を語ってみる。

単体テストって、例えば...
Queueという名前のクラスがあって、そのクラスの中に
Enqueue、Dequeue、Peek、Clearメソッドが定義されていたら、それらメソッドを呼び出して、その結果を予想するコード(テストコード)を書いて実行させる方法がオブジェクト指向プログラマーにとって一般的だと思うけど...その際にprivateメソッド(内部実装)をテストコードから呼び出さないといけない理由がわからん。

42デフォルトの名無しさん2020/07/05(日) 23:28:17.41ID:LRfXHt7v
t-wadaさんがどういう人か調べてみたところ、日本が誇るJavascript使いなんだな。
すると、t-wadaさんの立場ではprivateをテストしないというのは全くもって正しいと思う。
privateでやる事はライブラリを呼び出すだけなので、テストするのは無駄。

しかし、他の言語ではアルゴリズムの実装という仕事があり、アルゴリズムの実装をテストしたいという要求は常に存在する。

43デフォルトの名無しさん2020/07/05(日) 23:48:39.22ID:LRfXHt7v
例えば多くのパーサーは公開メンバとしてpush()を持つ。
文字をプッシュする関数だ。
めぼしい公開メンバはこの程度しかない。

しかしその裏に100を超える非公開のメンバがあっても驚かない。
非決定性のパーサはその程度のメンバを持つ。

文字をプッシュする公開メンバ一つで、多くの状態、多くのメンバをテストするのは面倒な話で、何方にせよ非公開のメンバ、非公開の状態変数について知識が無ければテストできない。
だったら内部の状態について一切テストしないか、内部の状態を直接テストするか二択となる。

内部の状態についてはブラックボックスとして扱うべきと述べているのがt-wadaさんだが、それでは実装が非常に困難だ。

44デフォルトの名無しさん2020/07/05(日) 23:55:21.34ID:LRfXHt7v
パーサーの話ついでに、もう一つアイデアを提供しよう。
決定性パーサーでは、還元が行われたとき、外部に影響を及ぼす。
通常この時点で意味動作を行う。
t-wadaさんは、この時に限りテストを行うべきであり、それ以外でテストを行ってはいけないと述べる。

つまり、シフトが行われるときはテストしてはならない。
今どの状態にあるかは外部にかかわりのない事なのでテストとしてはならない。
入力文字として改行を与えるとどの状態に遷移するかテストしてはならない。

これは厳しすぎやしないだろうか?

45デフォルトの名無しさん2020/07/06(月) 00:01:34.67ID:NTI0gQuc
詳細を知ってはならないということは、どの状態を経てその記号が生み出されたのか知ってはならないということであり、これは非常につらい。

46デフォルトの名無しさん2020/07/06(月) 00:03:58.43ID:NTI0gQuc
システム利用者がシステム作者に「詳細を検査しちゃだめじゃないか!」と怒っているように見える。

47デフォルトの名無しさん2020/07/06(月) 00:24:27.58ID:bo8iccWD
>>42
t-wadaはもともとJavaな人

48デフォルトの名無しさん2020/07/06(月) 00:27:13.73ID:NTI0gQuc
クリスマスプレゼントが何かを知るために箱を振って音を聞くよりも、箱を開けて直接見るほうが早い。

49デフォルトの名無しさん2020/07/06(月) 00:29:02.17ID:NTI0gQuc
箱を振って「プレゼントはプリキュア」と観測できたとする。
これは果たしてどの程度もっともらしいだろうか?

50デフォルトの名無しさん2020/07/06(月) 01:18:51.21ID:gvRhXNla
privateなメソッドの動きが仕様書で定義されてたらテストしなくちゃいけないし書いてなかったら書く必要無い
そしてprivateなメソッドの仕様まで定めた仕様書は俺は見たことない

51デフォルトの名無しさん2020/07/06(月) 02:20:25.77ID:T074ZQpk
>>47
うるせーばか。文句を言うために都合の良いデータを調べてきたに決まってるだろ

52デフォルトの名無しさん2020/07/06(月) 07:14:05.86ID:EsDpeV3E
一気に胡散臭くなったな

53デフォルトの名無しさん2020/07/06(月) 07:37:12.27ID:ODctk1XU
>>50
仕様書には普通アクセス修飾子を何にするかなんて書かないからね
設計書にもそんな細かいこと書かないでしょ

54デフォルトの名無しさん2020/07/06(月) 07:38:08.27ID:cDMo9043
書いてない関数を勝手に作るなんて禁止に決まってるだろ
テストのためだけに関数は作らない

55デフォルトの名無しさん2020/07/06(月) 07:59:18.67ID:ODctk1XU
>>54
すごい、そんなガチガチなの銀行系?

56デフォルトの名無しさん2020/07/06(月) 08:00:23.42ID:ODctk1XU
関数を作るのに許可がいるなんてすごいことだからとてもすごいと思いました

57デフォルトの名無しさん2020/07/06(月) 09:07:12.86ID:aZiq8mUC
>>1にはテストとしか書かれていないけど、記事元はユニットテスト(単体テスト)の話だよね?

58デフォルトの名無しさん2020/07/06(月) 10:09:49.30ID:Smcv6rvz
組み込みでの話らしいよここw

59デフォルトの名無しさん2020/07/06(月) 10:19:56.49ID:cDMo9043
>>57
ユニットテスト以外でメソッドのテストなんかするのか?

60デフォルトの名無しさん2020/07/06(月) 12:11:06.79ID:O9yimTr2
>>3
このコード出すやつが混じってるんだろ?
議論無駄やん

61デフォルトの名無しさん2020/07/06(月) 12:27:52.10ID:aZiq8mUC
>>59
自分であたかも他のテストがあるように言っておいて変な話だがだが、しないね。

単体テストで不具合を見つけた後、デバッガを使って更にどこにバグの原因が潜んでいるのか分析することはあるけど、それはもはやテストではなくデバッグだしね。

62デフォルトの名無しさん2020/07/06(月) 12:34:18.82ID:aZiq8mUC
てかさ、タイトルがカプセル化なのに、なんで>>3>>5もテストコード実行場所とテストコード実行場所が同じ階層に記述されているのさ。

63デフォルトの名無しさん2020/07/06(月) 12:35:06.14ID:aZiq8mUC
ミス。テストコード実行場所とテスト対象が同じ階層に書かれているのはなんで?だ。

64デフォルトの名無しさん2020/07/06(月) 14:43:00.46ID:NTI0gQuc
和田理論は穴が多くてお話にならないな。

65デフォルトの名無しさん2020/07/06(月) 14:44:50.89ID:40IRbGG5
では穴のない理論をおなしゃす

66デフォルトの名無しさん2020/07/06(月) 14:51:45.46ID:NTI0gQuc
和田理論に騙された人は抗議したほうが良い。

67デフォルトの名無しさん2020/07/06(月) 14:54:43.27ID:EsDpeV3E
wadaは忘れろ

privateだからテストしなくていいなどという都合のいい法則は存在しない だがprivateだからとテストをしないキチガイは確実に存在するのだ

68デフォルトの名無しさん2020/07/06(月) 15:05:56.82ID:NTI0gQuc
和田理論被害者の会ひつよう。
とてもひつよう。

69デフォルトの名無しさん2020/07/06(月) 15:07:12.95ID:bo8iccWD
一意見を急に”理論”とか”法則”とか言う方が頭どうかしてるよ

t-wadaはTDDをわかりやすく解説することに定評があるだけ
ただいろんな会社からテストのコンサルティングで雇われる程度には有能だから
君たちの意見よりは一般には受け入れられやすい

70デフォルトの名無しさん2020/07/06(月) 15:10:07.70ID:NTI0gQuc
和田理論被害者の会ニューヨーク支部もひつよう。
とてもひつよう。

71デフォルトの名無しさん2020/07/06(月) 15:12:35.36ID:Smcv6rvz
このスレ、脱線が好きだなw

72デフォルトの名無しさん2020/07/06(月) 15:14:01.90ID:NTI0gQuc
前スレで王家秘伝のレシピ教えたのに。
誰も活用しないんだな。

73デフォルトの名無しさん2020/07/06(月) 15:17:52.38ID:NTI0gQuc
俺も活用していないわそういえば。

74デフォルトの名無しさん2020/07/06(月) 15:18:30.87ID:9+hHOd2F
>>61
> 単体テストで不具合を見つけた後、デバッガを使って更にどこにバグの原因が潜んでいるのか分析することはあるけど、それはもはやテストではなくデバッグだしね。

単体テストで不具合を見つけた後にするもの=デバッグ
デバッグの前にする不具合を見るけるもの=テスト

だろ?

テストの後にするデバッグは、テストではなくデバッグだしねって
あんた何言ってるの?

75デフォルトの名無しさん2020/07/06(月) 16:05:37.75ID:n2uckING
オブジェクト指向の話をしよう

彡ミ
↓↓↓
彡 ⌒ ミ
(´・ω・`) 頭皮、毛髪に触れるものは全て検査する

76デフォルトの名無しさん2020/07/06(月) 17:22:23.35ID:aZiq8mUC
>>74
そんな細かいこと気にすんなよ。揚げ足取りめ。
よく単体テストは不具合を見つけるためにやると言われるが、別視点の考え方もあるって話だ。

ここでは些細な話だったな。

77デフォルトの名無しさん2020/07/06(月) 17:32:36.88ID:zkbL7M3i
>>74
> テストの後にするデバッグは、テストではなくデバッグだしねって
> あんた何言ってるの?

テストの後にするデバッグはデバッグでしかないと思いますけど、どこに突っ込みを入れたいのですか?

78デフォルトの名無しさん2020/07/06(月) 18:58:02.99ID:9+hHOd2F
>>77
↓ここにツッコミを入れたい

> それはもはやテストではなくデバッグだしね。

79デフォルトの名無しさん2020/07/06(月) 20:17:44.91ID:pO1U5uVJ
>>60
そうそれ
あれ書く奴とは1byteたりとも意見交換したくないわ

80デフォルトの名無しさん2020/07/06(月) 22:24:42.23ID:djm9krVS
まだプログラミング教室やってんのかw

81デフォルトの名無しさん2020/07/07(火) 11:04:13.93ID:hnvy2tUT
>>78
(テストとデバッグは違う作業だと思うのだが)

82デフォルトの名無しさん2020/07/07(火) 11:33:22.19ID:hnvy2tUT
もしかすると、バグの原因を調査する作業はテストに含まれるかどうかって話かな?

83デフォルトの名無しさん2020/07/07(火) 11:34:20.85ID:zTLocdwC
和田メソッド被害者の会に入れてほしいです。

84デフォルトの名無しさん2020/07/07(火) 11:40:38.80ID:YBf2Aagc
>>81
当たり前だろ?
テストではなくデバッグだしねっていうのが意味わからんって言ってる
テストはテストだろ

85デフォルトの名無しさん2020/07/07(火) 12:01:27.16ID:hnvy2tUT
突っ込みどころねーじゃんw
それなのに喧嘩腰で突っ込んで周囲に突っ込まれただけか。

86デフォルトの名無しさん2020/07/07(火) 12:04:20.99ID:bdixmHft
privateメソッドのチェックもできない奴は出荷すんぞ

87デフォルトの名無しさん2020/07/07(火) 12:25:55.22ID:NlNPNtxk
privateのチェックって具体的にどうやるの?
Queueというクラスをテストするケースを例に教えて。

88デフォルトの名無しさん2020/07/07(火) 12:31:21.40ID:jam8vymb
queue = Queue()
queue.push(17)
asserEqual( queue.length, 1)
a = queue.pop()
assertEqual( a, 17)
assertEqual( quele.length, 0)

だいたいこんなもんだろ。

89デフォルトの名無しさん2020/07/07(火) 12:37:00.92ID:NlNPNtxk
>>88
おお、俺もそんなのイメージしてた。
そんなコードでpublic経由でprivateを呼び、ついでにカバレッジテストとか済ませる感じかな。

...だったらいいのだが、なーんか、このスレの人達の言動を見ていると怪しいんだよな。
88は別に問題ないけど。

90デフォルトの名無しさん2020/07/07(火) 12:56:17.65ID:NlNPNtxk
カバレッジテストをするかどうかは、ケースバイケース。どちらでもいいとして、一番気にしているのは、そもそも>>1の記事主に批判的な人はオブジェクト指向を理解しているのか?という点。
怪しいというのは、そこね。

91デフォルトの名無しさん2020/07/07(火) 13:10:52.54ID:YBf2Aagc
>>85
デバッグはテストじゃなくてデバッグだしねと言われても当たり前としか言えないし、
デバッグの前にやるテストはテストだしねで終わりだろ?

92デフォルトの名無しさん2020/07/07(火) 13:14:04.43ID:zTLocdwC
>>91
言いたいことは何となく理解できる。
「私以外はみんな馬鹿」
ってことだろ?

つまりキミの主な言語はJava。

93デフォルトの名無しさん2020/07/07(火) 13:19:42.71ID:zTLocdwC
どうやら図星だったようですね。

Javaではありがちなんですよ。

94デフォルトの名無しさん2020/07/07(火) 13:28:08.57ID:RJk/Rw+W
>>91
とまぁ、>>92みたいな低能が蔓延るスレで世間の常識は通用しないってことが証明されちゃったわけだ。
立ち去るがいい。

95デフォルトの名無しさん2020/07/07(火) 13:34:52.03ID:YBf2Aagc
>>92
何がいいたいの(笑)
俺を馬鹿にしたいのかな?でも文章がそうなってないな。

96デフォルトの名無しさん2020/07/07(火) 14:34:40.27ID:zTLocdwC
>>95
Java!Java!

97デフォルトの名無しさん2020/07/07(火) 14:48:31.09ID:zTLocdwC
>>95
馬鹿にしてない。
馬鹿に付ける薬はない。

98デフォルトの名無しさん2020/07/07(火) 14:56:56.51ID:zTLocdwC
オブジェクト指向はダメなんじゃないか?というのが前スレの趣旨で、非公開のメンバは何のためにあるの?テストどうするの?という話になった。

それに対する回答が「非公開のメンバはブラックボックスとして扱いテストしてはならない」という和田メソッドが示された。

それに対して「入力に使われる一つのメンバしかもたないパーサ」という実例を挙げ、「文字列を入力され構文木を返すような状態機械のテストが非常に困難」という話が出た。
この場合、内部を観測できないのであれば、すべての入力の組み合わせ(受理できない入力もテストするなら、それは無限である)に対して、すべての取りうる構文木のセットを検査しなければならない。
つまりそれは太陽系よりもはるかに広く、銀河の向こうまでテストするということである。

それに対して「オブジェクト指向を知らない」などと抜けたことを言うので、「Java!」という結論が出された。

99デフォルトの名無しさん2020/07/07(火) 15:04:16.80ID:YBf2Aagc
> それに対する回答が「非公開のメンバはブラックボックスとして扱いテストしてはならない」という和田メソッドが示された。

正確には

・パブリックメソッド経由でテストする
・別クラスのパブリックメソッドとする
・テスト対象の可視性を(やや)上げる
・プライベートのまま、リフレクションでアクセスしてテストを書く

まとめ
繰り返すと、プライベートなメソッドや関数をテストする必要は無いと考えています。
プライベートなメソッドは、実装の詳細であるからです。

100デフォルトの名無しさん2020/07/07(火) 15:05:58.19ID:O+C/kGAG
実装の詳細ならむしろテストが必要だと思うのだけど
なんで詳細だからテストしなくて良いのだろう
t_wada被害者の会に僕も入会させてください

101デフォルトの名無しさん2020/07/07(火) 15:07:05.23ID:zTLocdwC
>>99
公開メンバは文字を入力するpush()のみと示されてるだろ。
複数の文字を入力して構文木を得る、ごくありふれた状態機械の話だよ。

公開メンバは一つしかない。

ほらテストしてみろ。

102デフォルトの名無しさん2020/07/07(火) 15:07:48.37ID:YBf2Aagc
>>98
> それに対して「入力に使われる一つのメンバしかもたないパーサ」という実例を挙げ、「文字列を入力され構文木を返すような状態機械のテストが非常に困難」という話が出た。
> この場合、内部を観測できないのであれば、すべての入力の組み合わせ(受理できない入力もテストするなら、それは無限である)に対して、すべての取りうる構文木のセットを検査しなければならない。

それはパブリックメソッドでも同じこと
内部を観測して、すべての入力の組み合わせをテストしないといけないから

103デフォルトの名無しさん2020/07/07(火) 15:08:26.27ID:YBf2Aagc
>>101
> ほらテストしてみろ。

テストしてもいいが、先にパブリックメソッドの場合の例を書いてくれ
それと同じことをやればいいだけなんだが

104デフォルトの名無しさん2020/07/07(火) 15:10:39.95ID:O+C/kGAG
単体テストっていう言い方がまずいのかも
インターフェーステストとインプリメンテーションテストに分けるのが良い気がします

105デフォルトの名無しさん2020/07/07(火) 15:11:55.03ID:zTLocdwC
言い張るんだったら、ほんとに和田メソッド被害者の会作っちゃうよ?
会員200万人目指しちゃうよ?
いいの?

106デフォルトの名無しさん2020/07/07(火) 15:12:43.32ID:YBf2Aagc
>>105
先にパブリックメソッドの場合に
どうするかを答えてくれないか?

107デフォルトの名無しさん2020/07/07(火) 15:12:43.34ID:zTLocdwC
>>105
言いたいことわかってくれるあなたは、PythonとかC#とかC++ですね?

108デフォルトの名無しさん2020/07/07(火) 15:13:07.34ID:YBf2Aagc
自作自演w

105 名前:デフォルトの名無しさん[] 投稿日:2020/07/07(火) 15:11:55.03 ID:zTLocdwC [8/9]
言い張るんだったら、ほんとに和田メソッド被害者の会作っちゃうよ?
会員200万人目指しちゃうよ?
いいの?


107 名前:デフォルトの名無しさん[] 投稿日:2020/07/07(火) 15:12:43.34 ID:zTLocdwC [9/9]
>>105
言いたいことわかってくれるあなたは、PythonとかC#とかC++ですね?

109デフォルトの名無しさん2020/07/07(火) 15:13:54.75ID:O+C/kGAG
王家の秘伝メソッド普及委員会を立ち上げよう

110デフォルトの名無しさん2020/07/07(火) 15:14:08.44ID:zTLocdwC
>>108
>>104 に言いたかっただけだろ。
そのくらいわかれ。

111デフォルトの名無しさん2020/07/07(火) 15:15:25.23ID:YBf2Aagc
>>110
そんなどうでもいいものばっかりにレスしてないで、
先にパブリックメソッドの場合に
どうするかを答えてくれないか?

112デフォルトの名無しさん2020/07/07(火) 15:15:52.28ID:zTLocdwC
Javaは色々研究して提唱してえらいなあと思う部分もあるんだけど、すぐに宗教化してしまうからな。
そこがJava!なんだよな。

113デフォルトの名無しさん2020/07/07(火) 15:17:07.58ID:YBf2Aagc
どうも都合が悪かったようだな
俺のレスに答えられずひたすら関係ない話を始めた

114デフォルトの名無しさん2020/07/07(火) 15:18:08.09ID:pnFsfYkB
>>108
この自作自演は恥ずかしいなww

115デフォルトの名無しさん2020/07/07(火) 15:20:13.83ID:zTLocdwC
でも俺が設立するからには、普通じゃダメなんだよ。
俺がやるからには、和田メソッド被害者の会長が和田さん。
ここまでやってこそ本物だと思うんだよね。
まず、和田さんを説き伏せなきゃ。

116デフォルトの名無しさん2020/07/07(火) 15:21:24.14ID:YBf2Aagc
いいだしっぺが説き伏せるそうです。
実際に行動を起こせるか見てみましょう

117デフォルトの名無しさん2020/07/07(火) 15:22:05.58ID:zTLocdwC
和田さん頼むわ。
見てるんやろ?

118デフォルトの名無しさん2020/07/07(火) 15:22:43.01ID:YBf2Aagc
いきなり他人だよりです(笑)
自分から知らせに行く勇気もないようですね

119デフォルトの名無しさん2020/07/07(火) 15:24:58.29ID:zTLocdwC
>>104 をベースに考察していけば良いのでは。

120デフォルトの名無しさん2020/07/07(火) 15:26:46.74ID:YBf2Aagc
ではまずいいだしっぺから
なぜパブリックメソッドにすると
すべての入力の組み合わせをテストしなくてよくなるのか?
C1カバレッジって言葉知ってますかね?

121デフォルトの名無しさん2020/07/07(火) 15:27:35.56ID:YBf2Aagc
訂正、すべての入力の組み合わせは2カバレッジだった

122デフォルトの名無しさん2020/07/07(火) 15:27:50.82ID:YBf2Aagc
C2カバレッジだった

123デフォルトの名無しさん2020/07/07(火) 15:39:26.39ID:K/dtFkkl
>>87
一般的にはQueueはprivateのメソッドも単純なロジックしか持たないから
public経由のテストで十分な場合が多いかもしれないけど
それがあらゆる状況に当てはまるわけではない

例えばgrowableなring bufferでqueueを実装するとして
バッファを拡大させるロジックに独自の最適化をいろいろと施してるような場合、
各種分岐に応じたメモリコピーの方法だったり、それに応じたメモリの初期化状態の確認だったり
privateなhead/tailポインタへのアクセスだったり、
public経由だけでは確認できないテストをしたほうがいい場合がある

124デフォルトの名無しさん2020/07/07(火) 15:42:28.40ID:YBf2Aagc
>>123
訂正

一般的にはQueueはprivateのメソッドも単純なロジックしか持たないから
public経由のテストで十分な場合が多いかもしれないけど
それがあらゆる状況に当てはまるわけではない

もしpublic経由のテストで不十分な場合、それはメソッドの責務が大きいと考えられる
リファクタリングして複数のクラスに分離するのが正しい対応
そうすれば自然publicメソッドとなりテストが可能になる

125デフォルトの名無しさん2020/07/07(火) 15:53:43.14ID:zTLocdwC
キミも和田メソッドの被害者なんだよ。
可哀そうに。
和田さん本人だとしても、被害者であることに変わりはないんだよ。

126デフォルトの名無しさん2020/07/07(火) 15:59:04.01ID:pnFsfYkB
あれ、説き伏せるんじゃないの?

127デフォルトの名無しさん2020/07/07(火) 16:00:23.93ID:zTLocdwC
もう和田さんは改心してこっちの味方だから。

128デフォルトの名無しさん2020/07/07(火) 16:09:18.16ID:bdixmHft
ごちゃごちゃうるさい
privateメソッドのテストやれよ
キチガイ

129デフォルトの名無しさん2020/07/07(火) 16:11:54.35ID:cp13iBTj
虚言癖まであるのかな

130デフォルトの名無しさん2020/07/07(火) 16:15:15.28ID:zTLocdwC
和田メソッド被害者の会、会員募集中。
和田さんも入会して良いんだヨ。

131デフォルトの名無しさん2020/07/07(火) 17:39:48.25ID:O+C/kGAG
>>123
君は信頼できる
実装をよくわかってる人だ

132デフォルトの名無しさん2020/07/07(火) 17:43:14.92ID:jam8vymb
可視性狂信者ってのはどうしようもないね。テストさえ犠牲にし始める。

133942020/07/07(火) 17:55:40.01ID:k9dX6gDH
>>95
今さらだけど、前スレのタイトル(今より酷い)から察せると思うが、あなたの想像を越えるお馬鹿さんがいるから、常識を持つあなたはここから逃げた方がいいよと、お前どっちの味方だよ風に言いたかった。

134デフォルトの名無しさん2020/07/07(火) 18:13:36.60ID:k9dX6gDH
って、何でもないです。
(アンカが自分に向いていたと勘違いしてたとか言えねぇ)

135デフォルトの名無しさん2020/07/07(火) 18:55:11.35ID:B0OaeN7n
>>130
むしろ、こんな気違いに絡まれる和田さんカワイソ

136デフォルトの名無しさん2020/07/07(火) 19:10:49.50ID:BPFgnJg7
結局実際に絡む度胸もないから無害やけどなw

137デフォルトの名無しさん2020/07/07(火) 19:21:49.86ID:zm6NAQZG
>>128
君の言うテストって何?
しかも、君は>>87の質問に答えてないよね?
具体例示してよ。

138デフォルトの名無しさん2020/07/07(火) 19:26:55.85ID:bdixmHft
>>137
は?いいからprivateメソッドのテストやれよ

139デフォルトの名無しさん2020/07/07(火) 19:27:35.46ID:zm6NAQZG
オブジェクト指向を理解している人間の言うprivateをテストせよ/テストするべきではない と、 オブジェクト指向を理解していない人間のprivateをテストせよ/テストするべきでない は論争のレベルが全然違う。
大学生同士の論争と小学生同士の喧嘩くらい違う。

お前はどっちだ?>>138

140デフォルトの名無しさん2020/07/07(火) 19:28:44.77ID:bdixmHft
>>139
ごちゃごちゃうるさい
privateメソッドのテストをやれ

141デフォルトの名無しさん2020/07/07(火) 19:32:38.84ID:bdixmHft
ここで話を整理するけど

privateメソッドだからテストしないとか言ってるやつはキチガイ
早く死んでね

142デフォルトの名無しさん2020/07/07(火) 19:33:11.12ID:zm6NAQZG
具体例もなく、privateのテストやれと言われてもできねーよ、バーカ。

143デフォルトの名無しさん2020/07/07(火) 19:35:50.42ID:bdixmHft
うんうん

わかってない人もいるみたいだからもう一度ここで仕切り直しさせてほしい



privateメソッドだからテストしないとか言ってるやつはキチガイ
早く死んでね



わかったかな?

144デフォルトの名無しさん2020/07/07(火) 19:36:30.14ID:OvditBd9
ほら、>>143は巣に帰りなさい。

【隔離】オブジェクト指向アンチスレ
http://2chb.net/r/tech/1593926155/

145デフォルトの名無しさん2020/07/07(火) 19:37:40.45ID:rZMsiuSb
頭皮に触れるものは全て検査する

彡ミ
↓↓↓
彡 ⌒ ミ
(´・ω・`) 使ってるシャンプー、肌に合ってるかい?

146デフォルトの名無しさん2020/07/07(火) 19:44:10.79ID:rZMsiuSb
[ケハエール]


彡 ⌒ ミ
(´・ω・`) 確認もせず使うのは馬鹿だ

147デフォルトの名無しさん2020/07/07(火) 22:01:24.32ID:YBf2Aagc
>>143
> privateメソッドだからテストしないとか言ってるやつはキチガイ
だれそれ?

privateメソッドはpublicメソッド経由でテストすると
言ってる人しかいないけど?

148デフォルトの名無しさん2020/07/07(火) 22:08:08.37ID:O+C/kGAG
>>3の下痢便コード書いた人ですよね?

149デフォルトの名無しさん2020/07/07(火) 22:11:43.28ID:bdixmHft
>>147
それテストできてねーからw
publicから t=0のときだけprivateの処理が欲しかったとするじゃん?
そのままじゃpublicは仕様でt=0のときしかそのprivateメソッドを呼ばないんだから
そのpublicからしかテストしないんじゃt≠0のときのテストできねーじゃん
やんねーのかよ?
ある時改修で別のpublicメソッドからt=3のときにprivateメソッドを呼ぶことになったらt=0しかテストやってなかったら
普通は怒り狂うもんだよ
っていうか絶対ブッ殺す

150デフォルトの名無しさん2020/07/07(火) 22:27:58.06ID:YBf2Aagc
>>149

> そのままじゃpublicは仕様でt=0のときしかそのprivateメソッドを呼ばないんだから

つまり、publicがt=0のときprivateメソッドを呼ぶんですよね?
publicがt=0のテストをすれば、privateのテストしてるじゃないですかw

151デフォルトの名無しさん2020/07/07(火) 22:30:06.58ID:YBf2Aagc
> ある時改修で別のpublicメソッドからt=3のときにprivateメソッドを呼ぶことになったら
> t=0しかテストやってなかったら

仕様が変わったのならt=3のときのテストを追加しましょう

152デフォルトの名無しさん2020/07/07(火) 22:34:14.99ID:YBf2Aagc
>>149はホント意味不明だな

最初の仕様・・・t=0のときしかprivateメソッドの処理をしない
t=3のときは?→「privateメソッドの処理をしない」場合の結果が正しい

改修・・・t=3のときにprivateメソッドの処理をすることになった
「privateメソッドの処理をした」場合の結果が以前と異なるという仕様になった
では新しい仕様のテストを書きましょう

これだけなんだがなぁ
前と正しい答えが違うのに、テストを修正しないの?

153デフォルトの名無しさん2020/07/07(火) 22:49:42.87ID:bdixmHft
>>151
おかしくない?
privateメソッドの仕様は変わってないよ

お前はガラクタをこさえたから説明のできない行動を取らなければならない

154デフォルトの名無しさん2020/07/07(火) 22:52:36.96ID:bdixmHft
設計書かコメントに

このメソッドはt=0のときしかテストしていません!

って書いてあるの?
お前のソースって
悪いけど見たことねーや
滅茶苦茶バカだしもういいかな?
レスしなくて

155デフォルトの名無しさん2020/07/07(火) 22:54:46.63ID:YBf2Aagc
>>153
だから変わったpublicメソッドをテストしろよ
変わってないならprivateメソッドに何の問題もないだろ
それとも何か?お前すべての取りうる値でテストしろと言ってんのか?


この関数は数値を二倍してくれる関数である。
今まで4を入れてこの関数を呼び出していた。

今度5を入れるようになったから5を入れた場合はどうなるかテストする必要がある
今度は6を、7を、8を・・・って新しい引数で呼び出すために
そのテストが必要なんか?ああん?

156デフォルトの名無しさん2020/07/07(火) 22:56:07.20ID:YBf2Aagc
>>154
> このメソッドはt=0のときしかテストしていません!

お前は t=全ての整数 でテストしろっていってるってことでいい?

157デフォルトの名無しさん2020/07/07(火) 23:00:58.28ID:bdixmHft
は?最小-1、最小、中間、最大、最大+1通すだろフツー

158デフォルトの名無しさん2020/07/07(火) 23:02:33.64ID:bdixmHft
だが、お前のやり方ではどうやっても通すことはできないんだよ
こんな簡単なテストすら不可能
早く死ねよ
これがお前の限界なんだよ

159デフォルトの名無しさん2020/07/07(火) 23:06:04.37ID:bdixmHft
っていうかここまで自分の間違いを認めない意味はなんかあるの?
これぜってー仕事でお前の主張が通る現場ねーぞガチで
メソッドにt=0のときしかテストしてませんって書いてあるもの納品するか?
ナメてんじゃねーよ

160デフォルトの名無しさん2020/07/07(火) 23:36:58.56ID:YBf2Aagc
>>157
> は?最小-1、最小、中間、最大、最大+1通すだろフツー

・t=3のどこが、最小-1、最小、中間、最大、最大+1なんだよw

「今回」新しく仕様が変わって、t=3 などというものが登場したんだろ
なら「今回」テストを追加するだけの話だろ

それとも何か? t=3がいままでprivateを呼ばなかったのに
t=3のテストをお前はするんか?どういった理由で?

161デフォルトの名無しさん2020/07/07(火) 23:47:24.20ID:zm6NAQZG
>>159

> っていうかここまで自分の間違いを認めない意味はなんかあるの?

お前のことだろ。

> これぜってー仕事でお前の主張が通る現場ねーぞガチで

お前のことだろ。

162デフォルトの名無しさん2020/07/07(火) 23:56:35.16ID:D1qF8R0D
bdixmHftはQueueという言葉とオブジェクト指向という言葉が理解できずに発狂した説

163デフォルトの名無しさん2020/07/08(水) 00:21:47.63ID:SznGehK7
詳細に関する知識が無ければ検査できないなら、公開メンバを介して検査するのと、非公開メンバを直接検査するのは同じことですよ。

これが理解できないなら、もはや議論の意味が無いでしょう。

そもそも自身が推奨する和田メソッドさえ理解できていないって事ですから。

164デフォルトの名無しさん2020/07/08(水) 00:28:23.66ID:SznGehK7
アンクルボブの理論に対する賛否両論から議論を始めるべきなのかもしれない。

165デフォルトの名無しさん2020/07/08(水) 00:29:51.46ID:kqVG+rMe
>>149

そもそも、public経由のテストで網羅できないレベルのprivateメソッドなんてクラス内部に定義するなゴミ。
別クラスに分けろ。

166デフォルトの名無しさん2020/07/08(水) 00:35:35.13ID:SznGehK7
和田さんはアンクルボブを理論のベースにしています。
和田理論否定派はアンクルボブ理論を理解したうえで和田理論に異議を述べています。
和田理論信仰者は、そもそもアンクルボブって何?状態です。

だから議論が成り立っていないのです。

167デフォルトの名無しさん2020/07/08(水) 00:42:30.98ID:UPP9MPHB
(和田メソッドって何だ?)

168デフォルトの名無しさん2020/07/08(水) 00:52:01.29ID:SznGehK7
詳細に関する知識を持ってはならないというのが和田理論の根幹です。

private、publicという字面にこだわるのは単なる信仰心にすぎません。
神を信じますか?ハイ信じます。
神を見ましたか?ハイ見ました。
こういうことです。

169デフォルトの名無しさん2020/07/08(水) 00:56:34.00ID:SznGehK7
和田理論を素直に受け入れられるのは、プログラミングとはAPIを呼び出すことであり、決してアルゴリズムを実装することではないからですよ。

つまり、システム利用者がシステム作者に対して小言を言うような状態です。
詳細を検査したら駄目じゃないか!詳細は呼び出せればいいんだよ!

170デフォルトの名無しさん2020/07/08(水) 01:27:45.49ID:/rdq0ZOx
>>167
「アンチ和田」がかってに命名したもの(笑)

171デフォルトの名無しさん2020/07/08(水) 01:28:51.37ID:/rdq0ZOx
「和田理論」も同じな。「アンチ和田」はなにか理由があって
命名しているんだろう。常識的なことを名前をつけることで
特別な方法だと錯覚させる手かな?

172デフォルトの名無しさん2020/07/08(水) 04:10:02.60ID:6ZEX1zcL
>>166
ロバート・C ・マーチンのこと?

173デフォルトの名無しさん2020/07/08(水) 04:11:04.99ID:6ZEX1zcL
>>169
なるほどな

174デフォルトの名無しさん2020/07/08(水) 06:13:27.58ID:AplvQTCJ
>>172
違います。

>>173
わかってない人になるほどと言われても困ります。

175デフォルトの名無しさん2020/07/08(水) 08:26:03.95ID:6ZEX1zcL
>>174
違いません、困りません

176デフォルトの名無しさん2020/07/08(水) 08:29:40.77ID:6ZEX1zcL
アンクルボブをロバートと読み替えても通じますし
僕が納得したところでお前は何も困りません

177デフォルトの名無しさん2020/07/08(水) 08:35:30.95ID:6ZEX1zcL
>>159
相手は >>3 の下痢便コード書いた人だよ
まともなプログラム書けない人だから相手にするだけ無駄だよ

178デフォルトの名無しさん2020/07/08(水) 09:02:50.79ID:SznGehK7
>>172
ハイそうです。

179デフォルトの名無しさん2020/07/08(水) 12:16:39.34ID:hmU+YLWt
関数が取りうる値で全てでテストしろと言ってるアホがいるスレはここですか?

今回78という値で関数を呼び出すことになった
78という値を与えた時、ちゃんと動くかテストしているかね?

だってさ(笑)

180デフォルトの名無しさん2020/07/08(水) 12:42:10.97ID:PWwZYnOX
privateメソッドのテストを具体的にどうやるのか未だに分からん。

そもそも、public経由のメソッド呼び出しで網羅できない巨大privateメソッドの正しい動作なんて定義できるの?

181デフォルトの名無しさん2020/07/08(水) 12:54:49.19ID:ODFOiaSP
巨大なメソッド自体が悪じゃね

あとテストってinoutを確認するんじゃないの?
outいっぱいしてたらもうそれ完全害悪じゃね

182デフォルトの名無しさん2020/07/08(水) 14:27:45.18ID:ZL+NZ9CQ
ステートメントの入力により無限通りの構文木が出力されるパーサ?
なんだそれ?

183デフォルトの名無しさん2020/07/08(水) 17:57:24.33ID:pS2ORJtj
>>179
最小、最大、中間値ぐらいしか言ってないのにそうやって曲解しないと負けちゃいそうなの?

184デフォルトの名無しさん2020/07/08(水) 18:33:36.38ID:IWyzFdDn
そもそも、privateメソッドを定義すること事態、滅多にないよ。
というか、自分のソース見たら無かった。

185デフォルトの名無しさん2020/07/08(水) 18:42:33.47ID:IWyzFdDn
このスレの過去の発言を見ると誤解を招きそうだから補足するけど、別に内部処理をpublicにしたからprivateは無いという意味じゃないからね?
元からpublicメソッドとprivate変数しかない。

186デフォルトの名無しさん2020/07/08(水) 20:52:09.28ID:Sbr5rKl2
>>181
巨大なメソッドをprivateメソッドに分割しても、その分割したメソッドを個別にテストできなけりゃ
分割してないのと同じじゃね?

187デフォルトの名無しさん2020/07/08(水) 20:55:55.79ID:hmU+YLWt
>>183
↓って書いてますが? 3と78でなにか違いがあるんですか?

> ある時改修で別のpublicメソッドからt=3のときにprivateメソッドを呼ぶことになったら
> t=0しかテストやってなかったら

188デフォルトの名無しさん2020/07/08(水) 20:59:13.73ID:hmU+YLWt
>>186
そういうこと。巨大なメソッドがあったらそれを
一つのメソッドと、そこから使われるユーティリティメソッドに分割する
ユーティリティメソッドはできる限り汎用的なインターフェスにする(たとえ一箇所でしか使われていなくても)
ユーティリティメソッドはそれ単体でテストする
そうすれば巨大なメソッドのコード量が減る

189デフォルトの名無しさん2020/07/08(水) 21:15:04.90ID:s5mehW61
>>187
そここだわってるのお前だけじゃん
最小、最大、中間値のテストやった?
って聞かれてるときに3でも78でも駄目なのはバカでもわかるだろ?w

190デフォルトの名無しさん2020/07/08(水) 21:19:38.42ID:hmU+YLWt
>>189
あのさぁ、ごまかしてないでちゃんと書こうよ?

最小、最大、中間値のテストやってれば
最小、最大、中間値ではない3のテストなんて不要なんだよって
ちゃんといわないと、あのバカには伝わらないよ?

191デフォルトの名無しさん2020/07/08(水) 23:59:05.09ID:hEQaHqpN
最小、最大、中間値って聞いたことがないけど
どこかの分野で一般的に使われてるもの?

境界値分析なら
境界値と境界値の内側と外側の3値か
境界値と境界値の外側の2値かどっちかが一般的だと思う

192デフォルトの名無しさん2020/07/09(木) 00:14:35.43ID:qGUjUa51
>>191
3と78がそれに当たると申すか?

193デフォルトの名無しさん2020/07/09(木) 00:16:52.90ID:tq6y70T3
俺もそう思ってたけど、そもそもスレタイともずれてきてるよねっていう

194デフォルトの名無しさん2020/07/09(木) 00:21:36.93ID:Ai/0yITE
3と78の伏線が
今、回収されたのか?

195デフォルトの名無しさん2020/07/10(金) 12:24:37.85ID:sSLzYC6I
詳細を知ってはならないということは、詳細の知識、つまり境界を知ってはならないということ。

「彼らはオブジェクト指向を全く知らない可哀そうな人ではないか?Javaを学ぶべきだ!」などと言う前に、原典に当たろう。

196デフォルトの名無しさん2020/07/10(金) 12:25:53.05ID:A+QDXq04
>>195
オブジェクト指向と関係ない話なら、関係ないって書いとけよ

197デフォルトの名無しさん2020/07/10(金) 12:54:55.71ID:1UxRpBTq
zTLocdwC以外、Javaなんて誰も言ってないけど?何が言いたいんだ?

スレタイはカプセル化って書いてあるしOOPは理解している前提でしょ?
まぁ、明らかにOOPを理解していない人が発狂していたけど。

198デフォルトの名無しさん2020/07/10(金) 14:04:44.56ID:sSLzYC6I
いや、おそらくわかっていないだろう。

199デフォルトの名無しさん2020/07/10(金) 14:09:26.25ID:sSLzYC6I
オブジェクト指向のすばらしさを語っている人が、一番オブジェクト指向を知らない。
ゆえに議論が成り立たないという状態ではないだろか。

200デフォルトの名無しさん2020/07/10(金) 14:12:09.99ID:sSLzYC6I
>>196
隠ぺいとオブジェクト指向は直行する概念ではある。
とはいえ、事実上同時に用いられるので、関係ないとは言えないのではないか。

201デフォルトの名無しさん2020/07/10(金) 15:02:20.85ID:zQa5K81u
>>200
そもそも、このスレで誰もオブジェクト指向の素晴らしさなんて語っていない。

さっきから誰に対して言ってるんだ...。

202デフォルトの名無しさん2020/07/10(金) 15:16:19.83ID:TbXdOMZ+
ポエってるやつがいるな

203デフォルトの名無しさん2020/07/10(金) 16:07:13.59ID:sSLzYC6I
和田メソッドを称賛してる人たちに決まってるだろ。

204デフォルトの名無しさん2020/07/10(金) 16:35:36.39ID:zQa5K81u
和田メソッドって何?

205デフォルトの名無しさん2020/07/10(金) 17:14:49.72ID:sSLzYC6I
>>1 に書いてあるだろ。

206デフォルトの名無しさん2020/07/10(金) 17:42:15.92ID:A+QDXq04
>>1に書いてあるのはただの常識で
和田メソッドなんて特別な名前じゃないよ

207デフォルトの名無しさん2020/07/10(金) 20:12:23.39ID:FovnwiSG
常識を疑え、それって和田メソッドじゃないかって

208デフォルトの名無しさん2020/07/10(金) 20:49:58.98ID:zQa5K81u
常識じゃん。むしろ、常識を疑うその心を疑え。それって経験不足では?

まぁ、強いて言うのなら、リフレクションを用いてテストは、許してはならない反則行為だと思うがな。
特に、カバレッジテストとかする場合は。

209デフォルトの名無しさん2020/07/10(金) 21:00:54.86ID:zQa5K81u
ただ、記事を書いた和田さん?も、記事を読むとその危険性を理解しているみたいだから対立する気はないよ。
黒魔術と言ってるし。

なんで黒魔術なんでしょうねぇ(すっとぼけ)

210デフォルトの名無しさん2020/07/10(金) 21:09:49.17ID:HmvrAlYz
そりゃC++への嫉妬だろ
C++はそう呼ばれるのに、Javaは何故かそうは呼ばれない、それは何故か?
Javaに欠けているものとは一体……?!

211デフォルトの名無しさん2020/07/10(金) 21:30:17.43ID:LiH0PaR7
黒魔術って言われ方を誉め言葉だと思ってる馬鹿ってほんとにいるんだな。。

212デフォルトの名無しさん2020/07/10(金) 21:36:39.85ID:pLXOeUja
オブジェクトが隠蔽・カプセル化するものだからといってホワイトボックステストまで否定しちゃうのは変な話。

213デフォルトの名無しさん2020/07/10(金) 21:51:04.37ID:zQa5K81u
ホワイトボックステストを否定する気はないけど...例えば
>>88のコードを借りるけど

> queue = Queue()
> queue.push(17)
> asserEqual( queue.length, 1)
> a = queue.pop()
> assertEqual( a, 17)
> assertEqual( quele.length, 0)

こんなノリでprivateだったメソッドをpublicにしたり、リフレクションを使って呼び出すとする。

queue.内部実装()

...で、これでカバレッジテストに合格しちゃったらどうするの?

Queueというクラスはテストに合格したと見なすの?
テストってテスト項目に合否判定を出す作業だと思うのだが、内部実装の呼び出しで合否判定を変えるなんてチートは駄目だと思う。

そもそも、privateメソッドを定義するケース自体、珍しいから、経験則に基づかない発言でもあるが...。

214デフォルトの名無しさん2020/07/10(金) 21:56:59.04ID:FovnwiSG
和田メソッドは非常識

215デフォルトの名無しさん2020/07/10(金) 22:02:19.60ID:FovnwiSG
和田さんはQueueを実装したことない素人

216デフォルトの名無しさん2020/07/10(金) 22:04:28.86ID:zQa5K81u
あー...うん、俺の言い方が悪かったかも。
privateメソッドをテストするというレアケースだから許してくれ。
常識が無い以上、もっと正確に細かく伝えるべきだったな。

ただ、俺の主張(リフレクションは反則
行為)の弱い点を言うと、OOPやDDDの概念を無視した設計には、こちらの主張は当てはまらない。
そう思うと、和田さんのリフレクションをギリギリ許容(?)するような記事の書き方も否定はできん。

なんだかんだで、彼の記事は自分が記事を書くよりは無難にまとめられているとは思う。
まぁ、記事を書いたことないけど。

217デフォルトの名無しさん2020/07/10(金) 22:09:19.05ID:pPoV7F8C
ユーザーが直接public methodを使うわけじゃなければ
public methodだって実装の詳細

integration test経由で
必要なpublic methodはテストできるんだから
個別にすべてのpublic methodをテストする必要なんてない

というのと似たようなもの
それでいい場合もあればそうじゃない場合もあるというだけ

218デフォルトの名無しさん2020/07/10(金) 22:23:15.71ID:FovnwiSG
まあね、処理の複雑さによるのだろうね
hello world程度ならテストさえ必要ないだろうし

219デフォルトの名無しさん2020/07/10(金) 22:31:36.66ID:pLXOeUja
>>213
どうするの?っていうそこの何が問題なのかわからん。
必要以上の詳細をテストしてしまうことによってテストが壊れやすくなるという
一般的な話以上のものではないように思うが。

220デフォルトの名無しさん2020/07/10(金) 22:38:32.51ID:d7aQvYi7
そこで、テスト駆動開発ですよ。
最初にテストケースを定義してそれをパスする
コードを書けばpublicだのprivateだの議論は不要

だれかこの開発方法やってる?

221デフォルトの名無しさん2020/07/10(金) 22:54:55.64ID:FovnwiSG
>>220
privateだとテストケース書けないじゃん

222デフォルトの名無しさん2020/07/10(金) 23:26:01.49ID:zQa5K81u
>>219
不合格になるはずのテストに合格してしまうのが問題なんだよ。

>>220
テスト駆動開発は社内でも聞いたことがあるけど、実践はしてない。
まぁ、自分自身、詳細は知らない。後で調べるか。

223デフォルトの名無しさん2020/07/11(土) 00:18:29.78ID:E2OZ8LYK
>>213
> ...で、これでカバレッジテストに合格しちゃったらどうするの?

テストはテストコードを見ないで
OKってでたからOKだ
ってやるもんじゃないよ


テストコードはレビューするものだ
通ったからOKじゃなくて、通るのは当たり前で
テストコードを見て正しくテストされてることを確認する

テスト結果のOKが「エビデンス」なのではなくテストコードが「エビデンス」
動作してることを証明するスクリーンショット(笑)と同じもの
「エビデンス」は見て確認しなければいけない

224デフォルトの名無しさん2020/07/11(土) 00:21:18.34ID:E2OZ8LYK
>>221
テストケースがあるもの=publicメソッドで
privateは中で必要に応じて作るもの
メソッドにしてもいいしメソッドにしなくてもいい

テストケース書けないなら関数にせずにそのまま埋め込めよ
publicメソッドのテストケースが問題ないなら
中の詳細なテストなんかいらんだろ
メソッドにしてないかもしれないし

225デフォルトの名無しさん2020/07/11(土) 00:34:45.26ID:0BF0aQZE
何回繰り返すのこの流れww

226デフォルトの名無しさん2020/07/11(土) 00:40:55.17ID:JFnadz6+
何度でもだ!

227デフォルトの名無しさん2020/07/11(土) 00:42:45.65ID:JFnadz6+
>>224
テストケースが書けないってだけでインライン展開するんすか?
構造化プログラミングを愚弄する狼藉っすよ
遠山の金さんの桜吹雪を拝むことになりますよ

228デフォルトの名無しさん2020/07/11(土) 00:43:07.74ID:JFnadz6+
遠山の和田さん

229デフォルトの名無しさん2020/07/11(土) 00:45:42.66ID:JFnadz6+
privateではなくてパッケージプライベートにした方がええのかもわからんね

230デフォルトの名無しさん2020/07/11(土) 00:53:34.50ID:JFnadz6+
それで破綻するならパッケージの設計がよろしくないということで

231デフォルトの名無しさん2020/07/11(土) 01:01:26.38ID:E2OZ8LYK
>>227
テストケースが書けるならばpublicにすればいいだろ?
テストケースがある=仕様が明確になってる証拠

232デフォルトの名無しさん2020/07/11(土) 01:06:55.98ID:E2OZ8LYK
なんでテストケースが作れるのに、publicにしないのかわからん

233デフォルトの名無しさん2020/07/11(土) 01:42:00.39ID:H19stfAl

234デフォルトの名無しさん2020/07/11(土) 02:18:29.03ID:wIsoNFzM
privateでかっこいいメソッドなんだろうがよ!

いや、俺実はpublic staticしか作らんけど

235デフォルトの名無しさん2020/07/11(土) 02:41:27.63ID:P8l8Ig/I
>>222
正直、開発自体をテスト工藤開発で終えるのはキツいと思うけど、
コーディング→動作確認→デバッグ→リファクタリングの
プログラマー個人の短いサイクルでのトライ&エラーには結構使えるんじゃないかと思う。

カバレッジ100%のテストケースは作る工数とメンテが大変だからそこまでする必要はないと思うけど、
そこそこのカバレッジでプログラマーが個人で高速に開発を回せるのは強い。

カバレッジ100%目指すのは単体テストの時だけで十分

236デフォルトの名無しさん2020/07/11(土) 02:42:42.87ID:E2OZ8LYK
>>235
せやかて

237デフォルトの名無しさん2020/07/11(土) 06:05:52.59ID:KCR4lRFo
t-wada氏の推奨する和田メソッド。

238デフォルトの名無しさん2020/07/11(土) 06:15:18.08ID:KCR4lRFo
和田メソッドによると「非公開メンバをテストすると品質が下がるので絶対するな!」

239デフォルトの名無しさん2020/07/11(土) 07:08:50.24ID:DdDKJrYh
>>238
それどこに書いてあるの?

240デフォルトの名無しさん2020/07/11(土) 07:51:10.03ID:KCR4lRFo
意識が高くなりすぎて幽体離脱した感のある和田メソッドをよろしく!

241デフォルトの名無しさん2020/07/11(土) 07:55:47.65ID:Cl4N6Aux
>>22
いや、その「不合格になるはず」のところがわからん。
呼べないはずの内部実装が呼べちゃったってこと?

242デフォルトの名無しさん2020/07/11(土) 09:06:32.32ID:JaL6gziv
>>241
合否判定が変わる例ってこんな感じじゃない?
不当に不合格になる例

queue = Queue()
queue.push(17)
asserEqual( queue.length, 1)
a = queue.pop()

queue.内部実装()

assertEqual( a, 17) ←不合格
assertEqual( quele.length, 0)

※ユーザーが呼べるメソッドを呼んだら、なんか破綻したケース

あるいは網羅テストをやってて、不当に合格する例
for(i = 0 ; i<127;i++){
queue.内部実装(i)
}

内部処理{
switch(条件)
以下略
}

条件分岐を全て網羅したから合格。
はおかしい。
queue.pushやpopの呼び出しで合格できなかった網羅テストを内部実装を直接呼び出して合格って変な話。

という意味では?

243デフォルトの名無しさん2020/07/11(土) 09:23:48.86ID:wIsoNFzM
>>242
でもカバレッジって落ちないぜ以上の意味を取るのって無理じゃね?

244デフォルトの名無しさん2020/07/11(土) 09:26:28.69ID:Cl4N6Aux
>>242
いや、ますますわからん。
そのタイミングで内部実装()呼んでもaの値は変わらんと思うが?

pop()の前に呼ぶんだとしたらなんでそんなテストを書くんだという話になるし。
異なる操作をしたならassert条件が変わるのは当たり前。

245デフォルトの名無しさん2020/07/11(土) 09:35:57.08ID:JaL6gziv
>>244
前者は私のミス

>>243
ごめん、カバレッジやったことないから間違っていたら謝る

うーん、この解釈を間違えた感

246デフォルトの名無しさん2020/07/11(土) 09:55:21.63ID:fJlL8BSP
>>242
まずテストの考え方が違うんだよ。

全ての組み合わせをテストする完全な網羅テストは時間的に不可能
その他のテストも数によっては現実的に不可能となることが多い
通常カバレッジ100%というのは命令網羅テストにすぎない
だが命令網羅テストをやってれば完璧かと言うかそうではない

じゃあどれをやればいいんだよ!?と思うかもしれないが、どれをやるかじゃない
何をやれば自分が作ったものが正しく動くと自信が持てるかなんだよ
現実的に実現可能であるというルールを加えれば、完璧なテストなんてできやしない。

内部実装を直接呼び出して合格したとしても、
それで正しく動くと自信が持てるなら、それで全然かまわないんだよ。
ただしテストする以上、内部実装の仕様を明確にしなきゃテストのレビューはできなくなる。
内部実装の仕様が明確になったならpublicにして問題ない。

おまけだが、pubicメソッドのテストでもprivateメソッドのテストでも
カバレッジを計測するなら、それはホワイトボックステストだからな
なんか間違ってる人がいるようだから

247デフォルトの名無しさん2020/07/11(土) 09:55:24.65ID:0/l6dmQ+
結局クラス分けするなりしてpublicにする部分を多くする、
テストと使用する局面で可視性を変える
の二つしかないわけで、プログラム機能でどうこうする話じゃない。
使う奴が理解して使うという話以上にはならん。

248デフォルトの名無しさん2020/07/11(土) 10:23:35.92ID:Cl4N6Aux
「privateメソッドがテストできないんですがどうしたらいいですか?」という疑問に対して、
なんとかしてテストする方法を編み出すのではなく「privateメソッドはテストしなくていい!」という
逆転の発想というかバッサリ感が中二受けしたんだと思う。

249デフォルトの名無しさん2020/07/11(土) 10:26:24.09ID:KzXDm3Nb
じゃあ編み出してどうぞ

250デフォルトの名無しさん2020/07/11(土) 10:36:26.55ID:fJlL8BSP
>>248
逆転の発想じゃなくて普通の発想じゃね?
privateなんだから

251デフォルトの名無しさん2020/07/11(土) 10:53:54.57ID:Cl4N6Aux
だって可視性とテストするしないの関係は自明じゃないじゃん。
それが関係あるなら外部にexportする関数以外はテストしなくていいことになるんじゃね?

252デフォルトの名無しさん2020/07/11(土) 11:13:39.51ID:JFnadz6+
>>231
教えてしんぜよう
アクセス修飾子は仕様が明確になってることを表すものではないからだ

253デフォルトの名無しさん2020/07/11(土) 11:16:43.36ID:JFnadz6+
publicにしたら全然関係ないパッケージからもアクセスされてしまうからね
不必要な依存を発生させることになってしまう、密結合が促進されるね
そういう意識のない人間が >>3 のような下痢便コードを書いてしまうんだね

254デフォルトの名無しさん2020/07/11(土) 11:18:39.33ID:fJlL8BSP
>>252
アクセス修飾子は仕様が明確になってることを表すなんて言ってないよ
仕様が明確になってるならpublicでいいと言ってるだけ

255デフォルトの名無しさん2020/07/11(土) 11:19:08.47ID:fJlL8BSP
>>253
> publicにしたら全然関係ないパッケージからもアクセスされてしまうからね

全然関係ないパッケージ = テストコード
アクセスできてなにか問題あるの?

256デフォルトの名無しさん2020/07/11(土) 11:20:35.92ID:JFnadz6+
>>254
言ってるじゃん、アクセス修飾子とメソッドの仕様が明確になってるかは無関係

257デフォルトの名無しさん2020/07/11(土) 11:21:19.03ID:JFnadz6+
>>255
何いってんのお前
テストは同じパッケージにするのが基本だろ
テストしたこと無いの?

258デフォルトの名無しさん2020/07/11(土) 11:22:19.30ID:JFnadz6+
テストから呼び出せるのが問題なんじゃなくて
関係ないパッケージから呼び出されて密結合になるのが問題だと言ってる

259デフォルトの名無しさん2020/07/11(土) 11:22:42.09ID:JFnadz6+
だからパッケージプライベートなら良いだろうと言ってるわけ

260デフォルトの名無しさん2020/07/11(土) 11:25:32.87ID:fJlL8BSP
>>256
言ってないよ?

外部からアクセスしないならprivate。
でも仕様がはっきりしてるならpublicにしていい。

facebookでもプライベートな話は他人に見せる必要がないからprivateだけど
別に他人に見せてもいいならpublicにしてもいいよね
それと一緒

261デフォルトの名無しさん2020/07/11(土) 11:26:14.03ID:JFnadz6+
パッケージプライベートだと同じパッケージからならアクセスして良いというメッセージを
開発者に伝えてしまうから望まない依存を生んでしまうリスクはある
どのオブジェクトからも参照されたくない場合もあるからな、やはりprivateをテストできない
言語が遅れてるだけなのだろうね

262デフォルトの名無しさん2020/07/11(土) 11:26:21.59ID:fJlL8BSP
>>257
> テストは同じパッケージにするのが基本だろ

Java以外で、同じパッケージとはなんのことで
そうするとどうなるんですか?

263デフォルトの名無しさん2020/07/11(土) 11:27:14.70ID:JFnadz6+
>>260
外部からアクセスしないけれども仕様がはっきりしてるからpublicにするのはありえないってことですよ
なぜならば密結合になってしまうから

264デフォルトの名無しさん2020/07/11(土) 11:27:56.48ID:fJlL8BSP
>>261
privateをテストできる言語っていうのは
単に全てpublicになっているのと一緒

アンダースコアで、これはアクセスできるけど
privateという意味ですよと言ってるのと何も変わらないよ

265デフォルトの名無しさん2020/07/11(土) 11:28:00.37ID:JFnadz6+
>>262
Javaの話ですよ

266デフォルトの名無しさん2020/07/11(土) 11:28:48.86ID:JFnadz6+
>>264
アンダースコア?
そうなの? 全部の言語がそんな仕様なの?
それは知らなかったなー

267デフォルトの名無しさん2020/07/11(土) 11:29:55.28ID:fJlL8BSP
>>263
仕様がはっきりしてるからpublicにするんじゃなくて
仕様をはっきりさせれば、publicにしてもよいと言ってるだけ
理由がなければprivateのままでもいい。どちらでもいい。
テストしたい=理由。理由があるならpublicにしていい。

> なぜならば密結合になってしまうから
テストコードから仕様がはっきりしないprivateをテストすること=密結合
密結合を避けるためにも、公開されたインターフェースにするのが正しい

268デフォルトの名無しさん2020/07/11(土) 11:30:13.81ID:JFnadz6+
RustやGoはprivateもテストできるよって言ってる人いたから
最近の言語ではprivateもテストできるんだーって思ってたけど
命名規則でアクセス修飾子の代わりを果たしてるんだってことだったの? それは知らなかったなー

269デフォルトの名無しさん2020/07/11(土) 11:30:22.00ID:fJlL8BSP
>>265
Java以外を知らないんですか

>>266
Java以外を知らいんですかw

270デフォルトの名無しさん2020/07/11(土) 11:30:59.34ID:fJlL8BSP
>>268
ああ、人から聞いただけなのねw

271デフォルトの名無しさん2020/07/11(土) 11:31:27.48ID:JFnadz6+
>>267
仕様がはっきりしててもpublicにしてはいけないからprivateなんだよ
テストが依存することを密結合とは言わないよ

272デフォルトの名無しさん2020/07/11(土) 11:31:51.16ID:JFnadz6+
>>269
知らないよ

>>270
そうだよ

273デフォルトの名無しさん2020/07/11(土) 11:32:06.66ID:fJlL8BSP
privateにあくせすできる言語でも
テストするならどちらにしろ仕様をはっきりさせないといけない

そうしないとテストコードがあったからといって
これが正しく仕様を満たしているのか?なんてわからない

274デフォルトの名無しさん2020/07/11(土) 11:35:07.08ID:JFnadz6+
さすがです >>3 の下痢便コード書くだけありますね
何言ってるのかさっぱりわからない

275デフォルトの名無しさん2020/07/11(土) 11:36:54.90ID:fJlL8BSP
>>3のコードを書いたのは別の人。

そもそも>>3のコードをクソコードと言って
このスレにコピペしたのが俺

276デフォルトの名無しさん2020/07/11(土) 11:38:14.80ID:JFnadz6+
>>275
そうすると君はMainを勘違いしてた人か、僕と仲直りしますか?

277デフォルトの名無しさん2020/07/11(土) 11:39:33.67ID:JFnadz6+
同じ人が同じこと言ってるだけのスレ
でもそんなスレも良いですよね

278デフォルトの名無しさん2020/07/11(土) 11:47:13.10ID:JFnadz6+
たとえばこの先Javaが進化したとしてテストオブジェクトのみを特別視して
テストオブジェクトからのみprivateにアクセスできるようになったとすると
テストオブジェクトをオブジェクト指向の枠組みで捉えるならば
オブジェクト指向としては破綻してる

Javaは受け入れないだろうね、Microsoftがdelegateを提案したときも
interfaceという仕組みがあるんだからdelegateは邪道だと言って蹴ったからなあ

実益に叶うという理由で根本的なところまで作り変えることができるのは
Microsoftだろうなあ、Javaの前にC#が対応しそうな予感はある

279デフォルトの名無しさん2020/07/11(土) 11:52:27.04ID:JFnadz6+
いまの言語仕様での最適解は >>5 ですね
これ書いた人は天才だと思いますよ
何気ないことだけれどもコードの隅々にまで神経が行き届いていて
美しく整備されて堅牢なコードです、オブジェクト指向の限界を示したと言って良いですね

280デフォルトの名無しさん2020/07/11(土) 11:55:21.12ID:0/l6dmQ+
>>248
逆転の発想じゃなくて都合のいいことを信じたい馬鹿の発想だろ

281デフォルトの名無しさん2020/07/11(土) 12:00:30.64ID:Cl4N6Aux
テストコードは設計の外にあるものだからクラスの可視性とか直接関係ないだろ。
ふつう、設計書のクラス図にテストクラスを書いたりはしない。

282デフォルトの名無しさん2020/07/11(土) 12:02:06.50ID:wIsoNFzM
書いてもいいかなとは思う

283デフォルトの名無しさん2020/07/11(土) 12:06:30.88ID:JFnadz6+
>>281
そうなんだよねー

284デフォルトの名無しさん2020/07/11(土) 12:09:38.93ID:fJlL8BSP
>>281
クラス図にprivateメソッドを書きますか?

285デフォルトの名無しさん2020/07/11(土) 12:11:12.25ID:JFnadz6+
クラス内を調査してprivateメソッドを列挙して
同クラス内のprivateメソッドをテストするコードを列挙して
カバレッジを計測するツールがあればみんな幸せになれそうですね

カバレッジ計測ツールがprivateメソッドには今の時点で対応してないって
だけでprivateメソッドのテスト自体は >>5 のように書けますから
ツールの開発が遅れてるだけなのかも知れませんね

286デフォルトの名無しさん2020/07/11(土) 12:12:35.29ID:fJlL8BSP
>>285
もしかしてお前カバレッジの意味がわかってないんじゃね?

publicメソッドの中からprivateメソッドが呼び出された時
privateメソッドの行は実行された=カバレッジとして計測される

ってことは知ってますよね?

287デフォルトの名無しさん2020/07/11(土) 12:15:06.18ID:fJlL8BSP
世の中にある全てのカバレッジ計測ツールは
privateメソッド内の実行した行を測定できるのですが
>>285を見る限り何もわかってない気がしますねw

288デフォルトの名無しさん2020/07/11(土) 12:15:29.92ID:JFnadz6+
>>286
僕は単体テストやったこと無い
カバレッジの計測もしたことないからわからない
僕は知りません

289デフォルトの名無しさん2020/07/11(土) 12:16:06.22ID:fJlL8BSP
>>288
だから>>285みたいな的はずれなことを言ってるんだねw

290デフォルトの名無しさん2020/07/11(土) 12:17:45.08ID:JFnadz6+
>>289
それにはちょっと異論があるんだけれども、今回は僕が折れましょう
僕と仲直りしますか?

291デフォルトの名無しさん2020/07/11(土) 12:18:51.24ID:fJlL8BSP
>>290
でもおまえ単体テストしたこと無いし
カバレッジの計測もしたことがないから
何も理解してないじゃん(笑)
問題はそこだよね。

292デフォルトの名無しさん2020/07/11(土) 12:19:25.54ID:Cl4N6Aux
>>284
開発の段階によって違うんじゃね?最終的な設計ドキュメントには書いてるかな。

293デフォルトの名無しさん2020/07/11(土) 12:19:47.24ID:JFnadz6+
>>291
問題はそこじゃないです、君は僕と仲直りますかということが問題です

294デフォルトの名無しさん2020/07/11(土) 12:22:20.99ID:JFnadz6+
僕はいままで手作業による結合テストだけで生き抜いてきた生粋のブラックボックスマンです
なぜそれが可能だったかというと簡単なプログラムしか書いたことがなかったからです
しかし、最近複雑なプログラムを書く機会があり結合テストだけでは不十分であることを実感しました
以上、僕の近況報告です

295デフォルトの名無しさん2020/07/11(土) 12:23:49.29ID:JFnadz6+
僕は単体テスト書いたことありますよ >>5 で書きました
カバレッジは計測したことないですけどそれは重要ではありません

296デフォルトの名無しさん2020/07/11(土) 12:27:04.12ID:fJlL8BSP
>>293
しません

297デフォルトの名無しさん2020/07/11(土) 12:27:47.72ID:fJlL8BSP
>>292
最終的な設計ドキュメントはコードから生成するものだからね
クラス図にprivateメソッドが書かれていて嬉しいのでしょうかどうなのでしょうか?

298デフォルトの名無しさん2020/07/11(土) 12:28:33.49ID:fJlL8BSP
> 最終的な設計ドキュメントはコードから生成するものだからね
クラス図の話ね。クラス図は(唯一?)コードから生成できる。

299デフォルトの名無しさん2020/07/11(土) 12:29:05.33ID:JFnadz6+
>>296
(´・ω・`)

300デフォルトの名無しさん2020/07/11(土) 12:31:00.81ID:fJlL8BSP
正直、詳細なクラス図は、設計図の中で一番不要だと思ってる。
必要なのはソースコードと完全に一致してるクラス図ではなく
クラス概要図・関連図とでも言うべきだろう

主要なメソッドとそれぞれのクラス関係がわかればいい
目的はなにかを考えればその結論にたどり着くはず

301デフォルトの名無しさん2020/07/11(土) 12:37:31.52ID:Cl4N6Aux
>>297
保守する人にとってはあった方がいいと思ってる。

302デフォルトの名無しさん2020/07/11(土) 12:45:10.61ID:JFnadz6+
単体テストという言葉の曖昧さがpublic派か、private派かの分裂の原因です

publicメソッドはオブジェクトのインターフェイスなので
publicメソッドをテストすることをインターフェイステストというべきです
オブジェクト指向で、インターフェイスが関わるのはオブジェクトのコラボレーションが行われるときです

一方でprivateメソッドはpublicメソッドが作られるのと同じか、もしくはそれ以前に作られます
publicメソッドが正しく動作することの前提としてprivateメソッドが正しく動作することがあるので
privateメソッドをテストすることをインプリメンテーションテストという言うべきです
privateメソッドを使用するのは同じオブジェクト内のメソッドなので、オブジェクトのコラボレーションとは直接の関係がありません

単体テストと言っても対象のメソッドによって、テストが必要な時期が異なるわけです
privateのテストはクラスが作られる前に行われますし、publicのテストがクラスは作られた後に行われます

あとはコストの話です、結合テストがすべて通るなら単体テストは必要ありませんし本番稼働がすべてうまくいくならテスト自体必要ありません
後の工程で発覚するほど手戻りが大きくなりコストが膨らむので段階を追ってテストしていきましょうというのが基本的な考え方です

privateのテストをすることによってpublicのテストの手戻りが少なくなることはあるんです
privateのテストはやったほうが良いです。

303デフォルトの名無しさん2020/07/11(土) 12:45:36.89ID:fJlL8BSP
>>301
保守する時はコードから生成できるので完璧なのはいらない
だから本当に必要なのはクラス概要図だろう

図としてみたい場合、メソッドすべてがずらずら書かれていても邪魔なだけ
ましてやprivateなんていらない。
図としてみたい場合、本当に見たいのは関連だろう?

304デフォルトの名無しさん2020/07/11(土) 12:46:11.05ID:fJlL8BSP
>>302
> 単体テストという言葉の曖昧さが

それ以前に、おまえ単体テストしたこと無いし
カバレッジの計測もしたことがないから
何も理解してないじゃん(笑)
問題はそこだよね。

305デフォルトの名無しさん2020/07/11(土) 12:46:51.38ID:JFnadz6+
頑張って書いた、これはもう論文と言って良いのでは
僕はプログラミングのテストについて博士号もらっても良いのでは
少なくともこのスレではテストに一番詳しい

306デフォルトの名無しさん2020/07/11(土) 12:48:09.47ID:JFnadz6+
>>304
僕は >>5 で単体テスト書きましたよ
君はカバレッジ計測ツールを使用して理解した気になってるだけのアホです

307デフォルトの名無しさん2020/07/11(土) 12:48:53.15ID:JFnadz6+
僕はツールを使ったことはないけど、頭を使うからね

308デフォルトの名無しさん2020/07/11(土) 12:50:19.54ID:fJlL8BSP
288 返信:デフォルトの名無しさん[] 投稿日:2020/07/11(土) 12:15:29.92 ID:JFnadz6+ [26/35]
>>286
僕は単体テストやったこと無い
カバレッジの計測もしたことないからわからない
僕は知りません

309デフォルトの名無しさん2020/07/11(土) 12:51:19.09ID:JFnadz6+
>>308
>>5 では書きましたよ

310デフォルトの名無しさん2020/07/11(土) 12:53:21.76ID:JFnadz6+
君はレトリックな部分に引きづられる傾向があるから
もう少し客観的に遠目でものを見るようにしたが良いかも

311デフォルトの名無しさん2020/07/11(土) 13:02:59.95ID:JFnadz6+
僕はJavaしか知らないと言ったけどC#に関するあっと言わせるような知識と考察を垣間見せたでしょ
僕の知性あふれる想像力は君の経験を凌駕する
ツールに習熟して使いこなすのも大事だけど、頭を使って状況を分析して打開する力も大事
僕は後者の方が優れている、君と僕が手を組めば最強になれる
僕と仲直りしてくれますか?

312デフォルトの名無しさん2020/07/11(土) 14:58:15.05ID:0BF0aQZE
TDD信奉者がprivateメソッドのテストは必要ないと主張するのは当たり前

TDDは一般的にpublicメソッドを最小”ユニット”として書き始めるから
privateメソッドが作られるのはテストが通る状態を維持したままリファクタリングして
一部をprivateメソッドに抽出した場合だけ
だからprivateメソッドのテストを書く必要がない

privateメソッドじゃなくHelperクラスのpublicメソッド等に抽出した場合も同じ
HelperクラスをpublicなAPIとして公開するのでなければ別途テストを追加する必要は基本的にない

313デフォルトの名無しさん2020/07/11(土) 15:11:26.01ID:KCR4lRFo
和田メソッドよろしく!

314デフォルトの名無しさん2020/07/11(土) 15:36:11.13ID:JFnadz6+
>>312
なるほどね

315デフォルトの名無しさん2020/07/11(土) 15:55:06.50ID:fJlL8BSP
和田さんの話にも飽きたので、レガシーコード改善ガイドという本の話でもしようか?
https://bmf-tech.com/posts/%E3%83%AC%E3%82%AC%E3%82%B7%E3%83%BC%E3%82%B3%E3%83%BC%E3%83%89%E6%94%B9%E5%96%84%E3%82%AC%E3%82%A4%E3%83%89

・クラスのメソッドがprivateだったとき
  ・publicメソッドを通じたテストが可能か検討する
    ・publicメソッドを通じたテストを行うことで実際のコードと同じ方法によるテストが保証できる
  ・上記が可能でない場合
    ・そのprivateメソッドはpublicにすべき
      ・大抵の場合はそのクラスが多くのことをやりすぎている、再設計が必要であることを意味している
・privateメソッドをpublicメソッドにすることについて悩む点
  ・メソッドが単なるユーティリティで、呼び出し側が気にかけるものでない
    →そのメソッドを別クラスに移せないか検討する
    →クラスのインターフェースに余分なpublicメソッドがあることは許容可能
  ・呼び出し側がそのメソッドを直接使った場合、そのクラスの他のメソッドの結果に悪影響を及ぼす可能性がある
    →そのメソッドを別クラスに移し、移動先のクラスでpublicにする
・良い設計とはテストが可能であり、悪い設計はテストが不可能

まあ言ってることはほとんど同じなんだけどなw

316デフォルトの名無しさん2020/07/11(土) 15:56:52.92ID:fJlL8BSP
https://maku.blog/p/p6awy3z/#%E7%AC%AC10%E7%AB%A0-%E3%81%93%E3%81%AE%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92%E3%83%86%E3%82%B9%E3%83%88%E3%83%8F%E3%83%BC%E3%83%8D%E3%82%B9%E3%81%A7%E5%8B%95%E3%81%8B%E3%81%99%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93

第10章 このメソッドをテストハーネスで動かすことができません

テストしたいメソッドが private である
・private メソッドをテストしたい場合、そのメソッドは public にすべきである。
・public メソッドにすべきかどうかで悩んでしまう場合、大抵は、そのクラスが多くのことを行いすぎであり、
修正すべきことを意味している(1つのクラスが複数の責務を持ってしまっている)。
・よい設計はテスト可能であり、テスト可能でない設計は悪い設計である。


・この方法は、メソッドを単純に public 化するのと本質的には変わらないので微妙な対応方法だが、リファクタリングすべき箇所の目印となる。
・Java などの言語ではリフレクションによって private メソッドのテストを記述することはできるが、
根本的な依存関係の問題を先延ばしにしているだけである。その種のごまかしをすると、
コードがどの程度悪くなっているのかに気付きにくくなってしまう。

317デフォルトの名無しさん2020/07/11(土) 17:36:03.50ID:KCR4lRFo
北朝鮮行ったことあるか?

日本の町並みには看板があるだろ?
「パナソニック」とか「コカ・コーラ」とかだよな。

北朝鮮でこれに該当するのはスローガンの看板だから。
社名や商品名の看板は一切ない。
「ウリナラをキノコの国にしよう!」←裏の意味は無くそのままの意味らしい。
「苦難の行軍!」
「白頭の革命精神!」

和田メソッドに通じるものがあるよな。

318デフォルトの名無しさん2020/07/11(土) 18:36:13.70ID:fJlL8BSP
>>317

他のスレで書いたけど「例え」は物事をわかりやすく説明するために使うもの
何かを批判するために「例え」を使うのは悪手。なぜなら
「例え」で批判してるのは「例え」に使ったものだから

お前が批判してるのは北朝鮮であって
和田さんや「レガシーコード改善ガイド」の
ベストプラクティスの批判にはなっていない

319デフォルトの名無しさん2020/07/11(土) 18:45:30.42ID:KCR4lRFo
和田メソッドは時代遅れの遺物。

320デフォルトの名無しさん2020/07/11(土) 18:47:40.49ID:KCR4lRFo
t-wada氏がお勧めする和田メソッド。

321デフォルトの名無しさん2020/07/11(土) 19:20:51.26ID:JFnadz6+
話をしようかと言い、本の内容をコピペしただけとかゲンナリするよね
たとえ批判されても自分が言ったわけじゃないから問題ないわけですね
スネ夫メソッドと名付けましょう

322デフォルトの名無しさん2020/07/11(土) 19:23:09.88ID:JFnadz6+
本に書いてあることを自分なりに実践してみた結果大失敗して
和田メソッドは役に立たなかったとかそういう話が聞きたい

323デフォルトの名無しさん2020/07/11(土) 19:30:25.84ID:fJlL8BSP
実践した結果コードがきれいになり
テストがしやすくなったよ

324デフォルトの名無しさん2020/07/11(土) 19:35:57.71ID:JFnadz6+
>>323
さようか

325デフォルトの名無しさん2020/07/11(土) 19:37:32.93ID:JFnadz6+
車の運転がうまい人は車の危険性を知ってる人
和田メソッドを熟知した人なら和田メソッドの危険性を知ってると思うのだよ
和田メソッドの限界はどこにあるのだろうね
TDDが向かないプログラムもあるとは本に書いてあるけど
それが具体的にどういう状況か、どういうプログラムかは示されないからよくわからない
僕はTDDの限界はpublicを前提とするところにあるのじゃないかと漠然と思ってる
まだぼんやりとして言語化できる段階にない

326デフォルトの名無しさん2020/07/11(土) 20:23:20.20ID:JFnadz6+
ググってみたけどTDDに否定的な考え方は世界的にあるみたいね

327デフォルトの名無しさん2020/07/11(土) 20:58:34.53ID:KCR4lRFo
TDDはともかく、和田メソッドはダメでしょう。

328デフォルトの名無しさん2020/07/11(土) 21:57:47.69ID:fJlL8BSP
まるで○○は危険でしょうと言うだけで
何が危険かわかってない人のような言い方だなw

329デフォルトの名無しさん2020/07/11(土) 21:59:07.66ID:fJlL8BSP
>>325
> まだぼんやりとして言語化できる段階にない

当たり前


288 返信:デフォルトの名無しさん[] 投稿日:2020/07/11(土) 12:15:29.92 ID:JFnadz6+ [26/44]
>>286
僕は単体テストやったこと無い
カバレッジの計測もしたことないからわからない
僕は知りません

330デフォルトの名無しさん2020/07/11(土) 22:03:47.24ID:fJlL8BSP
>>327
ではTDDの場合どうなのか?

Private Methods, Test Driven Development, and Good Design
https://www.infoq.com/news/2008/01/private-methods-tdd-design/

> Why to test private method? Most of TDDers would answer instantly: don’t do it.
プライベートのテストをする理由?
ほとんどのTDDersはこう答える。「するな」

和田メソッド(笑)が言っていることとTDDは完全に一致してるな
まあ実際にはTDDが最初にあって和田さんは
それに同意して、TDDの話をしてるんだから当然なんだが

331デフォルトの名無しさん2020/07/11(土) 22:04:46.73ID:fJlL8BSP

332デフォルトの名無しさん2020/07/11(土) 22:05:21.04ID:fJlL8BSP

333デフォルトの名無しさん2020/07/11(土) 22:28:49.46ID:JFnadz6+
>>329
僕は頭を使うことによって君の経験はすでに超越してるよ
君はただツールを使ったことがあるってだけのただのアホ

334デフォルトの名無しさん2020/07/11(土) 22:31:24.19ID:JFnadz6+
> 実践した結果コードがきれいになり
> テストがしやすくなったよ

君の感想はこれだけ
あとは引用コピペを繰り返してるだけ
君の経験は浅すぎて僕の参考にならない

335デフォルトの名無しさん2020/07/11(土) 22:32:08.86ID:JFnadz6+
スネ夫の限界
僕は出来杉君

336デフォルトの名無しさん2020/07/11(土) 22:33:23.97ID:fJlL8BSP
>>334
でもお前の発言はなにもないじゃんw
壊れたレコードのように和田はだめ(理由なし)和田はだめ(理由なし)を
繰り返してるだけ。今度はTDDはだめっていうんですかね?w

337デフォルトの名無しさん2020/07/11(土) 22:37:09.78ID:JFnadz6+
>>336
僕は、和田はダメと一度も言ってない
僕のレスを全部読み直してみて
君は頭が働かないどころか勘が鈍い

338デフォルトの名無しさん2020/07/11(土) 22:39:35.32ID:wIsoNFzM
もう人のフンドシで相撲をとるのはやめろ

339デフォルトの名無しさん2020/07/11(土) 22:40:20.87ID:fJlL8BSP
>>337
まるで和田メソッド(TDDの常識的な手法)に
限界があるような言い方してるじゃんw

自分が何も知らないのに、限界があるんじゃないかという
疑いをかけるのはだめ。

340デフォルトの名無しさん2020/07/11(土) 22:42:56.22ID:JFnadz6+
世の中に銀の弾丸は無いからね
何事にも限界はあるでしょ、一般論だよ
IQ低い人はすぐ被害妄想いだくから面倒

341デフォルトの名無しさん2020/07/11(土) 22:43:21.62ID:JFnadz6+
もっと知性あふれる人と知的な会話をしたいなー

342デフォルトの名無しさん2020/07/11(土) 22:44:09.34ID:fJlL8BSP
>>340
一般論だからこそ、TDDの批判にはならないんだよ。

343デフォルトの名無しさん2020/07/11(土) 22:45:11.39ID:fJlL8BSP
つまり

「お前の意見に言いたいことがある。一般論として人はだれでも間違える(ドヤァ)」

といっても意見にたいして、何かを言ってることにはならないのと同じね。

344デフォルトの名無しさん2020/07/11(土) 22:45:14.99ID:JFnadz6+
ちなみに僕は常識に価値があるとも思ってない
京都大学では真実は少数派に宿るっていう言葉が使われてるよ

345デフォルトの名無しさん2020/07/11(土) 22:46:07.36ID:JFnadz6+
>>342
疑いをかけられたんだームキーって反応してる君がおかしいってこと

346デフォルトの名無しさん2020/07/11(土) 22:46:25.25ID:fJlL8BSP
>>344
じゃあ京都大学ではその言葉は多数派だから真実にはならないね(笑)

347デフォルトの名無しさん2020/07/11(土) 22:46:56.12ID:fJlL8BSP
>>345
だから「TDDには」疑いをかけられてないと言ってる。
お前は一般論を言っただけ

348デフォルトの名無しさん2020/07/11(土) 22:50:38.71ID:JFnadz6+
>>347
そうだよ、僕は一般論をいっただけ
一つ指摘しておくと君は日本語を使ってる

わかるかな、僕のこの高度な皮肉が

349デフォルトの名無しさん2020/07/11(土) 22:51:31.82ID:fJlL8BSP
>>348
皮肉かどうかはどうでもいいな
少なくともお前はバカだということ
議論してるふりをしてるだけ

350デフォルトの名無しさん2020/07/11(土) 22:52:25.23ID:JFnadz6+
> >>337
> まるで和田メソッド(TDDの常識的な手法)に
> 限界があるような言い方してるじゃんw
>
> 自分が何も知らないのに、限界があるんじゃないかという
> 疑いをかけるのはだめ。

疑いをかけられてないと思ってる人間が疑いをかけるのはだめとは言わんでしょう

351デフォルトの名無しさん2020/07/11(土) 22:53:46.53ID:fJlL8BSP
>>350
日本語が理解できてないねw

352デフォルトの名無しさん2020/07/11(土) 22:56:57.75ID:JFnadz6+
君は疑いをかけられてると思っていた
僕は一般論だよと言った
君は疑いをかけられてないと言い出した
僕はそんなの当たり前だろということを示すために君は日本語を使ってると
当たり前のことを言って皮肉った

という流れだったんだ

353デフォルトの名無しさん2020/07/11(土) 23:20:35.55ID:JFnadz6+
もうお互い大変でしょう、僕と仲直りしましょうか?
君にアホと言ったのは謝るよ、君が僕にバカと言ったのは忘れるよ
僕は心の広い知的なイケメンです

354デフォルトの名無しさん2020/07/12(日) 08:15:23.41ID:/RSb8Vzv
和田メソッドの真骨頂は、バグを作り込まなければテストする必要が無いことにある。

テストは甘え、甘えがある限りバグは無くならない。

つまり、テストしない仕組みづくりこそが和田メソッドである。

355デフォルトの名無しさん2020/07/12(日) 09:15:09.92ID:SoQxatgN
クソみたいな議論ばっかに見えるがプログラム技術板の中ではわりかしまともな方になってるぞ。

356デフォルトの名無しさん2020/07/12(日) 09:33:56.05ID:zf8GLb7g
>>355
参考までにまともだと思うレス番教えてくれ

357デフォルトの名無しさん2020/07/12(日) 12:19:27.16ID:6LAoyHzZ
>>354
デマ禁止な

358デフォルトの名無しさん2020/07/12(日) 15:39:00.55ID:/RSb8Vzv
和田メソッド被害者の会結成しなくては。

359デフォルトの名無しさん2020/07/12(日) 16:03:31.03ID:lQJaWZP0
本当の被害者は自分が被害を受けたと自覚していない

360デフォルトの名無しさん2020/07/12(日) 16:04:35.47ID:/RSb8Vzv
それは恐ろしい話だけど、このスレにもちらほらいるね。

361デフォルトの名無しさん2020/07/12(日) 16:04:37.33ID:6LAoyHzZ
そういう人に、どういう被害を受けたかを説明できればね(笑)
結局、被害の内容を言えないんだから、被害はなかったということ

362デフォルトの名無しさん2020/07/12(日) 16:11:56.07ID:/RSb8Vzv
オウム真理教の信者は被害者でもあり加害者でもある。

363デフォルトの名無しさん2020/07/12(日) 16:47:10.65ID:6LAoyHzZ
上の方でも書いたけど「例え」は何かを批判するときに使ってはだめ
「それは別の話で関係ない」という簡単な一言が完璧な反論になってしまうから

364デフォルトの名無しさん2020/07/12(日) 17:15:44.85ID:/RSb8Vzv
和田メソッドの信者は被害者でもあり加害者でもある。

365デフォルトの名無しさん2020/07/12(日) 18:31:40.10ID:6LAoyHzZ
しかしその理由は何一つ言えない。中身が無いからだ。

366デフォルトの名無しさん2020/07/12(日) 18:43:30.23ID:/RSb8Vzv
眉唾理論。

367デフォルトの名無しさん2020/07/12(日) 18:53:56.08ID:hGDsxp2M
>>366
なるほど、つまりTDDはテストが開発を駆動するという考え方で
テストによって実装や設計が導かれるということなのだけれども
設計過剰だったり設計不足だったりする
設計は本来ドメインに関する知識から導かれるものなので
入力、出力を決めたら自動的に最適な設計が見つかりますなんて
そんな都合の良いことが起こるわけもなくTDDは現代では否定されていて
単体テストよりもシステムテストを重視したほうが製品の品質はあがるわけですな

368デフォルトの名無しさん2020/07/12(日) 18:54:49.46ID:/RSb8Vzv
説明に対して全く聞く耳を持たず、和田経典に書いてあると繰り返すだけだから、宗教的なナニカ扱いされてる。

369デフォルトの名無しさん2020/07/12(日) 19:04:08.64ID:/RSb8Vzv
t-wadaがお勧めする和田メソッド。

騙されたやつ多いのでは。

370デフォルトの名無しさん2020/07/12(日) 19:10:42.57ID:6LAoyHzZ
>>367
> TDDは現代では否定されていて

どこで否定されてるの?さらっとウソを付かないように。
どうせすぐに俺がバラすんだから意味ないよ(笑)

371デフォルトの名無しさん2020/07/12(日) 19:20:59.87ID:/RSb8Vzv
どこで否定されてるのとか、これまでのみんなの説明が全くの無駄。

和田さんには和田さんの経典があり、みんなの意見には耳を貸さない。

だから宗教と言われてる。

372デフォルトの名無しさん2020/07/12(日) 19:22:03.23ID:hGDsxp2M
前スレですばらしい分析を見たなあ

897+1 :デフォルトの名無しさん [↓] :2020/07/05(日) 11:28:59.86 ID:YdQ981ul
>>870
新しい理論や手法を提唱する人には良くあることだと思うけど、その理論はある前提、ある側面では正しいけど、常に無条件に適用することは正しくないと本人は分かっていて、敢えてそういうことはわざわざ詳しくは説明しない。自分の論が有用な物だと主張したいがため、嘘はつかない範囲で相手が勝手に誤解してすごいと思わせるような物言いをする。
で、その理論に感銘を受けた人の一部が、理論の表面的な効能だけをありがたく受け取って問題点や前提条件などは正しく理解しないまま、受け売りの知識を他所で披露する。
そこで議論になると、本質をちゃんと理解してないまま自説を擁護しようとするから、無理が生じたり話が噛み合わなかったりする。
という流れでイマココなのかなと思う。

373◆QZaw55cn4c 2020/07/12(日) 19:58:09.07ID:YoHAyY/u
>>372
昔の言い方でいうところの「東大話法」というやつですね…

374デフォルトの名無しさん2020/07/13(月) 00:50:54.57ID:b4eaK6qk
>>372
素晴らしい分析? それはTDDに関しての分析じゃないよ
その文章はTDDに関して何一つ言及していない。

375デフォルトの名無しさん2020/07/13(月) 00:54:17.24ID:b4eaK6qk
>>371
ここに和田さんはいないんだから、意見を聞かないはずだという逃げの言葉で
お前の意見を言わないのはおかしい。

他人が意見を聞くかは関係なく、
お前の意見を言えばいい。

言えないなら、反論するすべがないというのがお前に対する結論だ。

376デフォルトの名無しさん2020/07/13(月) 01:12:00.86ID:Lu0QN2xA
>>1 がアスペのスレ

377デフォルトの名無しさん2020/07/13(月) 01:12:57.80ID:Lu0QN2xA
和田メソッドの弊害

378デフォルトの名無しさん2020/07/13(月) 01:36:28.61ID:b4eaK6qk
と繰り返えすだけ

379デフォルトの名無しさん2020/07/13(月) 06:26:53.87ID:7vLZz4H7
>>375
イイエ居ます。
みんな説明してます。
見えないことにするなら、みんなの書き込みが無駄です。

和田メソッドはカルト宗教の様相を呈してきた。

380デフォルトの名無しさん2020/07/13(月) 07:01:21.00ID:7vLZz4H7
和田メソッドのせいで日本のITが10年遅れた。

381デフォルトの名無しさん2020/07/13(月) 07:07:45.10ID:b4eaK6qk
和田メソッドって単なるTDDだぞ?

382デフォルトの名無しさん2020/07/13(月) 08:39:56.06ID:7vLZz4H7
イイエ違います。
和田メソッドは宗教です。

383デフォルトの名無しさん2020/07/13(月) 08:41:17.44ID:7vLZz4H7
和田さんはこのスレに居ないと書き込んでるのが御本人かもしれない。

384デフォルトの名無しさん2020/07/14(火) 13:34:51.74ID:6KNOtJR0
ステマスレ。

385デフォルトの名無しさん2020/07/16(木) 12:32:21.61ID:PwJLBkvh
失速したな
TDDはプロトタイピングと組み合わせると良いかもね
テスト書かずに概ね正確に動作するコードを書いた後に
ブラッシュアップする目的でTDDを使って書き直す感じ

386デフォルトの名無しさん2020/07/16(木) 12:34:19.44ID:PwJLBkvh
TDDを布教する人が何回も同じコード書いてうまくなっていくように
書き捨てたコードの数だけTDDは洗練されるんじゃなかろうかと

387デフォルトの名無しさん2020/07/16(木) 13:59:03.56ID:r2RuGKFG
和田メソッドのせいで失われた日本ITの20年。

388デフォルトの名無しさん2020/07/16(木) 15:09:03.31ID:fGKOjjQM
和田さんじゃなくてTDDの話をしよう
詳しい人いないの?

389デフォルトの名無しさん2020/07/16(木) 15:51:48.48ID:F4CmQs0T
テスト書くタイミングについてなら少しだけ。
わりとだら~と書いて関数なりクラスなり切り出したタイミングで書く感じ。
テストから書くってのは普通の人には難易度高い気がするわ。

390デフォルトの名無しさん2020/07/17(金) 02:41:00.28ID:sGfB37JM
最終的なプログラムの詳細設計がパッと頭に浮かぶ人ならテストから書けるんだろうけど
プロトタイプぐちゃぐちゃ作って、やっと構造が決まって、とりあえず動くもの作った後でリファクタリング、な俺には無理だなぁ

391デフォルトの名無しさん2020/07/17(金) 11:27:59.95ID:wlvhc7i8
>>390
そういうやり方にこそTDD的なアプローチが有効だと思うが

392デフォルトの名無しさん2020/07/17(金) 20:03:07.08ID:kbqCxtb3
>>390
構造が決まった時に設計が始まるんじゃないのか?

393デフォルトの名無しさん2020/07/18(土) 12:01:53.91ID:LD7t+FRX
和田メソッドの弊害

394デフォルトの名無しさん2020/07/19(日) 03:03:24.79ID:wRjhKBiZ
カプセル化■プライベートメソッドをテストする方法 ->画像>7枚

395デフォルトの名無しさん2020/07/20(月) 18:19:36.42ID:M9WZmhVk
リフレクション使え
終わり

396デフォルトの名無しさん2020/07/24(金) 00:52:33.29ID:NBbGzvfl
カプセル化■プライベートメソッドをテストする方法 ->画像>7枚

397デフォルトの名無しさん2020/07/26(日) 01:00:24.09ID:5rw0opQZ
相変わらずオブジェクト指向信じて
頑張ってるJavaプログラマさん達に
お伺いしたいんだけどさぁ

Javaでオブジェクトをsystem.out.printしても
変な文字列出てくるだけでオブジェクトの中身見れないよね?
これってあんたらの好きな「カプセル化」のせいでしょ?
これ新人にはめっちゃ不人気でみんなJavaディスってんだよね。

一方JavaScriptやPythonは
オブジェクトをconsole.logするとオブジェクトの中身
全部一目瞭然に見れるし▶ボタンで折りたたみとかも出来
ちゃうわけよ。
Pythonは折り畳めないけどそれでも見やすいよ。

こんな簡単な揺るがぬ真実を説明するのに
「コンストラクタ」とか「ポリモーフィズム」とか
「メソッド」「インタフェース」「継承」
「オーバーライド」こんなクソみたいな単語を一切使わなくても
簡単に説明できるわけ。

これでJavaScriptやPythonはイケてる言語で
Javaやオブジェクト思考は糞だって事が分かったね。
誰でも簡単に理解できるよね。

398デフォルトの名無しさん2020/07/26(日) 01:16:15.62ID:UOIkKqDd
おっ、そうだな

399デフォルトの名無しさん2020/07/26(日) 01:16:16.56ID:T2XYMYOv
わかりやすいREPLが使える言語のほうが学習効率が高いのは確かだが
標準でオブジェクトの中身がprintされるかどうかはカプセル化とは関係ない

400デフォルトの名無しさん2020/07/26(日) 02:14:47.15ID:uGb+RxKs
p obj

Ruby なら、これでインスタンスの内容が分かる

この時に、Object ID みたいな謎の文字が表示されて困る場合は、
Object#inspect をオーバーライドして、好きな内容に変える

これは、たいていの言語の「Effective 何々」という本に書いてある。
まず最初に、表示メッセージを分かりやすいように、オーバーライドしろって

401デフォルトの名無しさん2020/07/26(日) 10:27:42.72ID:XQciIU0B
>>397
> Javaでオブジェクトをsystem.out.printしても
> 変な文字列出てくるだけでオブジェクトの中身見れないよね?

JavaScriptのオブジェクトは連想配列

というわけで、Javaで連想配列を作ってprintしてみた
https://paiza.io/projects/OnW9KR89v5m-CY5JXIV2tw

> これってあんたらの好きな「カプセル化」のせいでしょ?

オブジェクトをprintしたときはそのオブジェクトのtoStringメソッドが呼ばれる
これは「ポリモーフィズム」のおかげ

toStringメソッドはObjectクラスで宣言されている

すべてのオブジェクトはObjectクラスを「継承」しているため
toStringメソッドを「オーバーライド」して任意の値を返却できる

「カプセル化」は関係ない

> 一方JavaScriptやPythonは
> オブジェクトをconsole.logするとオブジェクトの中身
> 全部一目瞭然に見れるし?ボタンで折りたたみとかも出来
> ちゃうわけよ。

すてきなデバッガです

402デフォルトの名無しさん2020/07/26(日) 10:36:11.38ID:XQciIU0B
PythonやJavaScriptがイケてる言語であることは間違いない
Javaよりも開発者多いのじゃないかな

PythonはAIで使われているし大学の授業でも使われていて
それまでC言語で教えてた内容をPythonで教えるようにしたら
学生の成績が飛躍的に上がったという話がある
人間の認知能力に最適な言語

JavaScriptはWebのクライアントでもサーバでも使われていて
日進月歩で進化している最も熱い言語

403デフォルトの名無しさん2020/07/26(日) 10:45:55.24ID:XQciIU0B
Javaは昔はオブジェクト指向一筋の堅物みたいな感じだったけど
最近はラムダ式やStream、CompletableFutureの導入など
どちらかというと関数型の方に傾倒していて、オブジェクト指向と関数型の
良いとこ取りをしようとしてる

404デフォルトの名無しさん2020/07/27(月) 06:13:01.93ID:czX+V0Vr
javaに限った話ではない

405デフォルトの名無しさん2020/07/27(月) 09:27:57.59ID:EH5Hzntf
そもそも単体で平置き出来る関数が出来るまでバカみたいに長い年月が掛かったからその間に他の言語に抜かされていった

406デフォルトの名無しさん2020/07/27(月) 12:53:06.35ID:uT7O59Px
オブジェクト指向もテストの文脈で語られるようになって、
だいぶ胡散臭い馬鹿が減ったと思う。

407デフォルトの名無しさん2020/07/27(月) 13:33:10.26ID:EH5Hzntf
胡散臭くない小奇麗なバカは減って無い、ってことだな

408デフォルトの名無しさん2020/07/27(月) 15:11:13.32ID:JMeMRaZ4
論理的には間違ってる

409デフォルトの名無しさん2020/07/27(月) 21:43:04.96ID:bbLqvN0i
>>405
「体で平置き出来る関数」ってどんなの?

410デフォルトの名無しさん2020/07/27(月) 21:54:44.65ID:qUTrza9Z
TDDに限定するならともかく、一般論として「テストの文脈で」語ろうとするのは
逆にそっちの方が胡散臭いなぁ。

411デフォルトの名無しさん2020/07/28(火) 04:52:38.60ID:8gdXVNyA
「体で平置き」とか体育会系っぽいな

412デフォルトの名無しさん2020/07/28(火) 19:28:28.71ID:CaGFADkT
平置き出来る関数って何?

413デフォルトの名無しさん2020/07/28(火) 23:55:37.61ID:+i8brD7d
第一級関数の事じゃね

414デフォルトの名無しさん2020/07/29(水) 00:11:33.88ID:ap0sh9Fh
class/object instance scopeにあるmethodではない関数または関数objectのことではないかいな

415デフォルトの名無しさん2020/07/29(水) 02:31:20.73ID:TpnjQV/H
無能は言葉を知らない

416デフォルトの名無しさん2020/07/29(水) 07:34:13.23ID:m6wyrrlf
俺様定義でしゃべるヤツが多いけどな

417デフォルトの名無しさん2020/07/29(水) 07:49:48.28ID:Jlc+lISV
「平置き出来る関数」なんてどこの村で通じる方言なん?

418デフォルトの名無しさん2020/07/29(水) 08:44:34.08ID:yJ6wpcWu
文脈でわかると思うけどね
自分の辞書にないからわからないというやつはただのアホ

419デフォルトの名無しさん2020/07/29(水) 08:52:18.07ID:yJ6wpcWu
慎吾ママが両手を広げて「おっはー」と言ったらおはようの意味だとわかるし
貴乃花親方がドアを開けて「あーす」と言ったらおはようございますの意味だとわかるだろ
「平置きできる関数」がわからない人は自分が八角理事長だと自覚したが良い

420デフォルトの名無しさん2020/07/29(水) 09:00:12.23ID:WjPZZ4ye
その流れなら「ひっらー」だろ
平沖出来る関数は

421デフォルトの名無しさん2020/07/29(水) 10:11:11.33ID:TpnjQV/H
他人と議論をしようと言う時に文脈でしかわからない言葉を使うな無能が

422デフォルトの名無しさん2020/07/29(水) 11:23:16.72ID:yJ6wpcWu
>>421
文脈がわからない人間が議論に参加するべきではないと思うの

他人の言葉には寛容に、自分の言葉は厳密にが会話の基本
議論は会話の積み重ねなんだから会話の基本ができない人間は議論ができない人
他人の言葉に厳しい態度とっても良いことなんて無いよ

423デフォルトの名無しさん2020/07/29(水) 11:26:28.92ID:yJ6wpcWu
プログラムでもそうだよね
メソッドを宣言するときは引数はできるだけ広い型
戻り値はできるだけ狭い型
にすることで他のオブジェクトと協調しやすいプログラムができる
なんでもかんでもインターフェイス使おうとするJavaの習慣は誠に遺憾

424デフォルトの名無しさん2020/07/29(水) 11:27:35.62ID:yJ6wpcWu
他人には厳しいみなさん

425デフォルトの名無しさん2020/07/29(水) 11:33:51.35ID:2AXsdL6T
自分の説明能力の無さを相手が低脳だからと責任転嫁するヤシ

426デフォルトの名無しさん2020/07/29(水) 11:36:20.63ID:yJ6wpcWu
我々人間もメソッドなのかも知れませんね

427デフォルトの名無しさん2020/07/29(水) 11:38:34.39ID:10XNhQ52
>>422
> 自分の言葉は厳密にが会話の基本
いやだよばーかw
俺の言葉は寛容にだ。平置きでわからんやつが悪い
お前は俺の言葉に寛容になれな。

428デフォルトの名無しさん2020/07/29(水) 11:38:43.76ID:yJ6wpcWu
自分の理解能力の無さを相手が無能だからと責任転嫁するココナツ

429デフォルトの名無しさん2020/07/29(水) 11:39:49.67ID:yJ6wpcWu
>>427
僕は平置きでわかる派ですよ
完全に理解した

430デフォルトの名無しさん2020/07/29(水) 11:41:33.11ID:1IRv8wde
で、結局のところ
Javaで「単体で平置きできる関数」って何なの?

コードで示してくれるといいんだか

431デフォルトの名無しさん2020/07/29(水) 11:42:06.25ID:yJ6wpcWu
>>430
() -> "coconut"

432デフォルトの名無しさん2020/07/29(水) 11:43:59.64ID:Lu0VWFvI
>>431
んん? それどこに置いてるの?

433デフォルトの名無しさん2020/07/29(水) 11:54:07.92ID:10XNhQ52
>>430
単体でおける関数ってわかりますよね?
それを平置きするんですよ

434デフォルトの名無しさん2020/07/29(水) 12:47:42.81ID:yJ6wpcWu
>>432
どこだと思う?

435デフォルトの名無しさん2020/07/29(水) 13:01:46.48ID:yJ6wpcWu
無限ココナツ
Stream.generate(() -> "coconut").forEach(System.out::println);

436デフォルトの名無しさん2020/07/29(水) 13:03:28.35ID:yJ6wpcWu
変数にセット可能、引数として渡すことができる、戻り値にセットできる
これが平置き三原則

437デフォルトの名無しさん2020/07/29(水) 13:06:58.34ID:vCcy0xOf
Javaはクラスに包んで間接的に置くしかない
これが最大の欠陥

438デフォルトの名無しさん2020/07/29(水) 13:29:06.56ID:Lu0VWFvI
単体でもなければ平置きでもなくて草生える

439デフォルトの名無しさん2020/07/29(水) 13:34:14.86ID:XTBRGYt/
用語はともかくラムダ式のことだと分かってスッキリした

440デフォルトの名無しさん2020/07/29(水) 16:49:02.49ID:jnMYxU1A
二つ折りじゃないですか!

441デフォルトの名無しさん2020/07/29(水) 18:21:34.93ID:TpnjQV/H
第一級函数のことかと思ったよ俺は
馬鹿は1つしかモノを知らないから適当に言っても1つの意味にしかならないが他人はお前よりモノを知ってるから第一級函数なのかラムダ式なのかそれとも自分が知らない別の概念なのか判断できないんだよ

442デフォルトの名無しさん2020/07/29(水) 18:32:59.18ID:T5TGNuPi
結局単にラムダ式のことを言おうとしてたん?
それだけのことをなぜ平置きとか言い出しちゃったのかなw

見苦しいからもうこれ以上レスいらんぞ

443デフォルトの名無しさん2020/07/29(水) 18:34:25.78ID:yJ6wpcWu
平置き式のこと?

444デフォルトの名無しさん2020/07/29(水) 18:35:43.73ID:jnMYxU1A
平置きとかメルカリ用語じゃねーのか

445デフォルトの名無しさん2020/07/29(水) 18:40:24.30ID:yJ6wpcWu
単体で置ける関数のことを単体関数と言い、それを平置きして式化したものが平置き式
ラムダ式なんて西洋かぶれのバズワードを使わなくても説明できるのができるプログラマ

446デフォルトの名無しさん2020/07/29(水) 18:43:48.50ID:T5TGNuPi
必死かコイツ

447デフォルトの名無しさん2020/07/29(水) 18:59:31.61ID:zMv38iUQ
みーっけた!
こうゆう関数併記するスタイルの事じゃないの?
プログラミングのお題スレ Part18
http://2chb.net/r/tech/1594702426/124
https://github.com/katahiromz/3D

function add_line(x0, y0, z0, x1, y1, z1) {
}
function set_pos(x, y, z) {
}
function set_dir(dx, dy, dz) {
}
function walk(delta) {
}
function turn_dir(dx, dy, dz) {
}
function turn_angle(angle) {
}
function init() {
}
function koch(degree, step) {
}
function draw() {
}
function animate() {
}

448デフォルトの名無しさん2020/07/29(水) 19:19:06.70ID:bUZt8h4Z
それは関数を単体でおいただけ
平置きとは違う

449デフォルトの名無しさん2020/07/29(水) 20:44:56.64ID:f9ldngpW
フォルダに平積みする事か?
A.class
B.class
C.class
D.class
E.class

450デフォルトの名無しさん2020/07/29(水) 20:48:45.31ID:kq2jMqPx
本の平積みと同じ意味だよ
平にするって所を強調したいんだ

451デフォルトの名無しさん2020/07/29(水) 23:30:32.60ID:eNj62kDo
ポリモーフィズムって押し付けなんだよね
汎用的な機能を提供する
与える引数だけが戻り値を決めるような
純粋な関数を1つくればDRYになっていいものを、

何らかの意図を持った特化した関数を
幾つも定義しなければならない
意味がわからない。

インスタンスには極力状態を持たせない方が
圧倒的にバグが少ない

UI制御の状態ならGUI上だけで
本当に重要な状態ならDB上やセッションとかで
持つくらいで大体は事足りる
クラスのフィールドなんてほとんど使わんよ

引数と戻り値
配列 連想配列をとことん突き詰めれば
大抵の事はなんでも出来る。
これが構造化プログラミング

452デフォルトの名無しさん2020/07/29(水) 23:41:24.99ID:JOuph4+C
カプセル化■プライベートメソッドをテストする方法 ->画像>7枚

453デフォルトの名無しさん2020/07/30(木) 00:11:51.67ID:3OVhn9K/
>>451
それが設計意図がキチンとドキュメントにまとまっていれば
こうなったときに引数増やすしか無いかとかわかるんだけど
だいたいドキュメント書かないバカがノリで作ったようなポリモだから
頭にくるんだよね
作ったやつのおバカなドヤ顔に拳をブチ込んでその場で正座させながらドキュメント書かせたい

454デフォルトの名無しさん2020/07/30(木) 08:29:08.61ID:aMAEXQwY
>>451
単純にモジュール切り分けテクニックの一つなだけだよ。
変な切り分けすればそりゃ可読性悪くなるわ。
オブジェクト指向をいつでもすべしみたいな馬鹿が誤解をひろめたのがいかんだけで有用なテクニックの一つではある。

455デフォルトの名無しさん2020/07/30(木) 10:11:39.63ID:6431nXoC
ドキュメントとセットでの運用なら、
それ自体では完結してない、つまりは欠陥品ってことでしょ

ドキュメントの有無や書いた奴の頭の程度で決定したりはしない

456デフォルトの名無しさん2020/07/30(木) 10:58:41.66ID:P2gSGZs3
>>455
visualstudioがWordやExcelと連携してくれれば楽なのにね

457デフォルトの名無しさん2020/07/30(木) 12:33:29.09ID:6431nXoC
コードそのものが「文芸的」になる必要がある

458デフォルトの名無しさん2020/07/30(木) 13:15:44.34ID:XKQCIMIB
ソリューションエクスプローラーなんて芋っポイのやめてWordの項目一覧でいいよ
そこの項目に対応したソースを記述すればいい

459デフォルトの名無しさん2020/07/30(木) 13:21:46.37ID:odFw/CMl
ソリューションエクスプローラのCMakeターゲットビュー見てみろよ。
そんなこと言えなくなるだろ。

460デフォルトの名無しさん2020/07/30(木) 13:24:30.25ID:XKQCIMIB
ドキュメント主導型にして欲しい

461デフォルトの名無しさん2020/07/30(木) 13:28:55.06ID:odFw/CMl
それはちょっと違うかもしれないな。
プログラミング言語は自然言語と比較して非常に制約がきつく、それは機械が読めるほどだ。
自然言語で書くよりもプログラミング言語で書く方が誤解の余地が少ない優れた文書になるのではないか。

462デフォルトの名無しさん2020/07/30(木) 14:36:27.17ID:jRBN85oj
data Status = Dead | Alive

you == not Alive

お前はもう死んでいる

463デフォルトの名無しさん2020/07/31(金) 00:38:15.14ID:91XEAcCM
カプセル化■プライベートメソッドをテストする方法 ->画像>7枚

464デフォルトの名無しさん2020/07/31(金) 00:57:13.70ID:QZ7aSShZ
カプセル化■プライベートメソッドをテストする方法 ->画像>7枚

465デフォルトの名無しさん2020/07/31(金) 01:01:24.69ID:QZ7aSShZ
カプセル化■プライベートメソッドをテストする方法 ->画像>7枚

466デフォルトの名無しさん2020/07/31(金) 07:44:49.12ID:0J+iX777
>>455
プログラムで表現しずらいものをドキュメントで補うんだよ。
SIerに提出するような糞アリバイドキュメントばっかりつくってると理解できないだろうけれど。

467デフォルトの名無しさん2020/07/31(金) 09:46:54.45ID:UpUkpE84
プライベートメソッドのドキュメントを作るんだろ?
欠陥品じゃん

468デフォルトの名無しさん2020/07/31(金) 12:50:08.54ID:0J+iX777
プライベートだろうとパブリックだろうと、構造がコードでわかりにくけりゃ作るよ。
そういう表面的なことでしか判断できないのは頭が悪い証拠だと思うよ。

469デフォルトの名無しさん2020/07/31(金) 13:53:02.12ID:J/Hsbz2N
和田信者は頭が欠陥品

470デフォルトの名無しさん2020/07/31(金) 15:26:19.59ID:+g+2reUI
要するに馬鹿にはプログラミングさせるなということだな
馬鹿が書くと変なものをprivateにしてしまって大混乱
プライベートメソッドをテストせざるを得なくなる

471デフォルトの名無しさん2020/07/31(金) 20:54:13.68ID:UpUkpE84
普通は表面的=形式的なモンで判断するんでしょこの業界
だって形式しかねーもん

472デフォルトの名無しさん2020/08/01(土) 01:42:55.39ID:JfG80/LC
構造図みたいなのはプログラム内には書けないから
それは文章化しておくしかないから仕方がない

473デフォルトの名無しさん2020/08/01(土) 13:40:53.00ID:ZqZOxFea
カプセル化■プライベートメソッドをテストする方法 ->画像>7枚

474デフォルトの名無しさん2020/08/03(月) 01:10:10.92ID:WN+omvah
カプセル化■プライベートメソッドをテストする方法 ->画像>7枚


lud20200829000403
このスレへの固定リンク: http://5chb.net/r/tech/1593949666/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「カプセル化■プライベートメソッドをテストする方法 ->画像>7枚 」を見た人も見ています:
【最新メソッドで生える?増える?】Somji博士が教える ハゲを予防し治療する7つの方法
【大野智】プライベートの独特変装方法をぶっちゃけ「あ、やべー奴?っていうふうに思われる」 [爆笑ゴリラ★]
テストステロンを分泌させまくる方法
可能な範囲でプライベート画像などをあげるスレッド
棺姫の空戦魔装学園35試験小隊のチャイカの契約者プラスティックメモリーズフリートア・ライブのメソッド総合【ワインおばさん不要論】
【海外芸能】エマ・ワトソンとアマンダ・サイフリッド、下着姿などのプライベート写真が流出
テストしにくいコードをテストする方法教えて下さい
関数型言語でフラグ管理をする方法
麻雀MJ プライベート
プライベート・ウォー
プログラミング技術を使って副収入を得る方法
リグマかプライベートやろ
写真袋で女子のプライベート画像ww
浜辺美波ってプライベートどんな子なんかな
プライベートリサーチってどうよ?
プライベートバンカー Part1
[終]プライベートバンカー #9★1
社長メグにゃんのプライベートブログ
【プライベートビーチボーイ】錦織智
Aqours声優とプライベートで関係を持てるなら
KAZUKIプライベートクリニック
横道侑里「オタはプライベートを詮索するな」
【画像】深田恭子さんのプライベート写真が流失
[新]プライベートバンカー #1★1
プライベートで勉強してるプログラマー
にーにーのすやすやプライベート画像が流出
コレがちぇるプライベートビキニだ!
後藤真希「プライベートではなっちとよく遊んでた」
丹生ちゃんのプライベート趣味が仕事につながる力やばくね?
プライベートの平手さんが可愛い [無断転載禁止]
川名凜ちゃんのプライベート動画が流出wwww
社会人になってプライベートで何か学んでますか?
【悲報】Tehuさん、またもプライベート写真が流出
上國料かみこちゃん、プライベートで釣りに行く 2
同僚とプライベートで水族館って言うほどヤバいか?
東野・岡村の旅猿~プライベートでごめんなさい~49
【画像有り】鷲見アナのプライベートエロ画像流出!!!!
加藤純一「プライベートではあんな叫びながらゲームやらねえよw」
【20mm機関砲で】プライベートライアン【バラバラ】
【悲報】ぱるるが松井珠理奈とプライベートで食事 [無断転載禁止]
AV女優とプライベートでセフレだけど質問ある?
浜崎「プライベート情報のSNS発信どうか控えて」
プライベート垢を裏垢と呼称する狼住人っておかしくね?
「プライベートライアン」←このプライベート要素
AV女優がプライベートでよく来る店 [無断転載禁止]©bbspink.com
段原のプライベートカラオケ動画が流出wwwwwwwwww
プライベートでのAV女優目撃談 [無断転載禁止]©bbspink.com
生田衣梨奈今度はプライベートで石黒彩と遊びに行きやがった
【芸能】顔がおかしい!米津玄師のプライベート写真に衝撃走る
【悲報】メキノメリアのプライベートヌード流出
プライベートオファーってどれぐらい信用できるの?
ハロメンとプライベートでの交流が殆どないハロメンいる?
【速報】嫌儲に美少女のプライベート画像が投稿される
プライベート・ライアンってリアルな映画だよなあ
もう仕事だろうとプライベートの重要データだろうとクラウド保存だよな
【大阪】プライベートラックを語るスレ【谷町】20 ©bbspink.com
プライベートな写真などを見せてくれる女性がいるのですが
iPhoneのSafariでプライベートのほうで開いてるページ
【IT】Microsoft、無制限の無料プライベート Git リポジトリ
関西ローカル71395プライベートレッスンとかやってくれや
【Bitcoin】ビットコインプライベート【Private】
真夏軍団がプライベートで遊ばないらしいけど秋元真夏って最低だよな
【悲報】プライベートの山﨑夢羽さん、スカートが短すぎる・・
【大阪】プライベートSMクラブ【カルマ】11 ©bbspink.com
DaiGoプライベートも充実、両脇に美女。ケンモメンまた負けたのか…
上坂すみれのプライベート姿がエロ過ぎる…こんなん誰でも素射するだろ [無断転載禁止]
14:06:27 up 63 days, 15:05, 0 users, load average: 7.58, 8.71, 8.67

in 0.12765288352966 sec @0.12765288352966@0b7 on 062003