■短い回答
プライベートをテストしたい場合は設計に問題があるので、パブリックに変更してテストしましょう
■これに対する(変な人の)驚いた反論
プライベートを一時的にパブリックにして、テストが終わったら
プライベートに戻すなんてやるわけないだろw
↑誰もそんなコトしろなんて言ってない
■テスト専門家による回答
t-wadaのブログ
https://t-wada.hatenablog.jp/entry/should-we-test-private-methods
短くまとめると、プライベートなメソッドのテストを書く必要は 無い と考えています。
ほとんどのプライベートメソッドはパブリックメソッド経由でテストできるからです。
プライベートメソッドは実装の詳細であり、自動テストのターゲットとなる「外部から見た振る舞い」ではありません。
プライベートなメソッドのテストに関しては、4つの考え方があります。
・パブリックメソッド経由でテストする
・別クラスのパブリックメソッドとする
・テスト対象の可視性を(やや)上げる
・プライベートのまま、リフレクションでアクセスしてテストを書く
パブリックメソッド経由でテストする
多くの場合、そのクラスのパブリックメソッド経由でプライベートメソッドのテストも同時に行えます。テストできているか不安があるならテストカバレッジを確認しましょう。
別クラスのパブリックメソッドとする
プライベートなメソッドのテストを書きたいということは、実はテスト対象の責務が多すぎることを示唆している場合があります。
テストがどうしても書きたい場合は、その責務はテスト対象のプライベートな振る舞いではなく、他の誰かのパブリックな振る舞いなのでしょう。
カプセル化■プライベートメソッドをテストする方法
■ このスレッドは過去ログ倉庫に格納されています
2020/07/05(日) 20:47:46.60ID:M+BkbwUs
2020/07/05(日) 20:48:27.27ID:M+BkbwUs
2020/07/05(日) 20:51:53.15ID:M+BkbwUs
クソコード例。こんなコード書いてるやつが、privateのテストで
パブリックに変更してテストするのはおかしいとか言ってる(笑)
lenが配列(笑)理由 int型にはnullが入れられないから(笑)
https://mevius.5ch.net/test/read.cgi/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;}
}
パブリックに変更してテストするのはおかしいとか言ってる(笑)
lenが配列(笑)理由 int型にはnullが入れられないから(笑)
https://mevius.5ch.net/test/read.cgi/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;}
}
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はどうやってテストするの?
パブリック経由で全パターンと言うことならこれでこの話はおしまい。
パブリック経由でやりましょう。
違うと言うなら具体的にコードでおながいします。
正直あの短さでOOかどうかと(スタティックでインスタンス化もないコードだが)言うのは
不毛だけどID:JiRnWiGCの組み込みおじさんのがOO感はあるよ。
で、staticで出されてもprivateのテストがどうかと言う話には全く寄与しないわけだが、
じゃあ逆に、>>805のチンコテストのfuncSとfuncBはどうやってテストするの?
パブリック経由で全パターンと言うことならこれでこの話はおしまい。
パブリック経由でやりましょう。
違うと言うなら具体的にコードでおながいします。
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
設計に問題があるので、コードを修正しましょう。
修正すれば自然とpublicになります↓
926 名前:デフォルトの名無しさん[] 投稿日:2020/07/05(日) 12:20:23.64 ID:MQ9nuMmc [21/53]
>>805
こう書いた方が良いと思うの
https://paiza.io/projects/mPhqBnYZnQukkW6HY9LmOQ
2020/07/05(日) 20:57:49.33ID:M+BkbwUs
>>5の補足、これはまだプライベートですが
普通はMainクラスにコードをごちゃごちゃ書かないので
judgeLengthを含むクラスを作成します。
そしてmainから呼び出します。
必然的にjudgeLengthメソッドはパブリックになります。
普通はMainクラスにコードをごちゃごちゃ書かないので
judgeLengthを含むクラスを作成します。
そしてmainから呼び出します。
必然的にjudgeLengthメソッドはパブリックになります。
7デフォルトの名無しさん
2020/07/05(日) 21:03:41.24ID:MQ9nuMmc >>6
judgeLengthをpublicにしてよいかどうか、オブジェクトをわけて良いかどうかは微妙なところで
publicにした場合って他のオブジェクトからも参照可能になってしまうので
そこの依存があとあとjudgeLengthの修正をできなくする可能性があるので
privateにするっていうのは他のオブジェクトから依存させないようにして独立させる意味もあるので
テストするためにpublicにしますっていうのは僕はやっぱり反対ですね
judgeLengthをpublicにしてよいかどうか、オブジェクトをわけて良いかどうかは微妙なところで
publicにした場合って他のオブジェクトからも参照可能になってしまうので
そこの依存があとあとjudgeLengthの修正をできなくする可能性があるので
privateにするっていうのは他のオブジェクトから依存させないようにして独立させる意味もあるので
テストするためにpublicにしますっていうのは僕はやっぱり反対ですね
8デフォルトの名無しさん
2020/07/05(日) 21:04:50.23ID:MQ9nuMmc 僕が書いたように同じオブジェクトにテストコードも書いちゃえば良いと思います
2020/07/05(日) 21:07:40.54ID:M+BkbwUs
>>7
微妙でもなんでもねーよ
Mainクラスに関係ない処理を入れるな
これは小さいサンプルだが、大きくなった時
Mainクラスに、そんな処理はいってたらおかしいだろ
なんで(大きくなったコードの)その他の部分は別のクラスにあるのに
この処理だけMainクラスにあるんだ?って
微妙でもなんでもねーよ
Mainクラスに関係ない処理を入れるな
これは小さいサンプルだが、大きくなった時
Mainクラスに、そんな処理はいってたらおかしいだろ
なんで(大きくなったコードの)その他の部分は別のクラスにあるのに
この処理だけMainクラスにあるんだ?って
10デフォルトの名無しさん
2020/07/05(日) 21:09:37.34ID:MQ9nuMmc2020/07/05(日) 21:11:26.55ID:M+BkbwUs
12デフォルトの名無しさん
2020/07/05(日) 21:13:00.77ID:MQ9nuMmc >>11
えっと、前にも言ったけどpaizaはMainという名前じゃないと動かないんだよ
Mainとわけてクラスを作ることもできるけど面倒だからやらなかっただけ
普通のプログラマならpaizaの制約ぐらい知ってるだろうし説明する必要もないと思ってた
君の無知さを想像できなかった僕のミスだ
えっと、前にも言ったけどpaizaはMainという名前じゃないと動かないんだよ
Mainとわけてクラスを作ることもできるけど面倒だからやらなかっただけ
普通のプログラマならpaizaの制約ぐらい知ってるだろうし説明する必要もないと思ってた
君の無知さを想像できなかった僕のミスだ
13デフォルトの名無しさん
2020/07/05(日) 21:13:24.90ID:MQ9nuMmc 君が無知すぎてごめん
14デフォルトの名無しさん
2020/07/05(日) 21:14:24.05ID:MQ9nuMmc 誠にごめんなさい
2020/07/05(日) 21:14:43.14ID:M+BkbwUs
2020/07/05(日) 21:15:37.89ID:M+BkbwUs
プライベートをテストしたいっていうのは
本質的に設計が悪いってことが理解できないやつ
もしくは設計なんてしたことがないやつなんだろう
本質的に設計が悪いってことが理解できないやつ
もしくは設計なんてしたことがないやつなんだろう
17デフォルトの名無しさん
2020/07/05(日) 21:15:45.13ID:MQ9nuMmc >>15
てめえでやれやハゲ
てめえでやれやハゲ
2020/07/05(日) 21:16:23.44ID:M+BkbwUs
>>17
だからやるのが正解だろw
だからやるのが正解だろw
19デフォルトの名無しさん
2020/07/05(日) 21:17:00.58ID:MQ9nuMmc20デフォルトの名無しさん
2020/07/05(日) 21:17:17.30ID:MQ9nuMmc >>18
やってない君が不正解だね
やってない君が不正解だね
21デフォルトの名無しさん
2020/07/05(日) 21:19:16.27ID:MQ9nuMmc 僕は下痢便コードをこうするべきって修正したよ
paizaで動くようにMainというクラス名に変えたけどね
paizaだからそうなるよねってみんな理解してくれるものと思ってた
paizaを知らない木偶の坊がクラス名に文句つけてきたとき僕は絶望した
paizaで動くようにMainというクラス名に変えたけどね
paizaだからそうなるよねってみんな理解してくれるものと思ってた
paizaを知らない木偶の坊がクラス名に文句つけてきたとき僕は絶望した
2020/07/05(日) 21:20:28.56ID:Xwol7cCi
23デフォルトの名無しさん
2020/07/05(日) 21:21:29.14ID:MQ9nuMmc こうするべきだと思うならやれば良いがな
自分でやりもせず他人に文句いうだけの人間は木偶の坊のそしりを免れないよ
自分でやりもせず他人に文句いうだけの人間は木偶の坊のそしりを免れないよ
2020/07/05(日) 21:22:53.14ID:M+BkbwUs
Mainに他のクラスの処理を全て同居させる
全部Mainにあるから呼び出せるよね?と
publicメソッドをprivateメソッドに変更
publicメソッドはMainのみ!
と言い
あぁ、プライベートメソッドのテストができない〜と嘆く(笑)
アホなのか?自分でテストできないようにクソ設計に変更して
自業自得じゃんw
全部Mainにあるから呼び出せるよね?と
publicメソッドをprivateメソッドに変更
publicメソッドはMainのみ!
と言い
あぁ、プライベートメソッドのテストができない〜と嘆く(笑)
アホなのか?自分でテストできないようにクソ設計に変更して
自業自得じゃんw
26デフォルトの名無しさん
2020/07/05(日) 21:25:43.01ID:MQ9nuMmc >>24
君はまだMainという名前のレトリックから抜け出せてないように見える
paizaで動かすためにMainという名前にしたってだけだから
実際にはそれなりの名前になるでしょう
privateメソッドは当然クラスと関係あるものになるでしょうということ
Mainという名前に囚われ過ぎておられるように見受けられる
自分だったらこう書くのにって言うのがあるならそれを実践してみるべきかと思われます
君はまだMainという名前のレトリックから抜け出せてないように見える
paizaで動かすためにMainという名前にしたってだけだから
実際にはそれなりの名前になるでしょう
privateメソッドは当然クラスと関係あるものになるでしょうということ
Mainという名前に囚われ過ぎておられるように見受けられる
自分だったらこう書くのにって言うのがあるならそれを実践してみるべきかと思われます
2020/07/05(日) 21:25:44.19ID:M+BkbwUs
おそらく設計とは何かを知らずに、
ただ動けばいいと思ってるんだろう
テストしやすく設計するのも
設計の一つ
ただ動けばいいと思ってるんだろう
テストしやすく設計するのも
設計の一つ
28デフォルトの名無しさん
2020/07/05(日) 21:26:22.28ID:MQ9nuMmc >>27
Mainを勘違いしてたアホが何抜かしとんねん
Mainを勘違いしてたアホが何抜かしとんねん
2020/07/05(日) 21:26:36.76ID:M+BkbwUs
2020/07/05(日) 21:27:04.67ID:M+BkbwUs
31デフォルトの名無しさん
2020/07/05(日) 21:27:05.17ID:MQ9nuMmc 謙虚になれや
オブジェクト指向とは礼儀作法と心得よ
オブジェクト指向とは礼儀作法と心得よ
32デフォルトの名無しさん
2020/07/05(日) 21:27:44.35ID:MQ9nuMmc >>30
はいはいもうえーから
はいはいもうえーから
2020/07/05(日) 21:27:45.52ID:Xwol7cCi
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 ほんま口だけやな
2020/07/05(日) 22:31:17.31ID:cdjjBT1g
あら。続いていたのか。
2020/07/05(日) 22:53:15.98ID:VS9zJ3bZ
このスレの主旨的にはprivateメソッドのテストコードを書きたいんだよね?
書く必要がないって主張は違うよね?
書く必要がないって主張は違うよね?
2020/07/05(日) 23:21:59.16ID:MQ9nuMmc
それはそれでありだと思うよ
2020/07/05(日) 23:22:46.55ID:MQ9nuMmc
結局のところ何でもあり
僕は単体テストさえやってないからね
僕は単体テストさえやってないからね
2020/07/05(日) 23:27:01.94ID:cdjjBT1g
スレタイと書いてあることがチグハグで趣旨が解りづらいな。
スレタイに従えば、privateを呼び出したいみたいだが、>>1の発言を見るとprivateの呼び出しは推奨しないように見える。
まぁ、私も推奨しないけど。
という訳で、適当に独り言を語ってみる。
単体テストって、例えば...
Queueという名前のクラスがあって、そのクラスの中に
Enqueue、Dequeue、Peek、Clearメソッドが定義されていたら、それらメソッドを呼び出して、その結果を予想するコード(テストコード)を書いて実行させる方法がオブジェクト指向プログラマーにとって一般的だと思うけど...その際にprivateメソッド(内部実装)をテストコードから呼び出さないといけない理由がわからん。
スレタイに従えば、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でやる事はライブラリを呼び出すだけなので、テストするのは無駄。
しかし、他の言語ではアルゴリズムの実装という仕事があり、アルゴリズムの実装をテストしたいという要求は常に存在する。
すると、t-wadaさんの立場ではprivateをテストしないというのは全くもって正しいと思う。
privateでやる事はライブラリを呼び出すだけなので、テストするのは無駄。
しかし、他の言語ではアルゴリズムの実装という仕事があり、アルゴリズムの実装をテストしたいという要求は常に存在する。
43デフォルトの名無しさん
2020/07/05(日) 23:48:39.22ID:LRfXHt7v 例えば多くのパーサーは公開メンバとしてpush()を持つ。
文字をプッシュする関数だ。
めぼしい公開メンバはこの程度しかない。
しかしその裏に100を超える非公開のメンバがあっても驚かない。
非決定性のパーサはその程度のメンバを持つ。
文字をプッシュする公開メンバ一つで、多くの状態、多くのメンバをテストするのは面倒な話で、何方にせよ非公開のメンバ、非公開の状態変数について知識が無ければテストできない。
だったら内部の状態について一切テストしないか、内部の状態を直接テストするか二択となる。
内部の状態についてはブラックボックスとして扱うべきと述べているのがt-wadaさんだが、それでは実装が非常に困難だ。
文字をプッシュする関数だ。
めぼしい公開メンバはこの程度しかない。
しかしその裏に100を超える非公開のメンバがあっても驚かない。
非決定性のパーサはその程度のメンバを持つ。
文字をプッシュする公開メンバ一つで、多くの状態、多くのメンバをテストするのは面倒な話で、何方にせよ非公開のメンバ、非公開の状態変数について知識が無ければテストできない。
だったら内部の状態について一切テストしないか、内部の状態を直接テストするか二択となる。
内部の状態についてはブラックボックスとして扱うべきと述べているのがt-wadaさんだが、それでは実装が非常に困難だ。
44デフォルトの名無しさん
2020/07/05(日) 23:55:21.34ID:LRfXHt7v パーサーの話ついでに、もう一つアイデアを提供しよう。
決定性パーサーでは、還元が行われたとき、外部に影響を及ぼす。
通常この時点で意味動作を行う。
t-wadaさんは、この時に限りテストを行うべきであり、それ以外でテストを行ってはいけないと述べる。
つまり、シフトが行われるときはテストしてはならない。
今どの状態にあるかは外部にかかわりのない事なのでテストとしてはならない。
入力文字として改行を与えるとどの状態に遷移するかテストしてはならない。
これは厳しすぎやしないだろうか?
決定性パーサーでは、還元が行われたとき、外部に影響を及ぼす。
通常この時点で意味動作を行う。
t-wadaさんは、この時に限りテストを行うべきであり、それ以外でテストを行ってはいけないと述べる。
つまり、シフトが行われるときはテストしてはならない。
今どの状態にあるかは外部にかかわりのない事なのでテストとしてはならない。
入力文字として改行を与えるとどの状態に遷移するかテストしてはならない。
これは厳しすぎやしないだろうか?
45デフォルトの名無しさん
2020/07/06(月) 00:01:34.67ID:NTI0gQuc 詳細を知ってはならないということは、どの状態を経てその記号が生み出されたのか知ってはならないということであり、これは非常につらい。
46デフォルトの名無しさん
2020/07/06(月) 00:03:58.43ID:NTI0gQuc システム利用者がシステム作者に「詳細を検査しちゃだめじゃないか!」と怒っているように見える。
2020/07/06(月) 00:24:27.58ID:bo8iccWD
>>42
t-wadaはもともとJavaな人
t-wadaはもともとJavaな人
48デフォルトの名無しさん
2020/07/06(月) 00:27:13.73ID:NTI0gQuc クリスマスプレゼントが何かを知るために箱を振って音を聞くよりも、箱を開けて直接見るほうが早い。
49デフォルトの名無しさん
2020/07/06(月) 00:29:02.17ID:NTI0gQuc 箱を振って「プレゼントはプリキュア」と観測できたとする。
これは果たしてどの程度もっともらしいだろうか?
これは果たしてどの程度もっともらしいだろうか?
2020/07/06(月) 01:18:51.21ID:gvRhXNla
privateなメソッドの動きが仕様書で定義されてたらテストしなくちゃいけないし書いてなかったら書く必要無い
そしてprivateなメソッドの仕様まで定めた仕様書は俺は見たことない
そしてprivateなメソッドの仕様まで定めた仕様書は俺は見たことない
2020/07/06(月) 02:20:25.77ID:T074ZQpk
>>47
うるせーばか。文句を言うために都合の良いデータを調べてきたに決まってるだろ
うるせーばか。文句を言うために都合の良いデータを調べてきたに決まってるだろ
2020/07/06(月) 07:14:05.86ID:EsDpeV3E
一気に胡散臭くなったな
2020/07/06(月) 07:37:12.27ID:ODctk1XU
2020/07/06(月) 07:38:08.27ID:cDMo9043
書いてない関数を勝手に作るなんて禁止に決まってるだろ
テストのためだけに関数は作らない
テストのためだけに関数は作らない
2020/07/06(月) 07:59:18.67ID:ODctk1XU
>>54
すごい、そんなガチガチなの銀行系?
すごい、そんなガチガチなの銀行系?
2020/07/06(月) 08:00:23.42ID:ODctk1XU
関数を作るのに許可がいるなんてすごいことだからとてもすごいと思いました
2020/07/06(月) 09:07:12.86ID:aZiq8mUC
>>1にはテストとしか書かれていないけど、記事元はユニットテスト(単体テスト)の話だよね?
2020/07/06(月) 10:09:49.30ID:Smcv6rvz
組み込みでの話らしいよここw
2020/07/06(月) 10:19:56.49ID:cDMo9043
>>57
ユニットテスト以外でメソッドのテストなんかするのか?
ユニットテスト以外でメソッドのテストなんかするのか?
2020/07/06(月) 12:11:06.79ID:O9yimTr2
2020/07/06(月) 12:27:52.10ID:aZiq8mUC
>>59
自分であたかも他のテストがあるように言っておいて変な話だがだが、しないね。
単体テストで不具合を見つけた後、デバッガを使って更にどこにバグの原因が潜んでいるのか分析することはあるけど、それはもはやテストではなくデバッグだしね。
自分であたかも他のテストがあるように言っておいて変な話だがだが、しないね。
単体テストで不具合を見つけた後、デバッガを使って更にどこにバグの原因が潜んでいるのか分析することはあるけど、それはもはやテストではなくデバッグだしね。
2020/07/06(月) 12:34:18.82ID:aZiq8mUC
2020/07/06(月) 12:35:06.14ID:aZiq8mUC
ミス。テストコード実行場所とテスト対象が同じ階層に書かれているのはなんで?だ。
64デフォルトの名無しさん
2020/07/06(月) 14:43:00.46ID:NTI0gQuc 和田理論は穴が多くてお話にならないな。
2020/07/06(月) 14:44:50.89ID:40IRbGG5
では穴のない理論をおなしゃす
66デフォルトの名無しさん
2020/07/06(月) 14:51:45.46ID:NTI0gQuc 和田理論に騙された人は抗議したほうが良い。
2020/07/06(月) 14:54:43.27ID:EsDpeV3E
wadaは忘れろ
privateだからテストしなくていいなどという都合のいい法則は存在しない だがprivateだからとテストをしないキチガイは確実に存在するのだ
privateだからテストしなくていいなどという都合のいい法則は存在しない だがprivateだからとテストをしないキチガイは確実に存在するのだ
68デフォルトの名無しさん
2020/07/06(月) 15:05:56.82ID:NTI0gQuc 和田理論被害者の会ひつよう。
とてもひつよう。
とてもひつよう。
2020/07/06(月) 15:07:12.95ID:bo8iccWD
一意見を急に”理論”とか”法則”とか言う方が頭どうかしてるよ
t-wadaはTDDをわかりやすく解説することに定評があるだけ
ただいろんな会社からテストのコンサルティングで雇われる程度には有能だから
君たちの意見よりは一般には受け入れられやすい
t-wadaはTDDをわかりやすく解説することに定評があるだけ
ただいろんな会社からテストのコンサルティングで雇われる程度には有能だから
君たちの意見よりは一般には受け入れられやすい
70デフォルトの名無しさん
2020/07/06(月) 15:10:07.70ID:NTI0gQuc 和田理論被害者の会ニューヨーク支部もひつよう。
とてもひつよう。
とてもひつよう。
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 俺も活用していないわそういえば。
2020/07/06(月) 15:18:30.87ID:9+hHOd2F
>>61
> 単体テストで不具合を見つけた後、デバッガを使って更にどこにバグの原因が潜んでいるのか分析することはあるけど、それはもはやテストではなくデバッグだしね。
単体テストで不具合を見つけた後にするもの=デバッグ
デバッグの前にする不具合を見るけるもの=テスト
だろ?
テストの後にするデバッグは、テストではなくデバッグだしねって
あんた何言ってるの?
> 単体テストで不具合を見つけた後、デバッガを使って更にどこにバグの原因が潜んでいるのか分析することはあるけど、それはもはやテストではなくデバッグだしね。
単体テストで不具合を見つけた後にするもの=デバッグ
デバッグの前にする不具合を見るけるもの=テスト
だろ?
テストの後にするデバッグは、テストではなくデバッグだしねって
あんた何言ってるの?
2020/07/06(月) 16:05:37.75ID:n2uckING
オブジェクト指向の話をしよう
彡ミ
↓↓↓
彡 ⌒ ミ
(´・ω・`) 頭皮、毛髪に触れるものは全て検査する
彡ミ
↓↓↓
彡 ⌒ ミ
(´・ω・`) 頭皮、毛髪に触れるものは全て検査する
2020/07/06(月) 17:22:23.35ID:aZiq8mUC
2020/07/06(月) 17:32:36.88ID:zkbL7M3i
2020/07/06(月) 18:58:02.99ID:9+hHOd2F
2020/07/06(月) 20:17:44.91ID:pO1U5uVJ
80デフォルトの名無しさん
2020/07/06(月) 22:24:42.23ID:djm9krVS まだプログラミング教室やってんのかw
2020/07/07(火) 11:04:13.93ID:hnvy2tUT
>>78
(テストとデバッグは違う作業だと思うのだが)
(テストとデバッグは違う作業だと思うのだが)
2020/07/07(火) 11:33:22.19ID:hnvy2tUT
もしかすると、バグの原因を調査する作業はテストに含まれるかどうかって話かな?
83デフォルトの名無しさん
2020/07/07(火) 11:34:20.85ID:zTLocdwC 和田メソッド被害者の会に入れてほしいです。
2020/07/07(火) 11:40:38.80ID:YBf2Aagc
2020/07/07(火) 12:01:27.16ID:hnvy2tUT
突っ込みどころねーじゃんw
それなのに喧嘩腰で突っ込んで周囲に突っ込まれただけか。
それなのに喧嘩腰で突っ込んで周囲に突っ込まれただけか。
2020/07/07(火) 12:04:20.99ID:bdixmHft
privateメソッドのチェックもできない奴は出荷すんぞ
2020/07/07(火) 12:25:55.22ID:NlNPNtxk
privateのチェックって具体的にどうやるの?
Queueというクラスをテストするケースを例に教えて。
Queueというクラスをテストするケースを例に教えて。
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)
だいたいこんなもんだろ。
queue.push(17)
asserEqual( queue.length, 1)
a = queue.pop()
assertEqual( a, 17)
assertEqual( quele.length, 0)
だいたいこんなもんだろ。
2020/07/07(火) 12:37:00.92ID:NlNPNtxk
>>88
おお、俺もそんなのイメージしてた。
そんなコードでpublic経由でprivateを呼び、ついでにカバレッジテストとか済ませる感じかな。
...だったらいいのだが、なーんか、このスレの人達の言動を見ていると怪しいんだよな。
88は別に問題ないけど。
おお、俺もそんなのイメージしてた。
そんなコードでpublic経由でprivateを呼び、ついでにカバレッジテストとか済ませる感じかな。
...だったらいいのだが、なーんか、このスレの人達の言動を見ていると怪しいんだよな。
88は別に問題ないけど。
2020/07/07(火) 12:56:17.65ID:NlNPNtxk
カバレッジテストをするかどうかは、ケースバイケース。どちらでもいいとして、一番気にしているのは、そもそも>>1の記事主に批判的な人はオブジェクト指向を理解しているのか?という点。
怪しいというのは、そこね。
怪しいというのは、そこね。
2020/07/07(火) 13:10:52.54ID:YBf2Aagc
92デフォルトの名無しさん
2020/07/07(火) 13:14:04.43ID:zTLocdwC93デフォルトの名無しさん
2020/07/07(火) 13:19:42.71ID:zTLocdwC どうやら図星だったようですね。
Javaではありがちなんですよ。
Javaではありがちなんですよ。
2020/07/07(火) 13:28:08.57ID:RJk/Rw+W
2020/07/07(火) 13:34:52.03ID:YBf2Aagc
96デフォルトの名無しさん
2020/07/07(火) 14:34:40.27ID:zTLocdwC >>95
Java!Java!
Java!Java!
97デフォルトの名無しさん
2020/07/07(火) 14:48:31.09ID:zTLocdwC98デフォルトの名無しさん
2020/07/07(火) 14:56:56.51ID:zTLocdwC オブジェクト指向はダメなんじゃないか?というのが前スレの趣旨で、非公開のメンバは何のためにあるの?テストどうするの?という話になった。
それに対する回答が「非公開のメンバはブラックボックスとして扱いテストしてはならない」という和田メソッドが示された。
それに対して「入力に使われる一つのメンバしかもたないパーサ」という実例を挙げ、「文字列を入力され構文木を返すような状態機械のテストが非常に困難」という話が出た。
この場合、内部を観測できないのであれば、すべての入力の組み合わせ(受理できない入力もテストするなら、それは無限である)に対して、すべての取りうる構文木のセットを検査しなければならない。
つまりそれは太陽系よりもはるかに広く、銀河の向こうまでテストするということである。
それに対して「オブジェクト指向を知らない」などと抜けたことを言うので、「Java!」という結論が出された。
それに対する回答が「非公開のメンバはブラックボックスとして扱いテストしてはならない」という和田メソッドが示された。
それに対して「入力に使われる一つのメンバしかもたないパーサ」という実例を挙げ、「文字列を入力され構文木を返すような状態機械のテストが非常に困難」という話が出た。
この場合、内部を観測できないのであれば、すべての入力の組み合わせ(受理できない入力もテストするなら、それは無限である)に対して、すべての取りうる構文木のセットを検査しなければならない。
つまりそれは太陽系よりもはるかに広く、銀河の向こうまでテストするということである。
それに対して「オブジェクト指向を知らない」などと抜けたことを言うので、「Java!」という結論が出された。
2020/07/07(火) 15:04:16.80ID:YBf2Aagc
> それに対する回答が「非公開のメンバはブラックボックスとして扱いテストしてはならない」という和田メソッドが示された。
正確には
・パブリックメソッド経由でテストする
・別クラスのパブリックメソッドとする
・テスト対象の可視性を(やや)上げる
・プライベートのまま、リフレクションでアクセスしてテストを書く
まとめ
繰り返すと、プライベートなメソッドや関数をテストする必要は無いと考えています。
プライベートなメソッドは、実装の詳細であるからです。
正確には
・パブリックメソッド経由でテストする
・別クラスのパブリックメソッドとする
・テスト対象の可視性を(やや)上げる
・プライベートのまま、リフレクションでアクセスしてテストを書く
まとめ
繰り返すと、プライベートなメソッドや関数をテストする必要は無いと考えています。
プライベートなメソッドは、実装の詳細であるからです。
100デフォルトの名無しさん
2020/07/07(火) 15:05:58.19ID:O+C/kGAG 実装の詳細ならむしろテストが必要だと思うのだけど
なんで詳細だからテストしなくて良いのだろう
t_wada被害者の会に僕も入会させてください
なんで詳細だからテストしなくて良いのだろう
t_wada被害者の会に僕も入会させてください
101デフォルトの名無しさん
2020/07/07(火) 15:07:05.23ID:zTLocdwC102デフォルトの名無しさん
2020/07/07(火) 15:07:48.37ID:YBf2Aagc >>98
> それに対して「入力に使われる一つのメンバしかもたないパーサ」という実例を挙げ、「文字列を入力され構文木を返すような状態機械のテストが非常に困難」という話が出た。
> この場合、内部を観測できないのであれば、すべての入力の組み合わせ(受理できない入力もテストするなら、それは無限である)に対して、すべての取りうる構文木のセットを検査しなければならない。
それはパブリックメソッドでも同じこと
内部を観測して、すべての入力の組み合わせをテストしないといけないから
> それに対して「入力に使われる一つのメンバしかもたないパーサ」という実例を挙げ、「文字列を入力され構文木を返すような状態機械のテストが非常に困難」という話が出た。
> この場合、内部を観測できないのであれば、すべての入力の組み合わせ(受理できない入力もテストするなら、それは無限である)に対して、すべての取りうる構文木のセットを検査しなければならない。
それはパブリックメソッドでも同じこと
内部を観測して、すべての入力の組み合わせをテストしないといけないから
103デフォルトの名無しさん
2020/07/07(火) 15:08:26.27ID:YBf2Aagc104デフォルトの名無しさん
2020/07/07(火) 15:10:39.95ID:O+C/kGAG 単体テストっていう言い方がまずいのかも
インターフェーステストとインプリメンテーションテストに分けるのが良い気がします
インターフェーステストとインプリメンテーションテストに分けるのが良い気がします
105デフォルトの名無しさん
2020/07/07(火) 15:11:55.03ID:zTLocdwC 言い張るんだったら、ほんとに和田メソッド被害者の会作っちゃうよ?
会員200万人目指しちゃうよ?
いいの?
会員200万人目指しちゃうよ?
いいの?
106デフォルトの名無しさん
2020/07/07(火) 15:12:43.32ID:YBf2Aagc107デフォルトの名無しさん
2020/07/07(火) 15:12:43.34ID:zTLocdwC >>105
言いたいことわかってくれるあなたは、PythonとかC#とかC++ですね?
言いたいことわかってくれるあなたは、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++ですね?
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 王家の秘伝メソッド普及委員会を立ち上げよう
111デフォルトの名無しさん
2020/07/07(火) 15:15:25.23ID:YBf2Aagc112デフォルトの名無しさん
2020/07/07(火) 15:15:52.28ID:zTLocdwC Javaは色々研究して提唱してえらいなあと思う部分もあるんだけど、すぐに宗教化してしまうからな。
そこがJava!なんだよな。
そこがJava!なんだよな。
113デフォルトの名無しさん
2020/07/07(火) 15:17:07.58ID:YBf2Aagc どうも都合が悪かったようだな
俺のレスに答えられずひたすら関係ない話を始めた
俺のレスに答えられずひたすら関係ない話を始めた
114デフォルトの名無しさん
2020/07/07(火) 15:18:08.09ID:pnFsfYkB >>108
この自作自演は恥ずかしいなww
この自作自演は恥ずかしいな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カバレッジって言葉知ってますかね?
なぜパブリックメソッドにすると
すべての入力の組み合わせをテストしなくてよくなるのか?
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経由だけでは確認できないテストをしたほうがいい場合がある
一般的には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メソッドとなりテストが可能になる
訂正
一般的には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メソッドのテストやれよ
キチガイ
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/kGAG132デフォルトの名無しさん
2020/07/07(火) 17:43:14.92ID:jam8vymb 可視性狂信者ってのはどうしようもないね。テストさえ犠牲にし始める。
13394
2020/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:zm6NAQZG138デフォルトの名無しさん
2020/07/07(火) 19:26:55.85ID:bdixmHft >>137
は?いいからprivateメソッドのテストやれよ
は?いいからprivateメソッドのテストやれよ
139デフォルトの名無しさん
2020/07/07(火) 19:27:35.46ID:zm6NAQZG オブジェクト指向を理解している人間の言うprivateをテストせよ/テストするべきではない と、 オブジェクト指向を理解していない人間のprivateをテストせよ/テストするべきでない は論争のレベルが全然違う。
大学生同士の論争と小学生同士の喧嘩くらい違う。
お前はどっちだ?>>138
大学生同士の論争と小学生同士の喧嘩くらい違う。
お前はどっちだ?>>138
140デフォルトの名無しさん
2020/07/07(火) 19:28:44.77ID:bdixmHft141デフォルトの名無しさん
2020/07/07(火) 19:32:38.84ID:bdixmHft ここで話を整理するけど
privateメソッドだからテストしないとか言ってるやつはキチガイ
早く死んでね
privateメソッドだからテストしないとか言ってるやつはキチガイ
早く死んでね
142デフォルトの名無しさん
2020/07/07(火) 19:33:11.12ID:zm6NAQZG 具体例もなく、privateのテストやれと言われてもできねーよ、バーカ。
143デフォルトの名無しさん
2020/07/07(火) 19:35:50.42ID:bdixmHft うんうん
わかってない人もいるみたいだからもう一度ここで仕切り直しさせてほしい
privateメソッドだからテストしないとか言ってるやつはキチガイ
早く死んでね
わかったかな?
わかってない人もいるみたいだからもう一度ここで仕切り直しさせてほしい
privateメソッドだからテストしないとか言ってるやつはキチガイ
早く死んでね
わかったかな?
144デフォルトの名無しさん
2020/07/07(火) 19:36:30.14ID:OvditBd9145デフォルトの名無しさん
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:YBf2Aagc148デフォルトの名無しさん
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しかテストやってなかったら
普通は怒り狂うもんだよ
っていうか絶対ブッ殺す
それテストできてねーから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
> そのままじゃ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のときのテストを追加しましょう
> t=0しかテストやってなかったら
仕様が変わったのならt=3のときのテストを追加しましょう
152デフォルトの名無しさん
2020/07/07(火) 22:34:14.99ID:YBf2Aagc >>149はホント意味不明だな
最初の仕様・・・t=0のときしかprivateメソッドの処理をしない
t=3のときは?→「privateメソッドの処理をしない」場合の結果が正しい
改修・・・t=3のときにprivateメソッドの処理をすることになった
「privateメソッドの処理をした」場合の結果が以前と異なるという仕様になった
では新しい仕様のテストを書きましょう
これだけなんだがなぁ
前と正しい答えが違うのに、テストを修正しないの?
最初の仕様・・・t=0のときしかprivateメソッドの処理をしない
t=3のときは?→「privateメソッドの処理をしない」場合の結果が正しい
改修・・・t=3のときにprivateメソッドの処理をすることになった
「privateメソッドの処理をした」場合の結果が以前と異なるという仕様になった
では新しい仕様のテストを書きましょう
これだけなんだがなぁ
前と正しい答えが違うのに、テストを修正しないの?
153デフォルトの名無しさん
2020/07/07(火) 22:49:42.87ID:bdixmHft154デフォルトの名無しさん
2020/07/07(火) 22:52:36.96ID:bdixmHft 設計書かコメントに
このメソッドはt=0のときしかテストしていません!
って書いてあるの?
お前のソースって
悪いけど見たことねーや
滅茶苦茶バカだしもういいかな?
レスしなくて
このメソッドはt=0のときしかテストしていません!
って書いてあるの?
お前のソースって
悪いけど見たことねーや
滅茶苦茶バカだしもういいかな?
レスしなくて
155デフォルトの名無しさん
2020/07/07(火) 22:54:46.63ID:YBf2Aagc >>153
だから変わったpublicメソッドをテストしろよ
変わってないならprivateメソッドに何の問題もないだろ
それとも何か?お前すべての取りうる値でテストしろと言ってんのか?
この関数は数値を二倍してくれる関数である。
今まで4を入れてこの関数を呼び出していた。
今度5を入れるようになったから5を入れた場合はどうなるかテストする必要がある
今度は6を、7を、8を・・・って新しい引数で呼び出すために
そのテストが必要なんか?ああん?
だから変わったpublicメソッドをテストしろよ
変わってないならprivateメソッドに何の問題もないだろ
それとも何か?お前すべての取りうる値でテストしろと言ってんのか?
この関数は数値を二倍してくれる関数である。
今まで4を入れてこの関数を呼び出していた。
今度5を入れるようになったから5を入れた場合はどうなるかテストする必要がある
今度は6を、7を、8を・・・って新しい引数で呼び出すために
そのテストが必要なんか?ああん?
156デフォルトの名無しさん
2020/07/07(火) 22:56:07.20ID:YBf2Aagc157デフォルトの名無しさん
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のときしかテストしてませんって書いてあるもの納品するか?
ナメてんじゃねーよ
これぜってー仕事でお前の主張が通る現場ねーぞガチで
メソッドに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のテストをお前はするんか?どういった理由で?
> は?最小-1、最小、中間、最大、最大+1通すだろフツー
・t=3のどこが、最小-1、最小、中間、最大、最大+1なんだよw
「今回」新しく仕様が変わって、t=3 などというものが登場したんだろ
なら「今回」テストを追加するだけの話だろ
それとも何か? t=3がいままでprivateを呼ばなかったのに
t=3のテストをお前はするんか?どういった理由で?
161デフォルトの名無しさん
2020/07/07(火) 23:47:24.20ID:zm6NAQZG162デフォルトの名無しさん
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+rMe166デフォルトの名無しさん
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という字面にこだわるのは単なる信仰心にすぎません。
神を信じますか?ハイ信じます。
神を見ましたか?ハイ見ました。
こういうことです。
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 ・マーチンのこと?
ロバート・C ・マーチンのこと?
173デフォルトの名無しさん
2020/07/08(水) 04:11:04.99ID:6ZEX1zcL >>169
なるほどな
なるほどな
174デフォルトの名無しさん
2020/07/08(水) 06:13:27.58ID:AplvQTCJ175デフォルトの名無しさん
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:6ZEX1zcL178デフォルトの名無しさん
2020/07/08(水) 09:02:50.79ID:SznGehK7 >>172
ハイそうです。
ハイそうです。
179デフォルトの名無しさん
2020/07/08(水) 12:16:39.34ID:hmU+YLWt 関数が取りうる値で全てでテストしろと言ってるアホがいるスレはここですか?
今回78という値で関数を呼び出すことになった
78という値を与えた時、ちゃんと動くかテストしているかね?
だってさ(笑)
今回78という値で関数を呼び出すことになった
78という値を与えた時、ちゃんと動くかテストしているかね?
だってさ(笑)
180デフォルトの名無しさん
2020/07/08(水) 12:42:10.97ID:PWwZYnOX privateメソッドのテストを具体的にどうやるのか未だに分からん。
そもそも、public経由のメソッド呼び出しで網羅できない巨大privateメソッドの正しい動作なんて定義できるの?
そもそも、public経由のメソッド呼び出しで網羅できない巨大privateメソッドの正しい動作なんて定義できるの?
181デフォルトの名無しさん
2020/07/08(水) 12:54:49.19ID:ODFOiaSP 巨大なメソッド自体が悪じゃね
あとテストってinoutを確認するんじゃないの?
outいっぱいしてたらもうそれ完全害悪じゃね
あとテストって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変数しかない。
元からpublicメソッドとprivate変数しかない。
186デフォルトの名無しさん
2020/07/08(水) 20:52:09.28ID:Sbr5rKl2187デフォルトの名無しさん
2020/07/08(水) 20:55:55.79ID:hmU+YLWt >>183
↓って書いてますが? 3と78でなにか違いがあるんですか?
> ある時改修で別のpublicメソッドからt=3のときにprivateメソッドを呼ぶことになったら
> t=0しかテストやってなかったら
↓って書いてますが? 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:s5mehW61190デフォルトの名無しさん
2020/07/08(水) 21:19:38.42ID:hmU+YLWt >>189
あのさぁ、ごまかしてないでちゃんと書こうよ?
最小、最大、中間値のテストやってれば
最小、最大、中間値ではない3のテストなんて不要なんだよって
ちゃんといわないと、あのバカには伝わらないよ?
あのさぁ、ごまかしてないでちゃんと書こうよ?
最小、最大、中間値のテストやってれば
最小、最大、中間値ではない3のテストなんて不要なんだよって
ちゃんといわないと、あのバカには伝わらないよ?
191デフォルトの名無しさん
2020/07/08(水) 23:59:05.09ID:hEQaHqpN 最小、最大、中間値って聞いたことがないけど
どこかの分野で一般的に使われてるもの?
境界値分析なら
境界値と境界値の内側と外側の3値か
境界値と境界値の外側の2値かどっちかが一般的だと思う
どこかの分野で一般的に使われてるもの?
境界値分析なら
境界値と境界値の内側と外側の3値か
境界値と境界値の外側の2値かどっちかが一般的だと思う
192デフォルトの名無しさん
2020/07/09(木) 00:14:35.43ID:qGUjUa51 >>191
3と78がそれに当たると申すか?
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を学ぶべきだ!」などと言う前に、原典に当たろう。
「彼らはオブジェクト指向を全く知らない可哀そうな人ではないか?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を理解していない人が発狂していたけど。
スレタイはカプセル化って書いてあるし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:sSLzYC6I201デフォルトの名無しさん
2020/07/10(金) 15:02:20.85ID:zQa5K81u202デフォルトの名無しさん
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に欠けているものとは一体……?!
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メソッドを定義するケース自体、珍しいから、経験則に基づかない発言でもあるが...。
>>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の概念を無視した設計には、こちらの主張は当てはまらない。
そう思うと、和田さんのリフレクションをギリギリ許容(?)するような記事の書き方も否定はできん。
なんだかんだで、彼の記事は自分が記事を書くよりは無難にまとめられているとは思う。
まぁ、記事を書いたことないけど。
privateメソッドをテストするというレアケースだから許してくれ。
常識が無い以上、もっと正確に細かく伝えるべきだったな。
ただ、俺の主張(リフレクションは反則
行為)の弱い点を言うと、OOPやDDDの概念を無視した設計には、こちらの主張は当てはまらない。
そう思うと、和田さんのリフレクションをギリギリ許容(?)するような記事の書き方も否定はできん。
なんだかんだで、彼の記事は自分が記事を書くよりは無難にまとめられているとは思う。
まぁ、記事を書いたことないけど。
217デフォルトの名無しさん
2020/07/10(金) 22:09:19.05ID:pPoV7F8C ユーザーが直接public methodを使うわけじゃなければ
public methodだって実装の詳細
integration test経由で
必要なpublic methodはテストできるんだから
個別にすべてのpublic methodをテストする必要なんてない
というのと似たようなもの
それでいい場合もあればそうじゃない場合もあるというだけ
public methodだって実装の詳細
integration test経由で
必要なpublic methodはテストできるんだから
個別にすべてのpublic methodをテストする必要なんてない
というのと似たようなもの
それでいい場合もあればそうじゃない場合もあるというだけ
218デフォルトの名無しさん
2020/07/10(金) 22:23:15.71ID:FovnwiSG まあね、処理の複雑さによるのだろうね
hello world程度ならテストさえ必要ないだろうし
hello world程度ならテストさえ必要ないだろうし
219デフォルトの名無しさん
2020/07/10(金) 22:31:36.66ID:pLXOeUja220デフォルトの名無しさん
2020/07/10(金) 22:38:32.51ID:d7aQvYi7 そこで、テスト駆動開発ですよ。
最初にテストケースを定義してそれをパスする
コードを書けばpublicだのprivateだの議論は不要
だれかこの開発方法やってる?
最初にテストケースを定義してそれをパスする
コードを書けばpublicだのprivateだの議論は不要
だれかこの開発方法やってる?
221デフォルトの名無しさん
2020/07/10(金) 22:54:55.64ID:FovnwiSG >>220
privateだとテストケース書けないじゃん
privateだとテストケース書けないじゃん
222デフォルトの名無しさん
2020/07/10(金) 23:26:01.49ID:zQa5K81u223デフォルトの名無しさん
2020/07/11(土) 00:18:29.78ID:E2OZ8LYK >>213
> ...で、これでカバレッジテストに合格しちゃったらどうするの?
テストはテストコードを見ないで
OKってでたからOKだ
ってやるもんじゃないよ
テストコードはレビューするものだ
通ったからOKじゃなくて、通るのは当たり前で
テストコードを見て正しくテストされてることを確認する
テスト結果のOKが「エビデンス」なのではなくテストコードが「エビデンス」
動作してることを証明するスクリーンショット(笑)と同じもの
「エビデンス」は見て確認しなければいけない
> ...で、これでカバレッジテストに合格しちゃったらどうするの?
テストはテストコードを見ないで
OKってでたからOKだ
ってやるもんじゃないよ
テストコードはレビューするものだ
通ったからOKじゃなくて、通るのは当たり前で
テストコードを見て正しくテストされてることを確認する
テスト結果のOKが「エビデンス」なのではなくテストコードが「エビデンス」
動作してることを証明するスクリーンショット(笑)と同じもの
「エビデンス」は見て確認しなければいけない
224デフォルトの名無しさん
2020/07/11(土) 00:21:18.34ID:E2OZ8LYK >>221
テストケースがあるもの=publicメソッドで
privateは中で必要に応じて作るもの
メソッドにしてもいいしメソッドにしなくてもいい
テストケース書けないなら関数にせずにそのまま埋め込めよ
publicメソッドのテストケースが問題ないなら
中の詳細なテストなんかいらんだろ
メソッドにしてないかもしれないし
テストケースがあるもの=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+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:E2OZ8LYK232デフォルトの名無しさん
2020/07/11(土) 01:06:55.98ID:E2OZ8LYK なんでテストケースが作れるのに、publicにしないのかわからん
233デフォルトの名無しさん
2020/07/11(土) 01:42:00.39ID:H19stfAl234デフォルトの名無しさん
2020/07/11(土) 02:18:29.03ID:wIsoNFzM privateでかっこいいメソッドなんだろうがよ!
いや、俺実はpublic staticしか作らんけど
いや、俺実はpublic staticしか作らんけど
235デフォルトの名無しさん
2020/07/11(土) 02:41:27.63ID:P8l8Ig/I >>222
正直、開発自体をテスト工藤開発で終えるのはキツいと思うけど、
コーディング→動作確認→デバッグ→リファクタリングの
プログラマー個人の短いサイクルでのトライ&エラーには結構使えるんじゃないかと思う。
カバレッジ100%のテストケースは作る工数とメンテが大変だからそこまでする必要はないと思うけど、
そこそこのカバレッジでプログラマーが個人で高速に開発を回せるのは強い。
カバレッジ100%目指すのは単体テストの時だけで十分
正直、開発自体をテスト工藤開発で終えるのはキツいと思うけど、
コーディング→動作確認→デバッグ→リファクタリングの
プログラマー個人の短いサイクルでのトライ&エラーには結構使えるんじゃないかと思う。
カバレッジ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:Cl4N6Aux242デフォルトの名無しさん
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の呼び出しで合格できなかった網羅テストを内部実装を直接呼び出して合格って変な話。
という意味では?
合否判定が変わる例ってこんな感じじゃない?
不当に不合格になる例
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条件が変わるのは当たり前。
いや、ますますわからん。
そのタイミングで内部実装()呼んでもaの値は変わらんと思うが?
pop()の前に呼ぶんだとしたらなんでそんなテストを書くんだという話になるし。
異なる操作をしたならassert条件が変わるのは当たり前。
245デフォルトの名無しさん
2020/07/11(土) 09:35:57.08ID:JaL6gziv246デフォルトの名無しさん
2020/07/11(土) 09:55:21.63ID:fJlL8BSP >>242
まずテストの考え方が違うんだよ。
全ての組み合わせをテストする完全な網羅テストは時間的に不可能
その他のテストも数によっては現実的に不可能となることが多い
通常カバレッジ100%というのは命令網羅テストにすぎない
だが命令網羅テストをやってれば完璧かと言うかそうではない
じゃあどれをやればいいんだよ!?と思うかもしれないが、どれをやるかじゃない
何をやれば自分が作ったものが正しく動くと自信が持てるかなんだよ
現実的に実現可能であるというルールを加えれば、完璧なテストなんてできやしない。
内部実装を直接呼び出して合格したとしても、
それで正しく動くと自信が持てるなら、それで全然かまわないんだよ。
ただしテストする以上、内部実装の仕様を明確にしなきゃテストのレビューはできなくなる。
内部実装の仕様が明確になったならpublicにして問題ない。
おまけだが、pubicメソッドのテストでもprivateメソッドのテストでも
カバレッジを計測するなら、それはホワイトボックステストだからな
なんか間違ってる人がいるようだから
まずテストの考え方が違うんだよ。
全ての組み合わせをテストする完全な網羅テストは時間的に不可能
その他のテストも数によっては現実的に不可能となることが多い
通常カバレッジ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メソッドはテストしなくていい!」という
逆転の発想というかバッサリ感が中二受けしたんだと思う。
なんとかしてテストする方法を編み出すのではなく「privateメソッドはテストしなくていい!」という
逆転の発想というかバッサリ感が中二受けしたんだと思う。
249デフォルトの名無しさん
2020/07/11(土) 10:26:24.09ID:KzXDm3Nb じゃあ編み出してどうぞ
250デフォルトの名無しさん
2020/07/11(土) 10:36:26.55ID:fJlL8BSP251デフォルトの名無しさん
2020/07/11(土) 10:53:54.57ID:Cl4N6Aux だって可視性とテストするしないの関係は自明じゃないじゃん。
それが関係あるなら外部にexportする関数以外はテストしなくていいことになるんじゃね?
それが関係あるなら外部にexportする関数以外はテストしなくていいことになるんじゃね?
252デフォルトの名無しさん
2020/07/11(土) 11:13:39.51ID:JFnadz6+253デフォルトの名無しさん
2020/07/11(土) 11:16:43.36ID:JFnadz6+ publicにしたら全然関係ないパッケージからもアクセスされてしまうからね
不必要な依存を発生させることになってしまう、密結合が促進されるね
そういう意識のない人間が >>3 のような下痢便コードを書いてしまうんだね
不必要な依存を発生させることになってしまう、密結合が促進されるね
そういう意識のない人間が >>3 のような下痢便コードを書いてしまうんだね
254デフォルトの名無しさん
2020/07/11(土) 11:18:39.33ID:fJlL8BSP255デフォルトの名無しさん
2020/07/11(土) 11:19:08.47ID:fJlL8BSP256デフォルトの名無しさん
2020/07/11(土) 11:20:35.92ID:JFnadz6+ >>254
言ってるじゃん、アクセス修飾子とメソッドの仕様が明確になってるかは無関係
言ってるじゃん、アクセス修飾子とメソッドの仕様が明確になってるかは無関係
257デフォルトの名無しさん
2020/07/11(土) 11:21:19.03ID:JFnadz6+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にしてもいいよね
それと一緒
言ってないよ?
外部からアクセスしないならprivate。
でも仕様がはっきりしてるならpublicにしていい。
facebookでもプライベートな話は他人に見せる必要がないからprivateだけど
別に他人に見せてもいいならpublicにしてもいいよね
それと一緒
261デフォルトの名無しさん
2020/07/11(土) 11:26:14.03ID:JFnadz6+ パッケージプライベートだと同じパッケージからならアクセスして良いというメッセージを
開発者に伝えてしまうから望まない依存を生んでしまうリスクはある
どのオブジェクトからも参照されたくない場合もあるからな、やはりprivateをテストできない
言語が遅れてるだけなのだろうね
開発者に伝えてしまうから望まない依存を生んでしまうリスクはある
どのオブジェクトからも参照されたくない場合もあるからな、やはりprivateをテストできない
言語が遅れてるだけなのだろうね
262デフォルトの名無しさん
2020/07/11(土) 11:26:21.59ID:fJlL8BSP263デフォルトの名無しさん
2020/07/11(土) 11:27:14.70ID:JFnadz6+264デフォルトの名無しさん
2020/07/11(土) 11:27:56.48ID:fJlL8BSP >>261
privateをテストできる言語っていうのは
単に全てpublicになっているのと一緒
アンダースコアで、これはアクセスできるけど
privateという意味ですよと言ってるのと何も変わらないよ
privateをテストできる言語っていうのは
単に全てpublicになっているのと一緒
アンダースコアで、これはアクセスできるけど
privateという意味ですよと言ってるのと何も変わらないよ
265デフォルトの名無しさん
2020/07/11(土) 11:28:00.37ID:JFnadz6+ >>262
Javaの話ですよ
Javaの話ですよ
266デフォルトの名無しさん
2020/07/11(土) 11:28:48.86ID:JFnadz6+267デフォルトの名無しさん
2020/07/11(土) 11:29:55.28ID:fJlL8BSP >>263
仕様がはっきりしてるからpublicにするんじゃなくて
仕様をはっきりさせれば、publicにしてもよいと言ってるだけ
理由がなければprivateのままでもいい。どちらでもいい。
テストしたい=理由。理由があるならpublicにしていい。
> なぜならば密結合になってしまうから
テストコードから仕様がはっきりしないprivateをテストすること=密結合
密結合を避けるためにも、公開されたインターフェースにするのが正しい
仕様がはっきりしてるからpublicにするんじゃなくて
仕様をはっきりさせれば、publicにしてもよいと言ってるだけ
理由がなければprivateのままでもいい。どちらでもいい。
テストしたい=理由。理由があるならpublicにしていい。
> なぜならば密結合になってしまうから
テストコードから仕様がはっきりしないprivateをテストすること=密結合
密結合を避けるためにも、公開されたインターフェースにするのが正しい
268デフォルトの名無しさん
2020/07/11(土) 11:30:13.81ID:JFnadz6+ RustやGoはprivateもテストできるよって言ってる人いたから
最近の言語ではprivateもテストできるんだーって思ってたけど
命名規則でアクセス修飾子の代わりを果たしてるんだってことだったの? それは知らなかったなー
最近の言語ではprivateもテストできるんだーって思ってたけど
命名規則でアクセス修飾子の代わりを果たしてるんだってことだったの? それは知らなかったなー
269デフォルトの名無しさん
2020/07/11(土) 11:30:22.00ID:fJlL8BSP270デフォルトの名無しさん
2020/07/11(土) 11:30:59.34ID:fJlL8BSP >>268
ああ、人から聞いただけなのねw
ああ、人から聞いただけなのねw
271デフォルトの名無しさん
2020/07/11(土) 11:31:27.48ID:JFnadz6+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:fJlL8BSP276デフォルトの名無しさん
2020/07/11(土) 11:38:14.80ID:JFnadz6+ >>275
そうすると君はMainを勘違いしてた人か、僕と仲直りしますか?
そうすると君は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#が対応しそうな予感はある
テストオブジェクトからのみ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メソッドを書きますか?
クラス図にprivateメソッドを書きますか?
285デフォルトの名無しさん
2020/07/11(土) 12:11:12.25ID:JFnadz6+ クラス内を調査してprivateメソッドを列挙して
同クラス内のprivateメソッドをテストするコードを列挙して
カバレッジを計測するツールがあればみんな幸せになれそうですね
カバレッジ計測ツールがprivateメソッドには今の時点で対応してないって
だけでprivateメソッドのテスト自体は >>5 のように書けますから
ツールの開発が遅れてるだけなのかも知れませんね
同クラス内のprivateメソッドをテストするコードを列挙して
カバレッジを計測するツールがあればみんな幸せになれそうですね
カバレッジ計測ツールがprivateメソッドには今の時点で対応してないって
だけでprivateメソッドのテスト自体は >>5 のように書けますから
ツールの開発が遅れてるだけなのかも知れませんね
286デフォルトの名無しさん
2020/07/11(土) 12:12:35.29ID:fJlL8BSP >>285
もしかしてお前カバレッジの意味がわかってないんじゃね?
publicメソッドの中からprivateメソッドが呼び出された時
privateメソッドの行は実行された=カバレッジとして計測される
ってことは知ってますよね?
もしかしてお前カバレッジの意味がわかってないんじゃね?
publicメソッドの中からprivateメソッドが呼び出された時
privateメソッドの行は実行された=カバレッジとして計測される
ってことは知ってますよね?
287デフォルトの名無しさん
2020/07/11(土) 12:15:06.18ID:fJlL8BSP288デフォルトの名無しさん
2020/07/11(土) 12:15:29.92ID:JFnadz6+289デフォルトの名無しさん
2020/07/11(土) 12:16:06.22ID:fJlL8BSP290デフォルトの名無しさん
2020/07/11(土) 12:17:45.08ID:JFnadz6+291デフォルトの名無しさん
2020/07/11(土) 12:18:51.24ID:fJlL8BSP292デフォルトの名無しさん
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:fJlL8BSP298デフォルトの名無しさん
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のテストはやったほうが良いです。
publicメソッドはオブジェクトのインターフェイスなので
publicメソッドをテストすることをインターフェイステストというべきです
オブジェクト指向で、インターフェイスが関わるのはオブジェクトのコラボレーションが行われるときです
一方でprivateメソッドはpublicメソッドが作られるのと同じか、もしくはそれ以前に作られます
publicメソッドが正しく動作することの前提としてprivateメソッドが正しく動作することがあるので
privateメソッドをテストすることをインプリメンテーションテストという言うべきです
privateメソッドを使用するのは同じオブジェクト内のメソッドなので、オブジェクトのコラボレーションとは直接の関係がありません
単体テストと言っても対象のメソッドによって、テストが必要な時期が異なるわけです
privateのテストはクラスが作られる前に行われますし、publicのテストがクラスは作られた後に行われます
あとはコストの話です、結合テストがすべて通るなら単体テストは必要ありませんし本番稼働がすべてうまくいくならテスト自体必要ありません
後の工程で発覚するほど手戻りが大きくなりコストが膨らむので段階を追ってテストしていきましょうというのが基本的な考え方です
privateのテストをすることによってpublicのテストの手戻りが少なくなることはあるんです
privateのテストはやったほうが良いです。
303デフォルトの名無しさん
2020/07/11(土) 12:45:36.89ID:fJlL8BSP >>301
保守する時はコードから生成できるので完璧なのはいらない
だから本当に必要なのはクラス概要図だろう
図としてみたい場合、メソッドすべてがずらずら書かれていても邪魔なだけ
ましてやprivateなんていらない。
図としてみたい場合、本当に見たいのは関連だろう?
保守する時はコードから生成できるので完璧なのはいらない
だから本当に必要なのはクラス概要図だろう
図としてみたい場合、メソッドすべてがずらずら書かれていても邪魔なだけ
ましてやprivateなんていらない。
図としてみたい場合、本当に見たいのは関連だろう?
304デフォルトの名無しさん
2020/07/11(土) 12:46:11.05ID:fJlL8BSP305デフォルトの名無しさん
2020/07/11(土) 12:46:51.38ID:JFnadz6+ 頑張って書いた、これはもう論文と言って良いのでは
僕はプログラミングのテストについて博士号もらっても良いのでは
少なくともこのスレではテストに一番詳しい
僕はプログラミングのテストについて博士号もらっても良いのでは
少なくともこのスレではテストに一番詳しい
306デフォルトの名無しさん
2020/07/11(土) 12:48:09.47ID:JFnadz6+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
僕は単体テストやったこと無い
カバレッジの計測もしたことないからわからない
僕は知りません
>>286
僕は単体テストやったこと無い
カバレッジの計測もしたことないからわからない
僕は知りません
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として公開するのでなければ別途テストを追加する必要は基本的にない
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
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 メソッドのテストを記述することはできるが、
根本的な依存関係の問題を先延ばしにしているだけである。その種のごまかしをすると、
コードがどの程度悪くなっているのかに気付きにくくなってしまう。
第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を前提とするところにあるのじゃないかと漠然と思ってる
まだぼんやりとして言語化できる段階にない
和田メソッドを熟知した人なら和田メソッドの危険性を知ってると思うのだよ
和田メソッドの限界はどこにあるのだろうね
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
何が危険かわかってない人のような言い方だなw
329デフォルトの名無しさん
2020/07/11(土) 21:59:07.66ID:fJlL8BSP330デフォルトの名無しさん
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の話をしてるんだから当然なんだが
では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 How to unit test private methods in BDD / TDD?
https://stackoverflow.com/questions/1583363/how-to-unit-test-private-methods-in-bdd-tdd
https://stackoverflow.com/questions/1583363/how-to-unit-test-private-methods-in-bdd-tdd
332デフォルトの名無しさん
2020/07/11(土) 22:05:21.04ID:fJlL8BSP Don’t Test Private Methods
https://dzone.com/articles/dont-test-private-methods
https://dzone.com/articles/dont-test-private-methods
333デフォルトの名無しさん
2020/07/11(土) 22:28:49.46ID:JFnadz6+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:fJlL8BSP337デフォルトの名無しさん
2020/07/11(土) 22:37:09.78ID:JFnadz6+338デフォルトの名無しさん
2020/07/11(土) 22:39:35.32ID:wIsoNFzM もう人のフンドシで相撲をとるのはやめろ
339デフォルトの名無しさん
2020/07/11(土) 22:40:20.87ID:fJlL8BSP340デフォルトの名無しさん
2020/07/11(土) 22:42:56.22ID:JFnadz6+ 世の中に銀の弾丸は無いからね
何事にも限界はあるでしょ、一般論だよ
IQ低い人はすぐ被害妄想いだくから面倒
何事にも限界はあるでしょ、一般論だよ
IQ低い人はすぐ被害妄想いだくから面倒
341デフォルトの名無しさん
2020/07/11(土) 22:43:21.62ID:JFnadz6+ もっと知性あふれる人と知的な会話をしたいなー
342デフォルトの名無しさん
2020/07/11(土) 22:44:09.34ID:fJlL8BSP >>340
一般論だからこそ、TDDの批判にはならないんだよ。
一般論だからこそ、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:fJlL8BSP348デフォルトの名無しさん
2020/07/11(土) 22:50:38.71ID:JFnadz6+349デフォルトの名無しさん
2020/07/11(土) 22:51:31.82ID:fJlL8BSP350デフォルトの名無しさん
2020/07/11(土) 22:52:25.23ID:JFnadz6+ > >>337
> まるで和田メソッド(TDDの常識的な手法)に
> 限界があるような言い方してるじゃんw
>
> 自分が何も知らないのに、限界があるんじゃないかという
> 疑いをかけるのはだめ。
疑いをかけられてないと思ってる人間が疑いをかけるのはだめとは言わんでしょう
> まるで和田メソッド(TDDの常識的な手法)に
> 限界があるような言い方してるじゃんw
>
> 自分が何も知らないのに、限界があるんじゃないかという
> 疑いをかけるのはだめ。
疑いをかけられてないと思ってる人間が疑いをかけるのはだめとは言わんでしょう
351デフォルトの名無しさん
2020/07/11(土) 22:53:46.53ID:fJlL8BSP >>350
日本語が理解できてないねw
日本語が理解できてないね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は現代では否定されていて
単体テストよりもシステムテストを重視したほうが製品の品質はあがるわけですな
なるほど、つまり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:6LAoyHzZ371デフォルトの名無しさん
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
新しい理論や手法を提唱する人には良くあることだと思うけど、その理論はある前提、ある側面では正しいけど、常に無条件に適用することは正しくないと本人は分かっていて、敢えてそういうことはわざわざ詳しくは説明しない。自分の論が有用な物だと主張したいがため、嘘はつかない範囲で相手が勝手に誤解してすごいと思わせるような物言いをする。
で、その理論に感銘を受けた人の一部が、理論の表面的な効能だけをありがたく受け取って問題点や前提条件などは正しく理解しないまま、受け売りの知識を他所で披露する。
そこで議論になると、本質をちゃんと理解してないまま自説を擁護しようとするから、無理が生じたり話が噛み合わなかったりする。
という流れでイマココなのかなと思う。
897+1 :デフォルトの名無しさん [↓] :2020/07/05(日) 11:28:59.86 ID:YdQ981ul
>>870
新しい理論や手法を提唱する人には良くあることだと思うけど、その理論はある前提、ある側面では正しいけど、常に無条件に適用することは正しくないと本人は分かっていて、敢えてそういうことはわざわざ詳しくは説明しない。自分の論が有用な物だと主張したいがため、嘘はつかない範囲で相手が勝手に誤解してすごいと思わせるような物言いをする。
で、その理論に感銘を受けた人の一部が、理論の表面的な効能だけをありがたく受け取って問題点や前提条件などは正しく理解しないまま、受け売りの知識を他所で披露する。
そこで議論になると、本質をちゃんと理解してないまま自説を擁護しようとするから、無理が生じたり話が噛み合わなかったりする。
という流れでイマココなのかなと思う。
>>372
昔の言い方でいうところの「東大話法」というやつですね…
昔の言い方でいうところの「東大話法」というやつですね…
374デフォルトの名無しさん
2020/07/13(月) 00:50:54.57ID:b4eaK6qk375デフォルトの名無しさん
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:7vLZz4H7380デフォルトの名無しさん
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を使って書き直す感じ
TDDはプロトタイピングと組み合わせると良いかもね
テスト書かずに概ね正確に動作するコードを書いた後に
ブラッシュアップする目的でTDDを使って書き直す感じ
386デフォルトの名無しさん
2020/07/16(木) 12:34:19.44ID:PwJLBkvh TDDを布教する人が何回も同じコード書いてうまくなっていくように
書き捨てたコードの数だけ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的なアプローチが有効だと思うが
そういうやり方にこそ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:wRjhKBiZ395デフォルトの名無しさん
2020/07/20(月) 18:19:36.42ID:M9WZmhVk リフレクション使え
終わり
終わり
396デフォルトの名無しさん
2020/07/24(金) 00:52:33.29ID:NBbGzvfl397デフォルトの名無しさん
2020/07/26(日) 01:00:24.09ID:5rw0opQZ 相変わらずオブジェクト指向信じて
頑張ってるJavaプログラマさん達に
お伺いしたいんだけどさぁ
Javaでオブジェクトをsystem.out.printしても
変な文字列出てくるだけでオブジェクトの中身見れないよね?
これってあんたらの好きな「カプセル化」のせいでしょ?
これ新人にはめっちゃ不人気でみんなJavaディスってんだよね。
一方JavaScriptやPythonは
オブジェクトをconsole.logするとオブジェクトの中身
全部一目瞭然に見れるし▶ボタンで折りたたみとかも出来
ちゃうわけよ。
Pythonは折り畳めないけどそれでも見やすいよ。
こんな簡単な揺るがぬ真実を説明するのに
「コンストラクタ」とか「ポリモーフィズム」とか
「メソッド」「インタフェース」「継承」
「オーバーライド」こんなクソみたいな単語を一切使わなくても
簡単に説明できるわけ。
これでJavaScriptやPythonはイケてる言語で
Javaやオブジェクト思考は糞だって事が分かったね。
誰でも簡単に理解できるよね。
頑張ってる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されるかどうかはカプセル化とは関係ない
標準でオブジェクトの中身がprintされるかどうかはカプセル化とは関係ない
400デフォルトの名無しさん
2020/07/26(日) 02:14:47.15ID:uGb+RxKs p obj
Ruby なら、これでインスタンスの内容が分かる
この時に、Object ID みたいな謎の文字が表示されて困る場合は、
Object#inspect をオーバーライドして、好きな内容に変える
これは、たいていの言語の「Effective 何々」という本に書いてある。
まず最初に、表示メッセージを分かりやすいように、オーバーライドしろって
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するとオブジェクトの中身
> 全部一目瞭然に見れるし?ボタンで折りたたみとかも出来
> ちゃうわけよ。
すてきなデバッガです
> 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のクライアントでもサーバでも使われていて
日進月歩で進化している最も熱い言語
Javaよりも開発者多いのじゃないかな
PythonはAIで使われているし大学の授業でも使われていて
それまでC言語で教えてた内容をPythonで教えるようにしたら
学生の成績が飛躍的に上がったという話がある
人間の認知能力に最適な言語
JavaScriptはWebのクライアントでもサーバでも使われていて
日進月歩で進化している最も熱い言語
403デフォルトの名無しさん
2020/07/26(日) 10:45:55.24ID:XQciIU0B Javaは昔はオブジェクト指向一筋の堅物みたいな感じだったけど
最近はラムダ式やStream、CompletableFutureの導入など
どちらかというと関数型の方に傾倒していて、オブジェクト指向と関数型の
良いとこ取りをしようとしてる
最近はラムダ式や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の習慣は誠に遺憾
メソッドを宣言するときは引数はできるだけ広い型
戻り値はできるだけ狭い型
にすることで他のオブジェクトと協調しやすいプログラムができる
なんでもかんでもインターフェイス使おうとする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:10XNhQ52428デフォルトの名無しさん
2020/07/29(水) 11:38:43.76ID:yJ6wpcWu 自分の理解能力の無さを相手が無能だからと責任転嫁するココナツ
429デフォルトの名無しさん
2020/07/29(水) 11:39:49.67ID:yJ6wpcWu430デフォルトの名無しさん
2020/07/29(水) 11:41:33.11ID:1IRv8wde で、結局のところ
Javaで「単体で平置きできる関数」って何なの?
コードで示してくれるといいんだか
Javaで「単体で平置きできる関数」って何なの?
コードで示してくれるといいんだか
431デフォルトの名無しさん
2020/07/29(水) 11:42:06.25ID:yJ6wpcWu >>430
() -> "coconut"
() -> "coconut"
432デフォルトの名無しさん
2020/07/29(水) 11:43:59.64ID:Lu0VWFvI >>431
んん? それどこに置いてるの?
んん? それどこに置いてるの?
433デフォルトの名無しさん
2020/07/29(水) 11:54:07.92ID:10XNhQ52434デフォルトの名無しさん
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);
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つの意味にしかならないが他人はお前よりモノを知ってるから第一級函数なのかラムダ式なのかそれとも自分が知らない別の概念なのか判断できないんだよ
馬鹿は1つしかモノを知らないから適当に言っても1つの意味にしかならないが他人はお前よりモノを知ってるから第一級函数なのかラムダ式なのかそれとも自分が知らない別の概念なのか判断できないんだよ
442デフォルトの名無しさん
2020/07/29(水) 18:32:59.18ID:T5TGNuPi 結局単にラムダ式のことを言おうとしてたん?
それだけのことをなぜ平置きとか言い出しちゃったのかなw
見苦しいからもうこれ以上レスいらんぞ
それだけのことをなぜ平置きとか言い出しちゃったのかな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://itest.5ch.net/mevius/test/read.cgi/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() {
}
こうゆう関数併記するスタイルの事じゃないの?
プログラミングのお題スレ Part18
http://itest.5ch.net/mevius/test/read.cgi/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
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上やセッションとかで
持つくらいで大体は事足りる
クラスのフィールドなんてほとんど使わんよ
引数と戻り値
配列 連想配列をとことん突き詰めれば
大抵の事はなんでも出来る。
これが構造化プログラミング
汎用的な機能を提供する
与える引数だけが戻り値を決めるような
純粋な関数を1つくればDRYになっていいものを、
何らかの意図を持った特化した関数を
幾つも定義しなければならない
意味がわからない。
インスタンスには極力状態を持たせない方が
圧倒的にバグが少ない
UI制御の状態ならGUI上だけで
本当に重要な状態ならDB上やセッションとかで
持つくらいで大体は事足りる
クラスのフィールドなんてほとんど使わんよ
引数と戻り値
配列 連想配列をとことん突き詰めれば
大抵の事はなんでも出来る。
これが構造化プログラミング
452デフォルトの名無しさん
2020/07/29(水) 23:41:24.99ID:JOuph4+C ttps://i.imgur.com/qRx3DMV.gif
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と連携してくれれば楽なのにね
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
お前はもう死んでいる
you == not Alive
お前はもう死んでいる
463デフォルトの名無しさん
2020/07/31(金) 00:38:15.14ID:91XEAcCM464デフォルトの名無しさん
2020/07/31(金) 00:57:13.70ID:QZ7aSShZ465デフォルトの名無しさん
2020/07/31(金) 01:01:24.69ID:QZ7aSShZ466デフォルトの名無しさん
2020/07/31(金) 07:44:49.12ID:0J+iX777467デフォルトの名無しさん
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にしてしまって大混乱
プライベートメソッドをテストせざるを得なくなる
馬鹿が書くと変なものを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:ZqZOxFea474デフォルトの名無しさん
2020/08/03(月) 01:10:10.92ID:WN+omvah475デフォルトの名無しさん
2020/08/30(日) 15:04:18.01ID:i3Iv6gG3 >>397
>相変わらずオブジェクト指向信じて
>頑張ってるJavaプログラマさん達に
>お伺いしたいんだけどさぁ
ならば「チンポがシコシコする」という日本語表現は、文法的に正しいのか?
チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。
オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。
違うか?
「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!
>相変わらずオブジェクト指向信じて
>頑張ってるJavaプログラマさん達に
>お伺いしたいんだけどさぁ
ならば「チンポがシコシコする」という日本語表現は、文法的に正しいのか?
チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。
オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。
違うか?
「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!
476デフォルトの名無しさん
2020/11/16(月) 10:13:57.47ID:PECNoX7v >>397
要するに君のスペックや君が手掛けてきたシステムは
オブジェクト指向を検討する程のものじゃなかったし
今後もオブジェクト指向を検討するようなシステムに
君が係ることもなんだろうということは理解できた
要するに君のスペックや君が手掛けてきたシステムは
オブジェクト指向を検討する程のものじゃなかったし
今後もオブジェクト指向を検討するようなシステムに
君が係ることもなんだろうということは理解できた
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 【映画】『クレヨンしんちゃん』 中国で公開延期 対日報復、エンタメに波及 [冬月記者★]
- 友達「ゲームやるからパソコン買えよ!」俺「おう!」友達「これやろうぜ!」(外国の変なゲーム)俺「なにこれ…」
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 日経時間外、5万円割れ 垂直落下始まる [402859164]
- ウッドデッキで調子こいてたやついたじゃん
- えんやすー
- 宇宙飛行士 vs 数学者
