[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 08/04 02:09 / Filesize : 316 KB / Number-of Response : 1037
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2020/06/18(木) 23:47:36.69 ID:l/2SQUll.net]
カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、オブジェクトの実際の型を隠蔽したりすることをいう。

かつて偏差値の低い学校向けの情報処理系教科書において「カプセル化は大変すばらしいものであり絶対に使うように」と大体的に宣伝された。

一方、カリフォルニア大学バークレー校の有識者を中心とした「インターネットを作った人たち」は「階層化の有害性」として「カプセル化は絶対にやめろ」としている。

https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)

838 名前:デフォルトの名無しさん [2020/07/05(日) 06:38:43.59 ID:9F15TCk0.net]
口調が気持ち悪い人は相手しても仕方ないからほっとくとして、上の例だと(に限らず)
funcSとfuncBをテストするためにはコード弄らなきゃいけないし、そもそもtestChin()で
リクワイアメントとエッジケースは全てテストするんだから、無駄にテストが倍以上に
なるしそれも手動になる。

普通のケースだとtestChinに対するテストコード書いて、変更があればそれを流す形になる。
上にさんざコピペが貼られたテストツールはそういうのを自動で流すツール。

テストケース流したいからfuncSとfuncBをパブリックにするというのはカプセル化
できてないし、ましてコード弄ってまでテストするのを手順化するというのは普通はやらない。

書いてる最中にコードちょろっと入れて確認するようなことはあって、それもユニット
テストといえばユニットテストだが、手法としてプロジェクト単位で公式にやるような
ものでは普通は無い。

車のブレーキ制御とかならそこまでやって欲しいが、OOとかカプセル化とはちょっと
違う話。

839 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:42:42.57 ID:M+BkbwUs.net]
> funcSとfuncBをテストするためにはコード弄らなきゃいけないし、そもそもtestChin()で
public経由でテストできるだろw

840 名前:デフォルトの名無しさん [2020/07/05(日) 06:45:32.12 ID:9F15TCk0.net]
>public経由でテストできるだろw
と、いうわけでPublicをテストすれば十分だしPrivateは(普通は)やらないという事を
やっとご理解いただけたようですな。

>>768ではこんな事言ってましたが。
>当然ソースを書いて(書き換えて)テストするに決まってるじゃん

841 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:47:04.12 ID:M+BkbwUs.net]
>>810
他の言語を勉強したほうがいいぞ
どうもお前は、絶対に来るはずがない値が引数に渡された時、
そのテストしろって言ってるようだからな

「絶対にありえない値」なんだから仕様なんて作らない
他の型がない言語だったら、引数に渡されるオブジェクトなんか
それこそ無限に値なんてありえるだから

privateでも、ソースコードを修正して引数渡せるなら
そのテストをかけって言ってるようなもん

842 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:47:52.42 ID:M+BkbwUs.net]
>>812
> と、いうわけでPublicをテストすれば十分だしPrivateは(普通は)やらないという事を

頭悪そうだなw

この場合publicメソッドを呼んだらprivateメソッドを呼び出すんだから
privateメソッドのテストになってるだろ

843 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:47:57.37 ID:9F15TCk0.net]
少なくともグーグルの面接で絶対こないからテストしないとか言ったら
速攻落ちるよ。むしろ絶対こないのをやるものだからね。

844 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:49:10.31 ID:M+BkbwUs.net]
>>768

> まさかpublic・privateメソッドのテストをテスト工程でやる、
> public・privateメソッドを書いた人と別の人がやるって思ってないか?
>
> public・privateメソッドを実装中に、その作ったもののが正しく動くかどうか
> public・privateメソッドのソースを書いた人が、書いてる段階でテストするんだから
> 当然ソースを書いて(書き換えて)テストするに決まってるじゃん

と言ってますが、今の話と何の関係があるんですか?
「誰がテストするか」の話なんですが?

845 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:50:26.40 ID:M+BkbwUs.net]
>>815
だからpublicメソッド経由でテストしてるじゃんw

お前は、内部でprivateメソッドを呼び出しているから
publicメソッドのテストには、privateメソッドがそんな値を返そうが
そのテストは書かないのか?

846 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:53:15.16 ID:M+BkbwUs.net]
例えば>>805 の話だと
testChinがpublicメソッド、そのメソッドのテストとして
引数に1(なんで配列か知らんが)となるものを渡したら
Smallestが返ってくることというテストを書く

それは実際には内部でprivateメソッドを呼び出しているのだからfuncSのテストになってる
カバレッジを計測したら、privateメソッドであるfuncSの該当行は実行した(テストした)と計測される。



847 名前:デフォルトの名無しさん [2020/07/05(日) 06:54:07.51 ID:9F15TCk0.net]
え、コーディング中にちょろっとコード書いて動作確認とかを「テスト」って
呼んでたの?そりゃ噛み合わないわ。

開発手法の話をしてる時に「テストする」というからにはテストケースを書いて、
手動にしてもコードにしても実行したログくらいは残すものだが。

君はメソッド作る時エッジケースやらネガティブテストやら考慮に入れつつケースを
書いて実行したログも残してるの?変更のたびにやるの?やらんだろ。

848 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:56:15.75 ID:M+BkbwUs.net]
>>819
どれにレスしてるの?
ユニットテスト(かつ自動テスト)の話しかしてないんだが
お前がどこを呼んでそう思ったのか
具体的に指摘してみて

849 名前:デフォルトの名無しさん [2020/07/05(日) 06:56:44.73 ID:9F15TCk0.net]
publicをテストしたらprivateも呼ばれてるからprivate単位でテストしてる!って
ブレブレやなw

publicから呼ばれないprivateなんて一体誰がなんのために書くんだよw

850 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:57:27.80 ID:M+BkbwUs.net]
>>819
> 君はメソッド作る時エッジケースやらネガティブテストやら考慮に入れつつケースを
> 書いて実行したログも残してるの?変更のたびにやるの?やらんだろ。

変更のたびって、お前変更のたびにメソッドの仕様が変わるのか?
いきあたりばったりで開発してるんだな

851 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:58:49.78 ID:M+BkbwUs.net]
>>821
最初からそう言ってるだろ?
ブレるも何も、最初からそう言ってる



> 私の

852 名前:回答
> 短くまとめると、プライベートなメソッドのテストを書く必要は 無い と考えています。
>
> ほとんどのプライベートメソッドはパブリックメソッド経由でテストできるからです。プライベートメソッドは実装の詳細であり、自動テストのターゲットとなる「外部から見た振る舞い」ではありません。
[]
[ここ壊れてます]

853 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:00:51.32 ID:M+BkbwUs.net]
あ?まさかprivate関数の処理のテストをすればいいのに
private関数単独ででテストしなきゃだめだって思ってるのかw

あはは、関数単位でテストするのがユニットテストだって思ってるようだな
こりゃ、お・わ・ら・い・だw

854 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:02:37.00 ID:BTTSshKd.net]
メソッド単位でテストしろって言うのが組み込みおじさんだから話にならんよ

855 名前:デフォルトの名無しさん [2020/07/05(日) 07:03:05.56 ID:9F15TCk0.net]
なんだこいつ気持ち悪い。

856 名前:デフォルトの名無しさん [2020/07/05(日) 07:07:17.25 ID:9F15TCk0.net]
日本語もjavaも通じないからどうにもならない。
突然噛み付いてくる気持ちの悪いのは100%の確率でおかしいな。



857 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:08:18.45 ID:M+BkbwUs.net]
というふうに「技術」の話にレスができなくなったら
「人」(=俺)の話にすり替えるのが常套手段な

858 名前:デフォルトの名無しさん [2020/07/05(日) 07:13:21.25 ID:9F15TCk0.net]
というかお前は誰だよ。Private単位でコード書き換えてもやるって言ってる
人間がいたからPrivate単位では通常のビジネス系ではやらないという流れなのに
突然「お前は素人だあ!」とか噛み付いてきても知らんがな。

タブもスペースもトランケートされる2ちゃんでインデントがとかくだらない
ことでマウント取りにくる暇があったらまず日本語を学べ。

以上。

859 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:21:09 ID:BTTSshKd.net]
「privateメソッド」を直接テストしろって言う人はどうするのがいいって言うの?

a 全てprivateメソッドに対しても外部にリフレクション等を使用したテストを書くべき
b privateメソッドにアクセスできるクラスなどにpublicなテストコードを書くべき
c もっと言い方法がある、こうだ!

860 名前:デフォルトの名無しさん [2020/07/05(日) 07:22:11 ID:LRfXHt7v.net]
>>830
王家秘伝の技がある。

861 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:24:08 ID:M+BkbwUs.net]
>>830

>>798 じゃねーの?w

> 完ぺきにテストしたからといって製品の完全性を保証することはできません。
> したがってテストしないほうが良いのです。

つまり

privateにしたらテストできません。だからしないほうがいいのです。
完璧にテストした所で落ちない飛行機はありません
したがってテストしないほうがいいのです

862 名前:デフォルトの名無しさん [2020/07/05(日) 07:24:58 ID:9F15TCk0.net]
しかしよくチンコのサイズテストwにマジで噛みつけるもんだ。

863 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:29:06 ID:M+BkbwUs.net]
>>833
あ、そういうテストだったの?w
コードしか見てないよw

864 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:30:17.21 ID:M+BkbwUs.net]
Chinってちんこのことだったんだな
funcSとかfuncBとかfoo、barみたいに意味がない単語じゃん
コードがクソすぎて意味が伝わらないいい例だな

865 名前:デフォルトの名無しさん [2020/07/05(日) 07:34:08.81 ID:9F15TCk0.net]
無い場合You are a womanで9以下なら小さい、16越えりゃWow!で名前が
チンテスターなんだからわかってる人間は多いだろうな。

866 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:36:44.58 ID:M+BkbwUs.net]
>>836
じゃあint型の配列のlen(長さ)ってどういうこと?
配列がnullなら女で配列が複数あれば男?
何が複数なの?



867 名前:デフォルトの名無しさん [2020/07/05(日) 07:36:59.87 ID:9F15TCk0.net]
ちなみにfuncなんとかというのは君の好きなグーグルあたりでも例ではよく使うわな。
BとSもbigとsmallだろうと英語得意なら当たりがつくけどね。なぜABじゃなくてBS
なのか。そもそもoutに出てんだし。

868 名前:デフォルトの名無しさん [2020/07/05(日) 07:38:39.33 ID:9F15TCk0.net]
>>837
行があればChinkoクラスを作るとこだがスペースいらないで
intじゃなくてヌルポが出るものがarrayだからそれの長さで表してるだけだよ。

869 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:44:01.87 ID:M+BkbwUs.net]
> intじゃなくてヌルポが出るものがarrayだから
・・・

Java知らんのか?整数かつオブジェクトでも使えばいいじゃないか
具体的には教えてやらんよ。自分で勉強しな

870 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:46:53.71 ID:wXNAUX4A.net]
privateメソッドだからテストしないとか言ってるやつはキチガイ
早く死んでね

871 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:49:38.56 ID:y7MN16M9.net]
>>824
いや、やってもいいだろ
お前がやりたくないのは「たまたま」VisualStudioでやりにくいってだけの理由だろ
早く死んでね

872 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:53:17 ID:M+BkbwUs.net]
こういう事やって、NULLチェックが4倍に増

873 名前:えたー、テストも増えたーって
言ってるやつがいるなんて驚き。馬鹿かとw 以下擬似コードな

public func(value) {
 // valueのNULLチェック
 処理
 処理
 処理
}

public func(value) {
 // valueのNULLチェック
 foo(value);
 bar(value);
 baz(value);
}
private foo(value) {
 // valueのNULLチェック
 処理1
}
private bar(value) {
 // valueのNULLチェック
 処理2
}
private baz(value) {
 // valueのNULLチェック
 処理3
}
[]
[ここ壊れてます]

874 名前:デフォルトの名無しさん [2020/07/05(日) 07:56:16 ID:LRfXHt7v.net]
プロは俺だけだったか。

875 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 08:03:19.96 ID:FjEgCO9/.net]
そもそもprivateメソッドだからテストしないとか言ってるキチガイにまともな返答なんかいらない

そんなのどこの職場でも認められるわけないから
publicメソッド通したprivateメソッドに自分が想定したケースの値が全部入る保証なんかない
ある特定のケースのみそのメソッドの処理が欲しいときにしか呼んでないことあるだろ
つまりメソッド自体のテストはできてないしその方法でコードカバレッジ100%は無理だし
そもそもpublicから呼び出したprivateのコードカバレッジを100%にするなんて
作業が狂気過ぎてまともな脳みそ持ってるやつならやる前に無駄って理解できる

バカは早く死んでね

876 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 08:06:02.24 ID:M+BkbwUs.net]
そもそもprivateメソッドだからテストしないとか言ってるキチガイには
この言葉を授けよう

t-wadaのブログ
https://t-wada.hatenablog.jp/entry/should-we-test-private-methods#%E3%83%91%E3%83%96%E3%83%AA%E3%83%83%E3%82%AF%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E7%B5%8C%E7%94%B1%E3%81%A7%E3%83%86%E3%82%B9%E3%83%88%E3%81%99%E3%82%8B


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

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

ただし、この議論にはプロダクトコードもテストコードも自分で書いていることという前提があります。プロダクトコードに手を入れられず、テストコードも無いレガシーコードに対しては、リフレクションは強力な手段です。

プライベートなメソッドのテストに関しては、4つの考え方があります。

パブリックメソッド経由でテストする
別クラスのパブリックメソッドとする
テスト対象の可視性を(やや)上げる
プライベートのまま、リフレクションでアクセスしてテストを書く
パブリックメソッド経由でテストする
多くの場合、そのクラスのパブリックメソッド経由でプライベートメソッドのテストも同時に行えます。テストできているか不安があるならテストカバレッジを確認しましょう。



877 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 08:10:31.93 ID:FjEgCO9/.net]
>>846
そいつプロジェクトで仕事したことあるのか怪しい部類じゃね?

878 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 08:16:36 ID:IUsMolpf.net]
publicを通した範囲でしかできないprivateのテストは網羅されてなく
メソッドの単体テストとして十分なテストは行われていません
あなたの意見は採用できません
できれば実際のプロジェクトを5つぐらい経験されてはいかがでしょうか?

879 名前:デフォルトの名無しさん [2020/07/05(日) 08:25:21.85 ID:9F15TCk0.net]
public通したprivateは単体としては怪しいというのはその通りだけど、
そもそも呼ばれないprivateを書くバカはいないわけで、条件があるから
書いてんだよね。で、条件をpublicの段階でテストするわけだから
ほぼ通ってるわけだよ。

上のチンコテストだとnullから16まで流せば全部通る。

違いは、上の例でprivateにnull突っ込んだらヌルポだわな。そこをテストするのは
コード変えなきゃいけないし、OOの大規模ビジネスソフトではそういうことは
やらない。それをやらなきゃいけない環境なら関数型でもいけるはず。

880 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 08:31:48.84 ID:ckfZDtdO.net]
>>849
できない時点でこの話は終わりさ
やらないわけには行かないんだから
90%できてても残り10%をどうやってもやる方法がないんだから
その方法はどうやっても採用できないし
わざわざする理由もない
別の方法ではできるんだから

881 名前:デフォルトの名無しさん [2020/07/05(日) 08:33:02.53 ID:9F15TCk0.net]
>>840
君のがpublic privateに関しては言ってることは正しいんだが
底抜けのバカだなあ。

整数かつオブジェクトwこのレベルの人と話してたのかw

はあ。。。

なんかいやになっちゃった。

882 名前:デフォルトの名無しさん [2020/07/05(日) 08:35:22 ID:9F15TCk0.net]
>>850
いやだから16まで流せば全部できてるけど。

ビジネス系ではやらないよ。組み込みで全部
テストしなきゃいけないというならわかるので
すれば良い。ただOOの手法とは違う。

デベロッパー千人のところでやってるの?
やってないでしょ?

883 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 09:13:35 ID:iCbhqS6F.net]
通ってればいいっていうなら単体テスト全否

884 名前:閧セろw
結合テストなりで全部やりゃいいって話になる。
[]
[ここ壊れてます]

885 名前:デフォルトの名無しさん [2020/07/05(日) 09:23:53.74 ID:9F15TCk0.net]
>>853
だからその線引きをどこでやるのかっていう事で、
privateまで全部テストケース書いてエッジケースもネガティブも
全部やるなら関数型で良いんだよ。

別にバカにする気は無いし、関数型のが難しい場面もたくさんあるが、
大規模(デベロッパーだけで数百人)のOOプロジェクトやった事ある?

886 名前:デフォルトの名無しさん [2020/07/05(日) 09:30:39.94 ID:9F15TCk0.net]
上のチンコの例で言えば、funcSとfuncBのテストをテストケース書いて
コードを書き換えた上でやってドキュメントなりログなりで残すの?

だったらpublicでやれば良いし、そうやってpublicにするなら関数型でも
おんなじ事でしょ。

チンコがnullなのか16以上そこそこでかいのかまでしか関係ないわけで
privateがnullをハンドリングしてないとか無駄なんだよ。もちろん
命に関わるようなところではそれくらいの厳格さが求められる場合も
あるだろうが、普通のビジネスソフトではそこまでやらない。

他のチームが関わる場所を少なくするためにカプセル化するわけで、
そんな全部publicにしたら意味ないんだよ。



887 名前:デフォルトの名無しさん [2020/07/05(日) 09:41:54.39 ID:LRfXHt7v.net]
弊社はC2カバレッジ100%未満は出荷できませんけどね。

888 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 09:42:35.87 ID:j0cUMVMZ.net]
>>854
線引じゃねーよクソ野郎
publicでたまたま呼ばれた1パターンと
privateの網羅テストが同じになってたまるかアホかよ
クラスのなかにあるのでpublicから呼ばれたときだけ動けば
ルーチンとして不出来でもOKなんてあるわけないだろ
お前はクソだからもう死ねよ

889 名前:デフォルトの名無しさん [2020/07/05(日) 09:45:43.25 ID:9F15TCk0.net]
>>857
まあじゃあ君はprivateまでテストケース書いてやっとけば良いんじゃない?
誰も止めてないし。大規模ビジネスソフトでは世界的に言って普通ではないというだけで。

僕はあんまり関わることのないレベルの世界だけど、まあ多分一生関わらないので
君が良いならそれで良いと思うよ。

890 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 09:51:39.34 ID:BTTSshKd.net]
>>857
君は大変なんだねwテストがんばれーwww

891 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 09:54:43 ID:bzHIXl0a.net]
>>858
落としどころとしてはそんなところで良いんじゃね?
問題なのは「privateはテストするべきではない」なんて変な教義を押しつける人の方なんで。

892 名前:デフォルトの名無しさん [2020/07/05(日) 10:02:55.49 ID:9F15TCk0.net]
>>856
正直QAやってたのは随分前の話だから最近のQAツールは知らんけど、
privateが全部通ってれば100%なわけで、そもそもprivateがある理由は
使われるためなんだから普通は誰も一回も使ってない場合なんかはないわな。
レベルが高くなると通らないケースも出るだろうが。だから線引きってこと。

チンコテストならnullから16までやれば100%通ってる。privateかpublicかって
のは関係ない。ただしprivateはnullをハンドリングしてない。それをどうするかって話。

893 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 10:03:22.77 ID:iCbhqS6F.net]
>>854
お前こそ大規模プロジェクトやったことないだろw
それだけ大規模だと逆にテストコード書かんわ(nttデータとかアクセンチュアとかな)
そんなクソプロジェクトを引き合いに出されても知らんわw

894 名前:デフォルトの名無しさん [2020/07/05(日) 10:05:36.79 ID:9F15TCk0.net]
>>860
「べきでは無い」とは思わないけど、privateをデベロッパーの個人的な
チェックを超えてテストすることを求められるとしたら、何かプロジェクト的に
おかしいとは思う。

895 名前:デフォルトの名無しさん [2020/07/05(日) 10:08:05.85 ID:9F15TCk0.net]
>>862
だから僕もNTTデータとかは知らんと上に書いてるけれども。

アメリカの大規模ソフトは中の人だし、他の会社のデベロッパも何人も知ってるので、
実際にアメリカの業界は知ってる。

君の「クソブロジェクト」ではないプロジェクトは会社名は出す必要はないが
例えばアメリカのERPとかそのレベルでなんなの?

896 名前:デフォルトの名無しさん [2020/07/05(日) 10:09:56.64 ID:9F15TCk0.net]
だいたい質問を質問で返す人は答えるのに不都合がある人。

数百人のデベロッパーのプロジェクトをやったことなくても全く問題は
ないんだが(ロッキードのミサイルの制御の人とか数百人もいないし



897 名前:)、
「あるよ」とは帰ってこない。
[]
[ここ壊れてます]

898 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 10:15:56.23 ID:bzHIXl0a.net]
>>863
だからそれは別の話なんだからさ。
「privateなら必ずしも単体テストする必要はないけどやりたいならやれば?」
これでいいじゃん。

899 名前:デフォルトの名無しさん [2020/07/05(日) 10:19:00.51 ID:9F15TCk0.net]
>>866
ちょっと弱いかな。「普通はやらんけどやりたかったりやる必要があるならやれば?」

くらい?privateを全部テストケース書いてエッジやネガティブやるとなると多くの場合
サグラダファミリアになるし、普通はやらない。

でもやりたいならやれば良いとは思うのでだいたいそういう感じか。

900 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 10:31:49.01 ID:BTTSshKd.net]
組み込みおじさんはそこに義務感を感じ、他者に強要するのだろう
難儀なこった

901 名前:デフォルトの名無しさん [2020/07/05(日) 10:37:41 ID:9F15TCk0.net]
組み込みとかだと多くの場合そもそもOOあんまりいらんと思うのよね。

人工呼吸器の制御とかだときびしくやらないといけないのはわかるし、
やってない人工呼吸器とか俺も付けられたくないけどさw

OOのメソッドとかはちょっと違う話だわな。カプセル化とかは数百人になると
生きてくる。個人的には自分一人の個人プロジェクトでも使うけど。
数年後にまたやる羽目になったりした時に楽なので。

902 名前:デフォルトの名無しさん [2020/07/05(日) 10:45:19 ID:MQ9nuMmc.net]
>>847
それは僕も思ってた
机上の空論っぽいんだよね

903 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 10:53:33 ID:kFjTOHVy.net]
>>867
どこに差があるのかよくわからんが、どちらにしても一行目は問題ないにしても
二行目はここに存在しない敵を攻撃している印象。
いちいち関係ない話を絡めなくてもいいじゃんと思うが、二度も書くということは
そっちが主張したい本音ということかな?

904 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 10:55:30 ID:sn+7aSX4.net]
OOPは理解している人とOOPを理解していない人が単体テストについて不毛な争いをするスレかな?

905 名前:デフォルトの名無しさん [2020/07/05(日) 10:58:45.46 ID:9F15TCk0.net]
>>871
いや、元々がpublicじゃなくてprivate単位でやれという話からなんだからその話だよ。

publicでprivateの分岐通ってるなら良いじゃんといなら誰も否定していないのでは?

逆にprivateで一度も通ってない部分があっても良いじゃんとも言っていないような。
if文書くのに絶対通らない物を書く人いるわけないでしょw

ただ、公式なテストとして、privateのレベルでテストケース書いてログ残してコード
書き換えてコンパイルし直してやるというのは少なくとも普通のビジネスのソフトとしては
一般的なベストプラクティスではないし普通はアメリカの大手一流ではやらないということ。
例外はあるとしても。

906 名前:デフォルトの名無しさん [2020/07/05(日) 11:03:24.23 ID:LRfXHt7v.net]
土台が腐ってたら。
全部検査するほうが楽。



907 名前:デフォルトの名無しさん [2020/07/05(日) 11:04:34.60 ID:9F15TCk0.net]
幸いそういうのには当たったことはないw
上に書いたように例外は認める。

908 名前:デフォルトの名無しさん [2020/07/05(日) 11:09:23.64 ID:MQ9nuMmc.net]
アメリカの大手一流ってどこだろ?

909 名前:デフォルトの名無しさん [2020/07/05(日) 11:11:04.89 ID:MQ9nuMmc.net]
アメリカや大手や一流が正しいとは限らないけどね
ボーイングの飛行機があんなことになってるように

910 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:11:13.65 ID:9F15TCk0.net]
まあ会社的にはプログラマなら全員知ってるとこ。それ以上は言わん。

911 名前:デフォルトの名無しさん [2020/07/05(日) 11:13:19.35 ID:9F15TCk0.net]
>>877
だからボーイングの制御系とかはそもそも全然別の話。

もちろん正しいとは限らないけど標準なのは確かだわな。
日本初のOOより優れたこういうメソッドがある!というなら
もちろん喜んで聞くけどね。

912 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:14:37.74 ID:kFjTOHVy.net]
>いや、元々がpublicじゃなくてprivate単位でやれという話からなんだからその話だよ。
>ublicでprivateの分岐通ってるなら良いじゃんといなら誰も否定していないのでは?

そう、それが一致しているならいちいち関係ない話を絡めなくてもいいんでは?
public経由のテストで十分網羅できるのにそれでもprivateメソッド単位のテストが
必要なんて主張している人いたかな?そこに誤解があるんじゃないの?

913 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:15:16.65 ID:9F15TCk0.net]
>>880
いるから揉めてるんすよ。

914 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:16:31.89 ID:M+BkbwUs.net]
>>881
それはどれ?レスを教えて

915 名前:デフォルトの名無しさん [2020/07/05(日) 11:17:47.72 ID:MQ9nuMmc.net]
アメリカの大手の一流がそうしてるから正しいのだという権威にすがった論理を
展開されておられたのでその会社ってど

916 名前:ソらの会社なのって聞いてみたんだけど
そんな会社本当にあるの?
[]
[ここ壊れてます]



917 名前:デフォルトの名無しさん [2020/07/05(日) 11:18:34.49 ID:MQ9nuMmc.net]
t_wadaの次はアメリカの大手一流か、議論の根拠が権威ばっかりやな

918 名前:デフォルトの名無しさん [2020/07/05(日) 11:21:40.50 ID:9F15TCk0.net]
例えばこの方。

848デフォルトの名無しさん2020/07/05(日) 08:16:36.05ID:IUsMolpf
publicを通した範囲でしかできないprivateのテストは網羅されてなく
メソッドの単体テストとして十分なテストは行われていません
あなたの意見は採用できません
できれば実際のプロジェクトを5つぐらい経験されてはいかがでしょうか?


メソッド全部ちゃんとエッジケースやネガティブまでやれって業界があるのは
わかるし、必要だとも思うけど、それはOOのビジネス系だでは普通やらないということを
言ってただけなんだけど、バカだアホだお前は素人だといろんな方面から変に噛みつく
やつばかりでもう僕はいやになっちゃった。この人が噛み付いてきたということではないよ。

もちろんまともな人のが多いんだろうけどおかしな人のが目立つからね。

919 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:22:22.08 ID:/MeFbFCW.net]
いちいち論点ずらすな。
お前ら、何で争ってるんだよ。

920 名前:デフォルトの名無しさん [2020/07/05(日) 11:23:41.69 ID:MQ9nuMmc.net]
OOのビジネス系ってどんな仕事?
そんないい加減なことやっていい仕事ある?
トラブってもうちうちでなーなーで済むようなBtoBの仕事?
自社内でしか使わないシステムとか?

921 名前:デフォルトの名無しさん [2020/07/05(日) 11:24:18.36 ID:9F15TCk0.net]
アメリカの大手一流が不満なら自分の業界の実例をあげたらいかがだろうか?

privateをテストケース書いて全件やってるとこなんておそらくないぞ。あるというならあげれば良いだけの話。

テストツールどうやって動いてるねん。コード自動で書き換えてコンパイルし直しか。話がおかしいのすぐわかるだろ。

922 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:24:52.69 ID:/MeFbFCW.net]
まず、このスレの連中は議論する前に論理学を学ぶことをお勧めするよ。
あと、詭弁について調べろ。

923 名前:デフォルトの名無しさん [2020/07/05(日) 11:25:24.17 ID:MQ9nuMmc.net]
>>888
アメリカの大手一流ってどこの会社なん?

924 名前:デフォルトの名無しさん [2020/07/05(日) 11:25:52.62 ID:9F15TCk0.net]
>>887
だからアメリカ製のパッケージとかコンサルとの間でよく揉めてるだろ。これは「バグ」じゃないとか。DBだってよくある話だわな。

君はどんな仕事なの?

925 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:26:35.07 ID:9F15TCk0.net]
>>890
君の会社はどこなん?

926 名前:デフォルトの名無しさん [2020/07/05(日) 11:27:26.12 ID:MQ9nuMmc.net]
>>891
アメリカ製のパッケージとかコンサルとの間でよく揉めてる仕事なん?
なにそれ? 何言うてんの? 何の仕事してるんよ



927 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:27:47.35 ID:kFjTOHVy.net]
>>885
それは網羅してないからダメという意見では?
そこに反論するならば「privateのテストを強制すべきではない」ではなく
「public経由でも網羅することは可能」ではないかね?(できるなら)

928 名前:デフォルトの名無しさん [2020/07/05(日) 11:27:51.75 ID:9F15TCk0.net]
>>882
>>848
デフォルトの名無しさん2020/07/05(日) 08:16:36.05ID:IUsMolpf
publicを通した範囲でしかできないprivateのテストは網羅されてなく
メソッドの単体テストとして十分なテストは行われていません
あなたの意見は採用できません
できれば実際のプロジェクトを5つぐらい経験されてはいかがでしょうか?

929 名前:デフォルトの名無しさん [2020/07/05(日) 11:28:29.72 ID:MQ9nuMmc.net]
>>892
アメリカの大手一流でこうしてるから、こうするのが正解なんやー
言うてたからアメリカの超一流ってどこなんよ? と聞いたんやけど
なんで言えへんの

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

931 名前:デフォルトの名無しさん [2020/07/05(日) 11:29:53.38 ID:MQ9nuMmc.net]
>>897
なるほどね、わかる気がする

932 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:29:56.16 ID:M+BkbwUs.net]
大手一流の名前を言うだけで逃げそう(笑)

933 名前:デフォルトの名無しさん [2020/07/05(日) 11:33:32.02 ID:MQ9nuMmc.net]
足ガクガクになってまうよー

934 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:36:47.20 ID:Ua1+WoRk.net]
まぁ、単体テストでprivateを直接呼び出すのは変な話だけどな。
デバッグならともかく、単体テストでリフレクションによるprivate強制実行とか反則でしょ。
デバッグで許される理由は、バグを見つける可能性があるから。
単体テストで駄目な理由は、テストの合否判定が不当に変わる恐れがあるから。

というのが自分の見解だが、皆さんはどう?
スレが加速してからの途中参加だから、自分の発言に自信ないけど。

935 名前:デフォルトの名無しさん [2020/07/05(日) 11:37:26.26 ID:9F15TCk0.net]
>>894
そもそもpublicを経由するのが網羅してないから、経由せずにprivate単位で
コード書き換えてテストやるべきという主張自体がOO的にはおかしいわけです。

見せたくないからprivateなわけで。

もちろんデベロッパー個人でコード入れて確認することはあるだろうけれども、
開発手順としてテストケース書いてログ残してというのは違う。

public経由で内部を網羅してるかしてないかは知ったことではない、というのが正解。
上の例で言えばfuncBやfuncSがnullをチェックしてようがしていまいが他のチームには
関係ないわけです。入り口でnullチェックしてれば。

個人的にはサイズがでかければprivateでも入れるけども、それをテストケース書いて
ログ残してと要求されたことはないし、普通はされんはず。少なくともアメリカでは。

936 名前:デフォルトの名無しさん [2020/07/05(日) 11:38:33.09 ID:MQ9nuMmc.net]
GoogleであってもMicrosoftやOracleもバグのないソフトは作れないし
銀の弾丸的な手法があるわけもなく、アメリカ、大手、一流という箔付けに頼ってるだけでしかない



937 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:41:45.16 ID:Xwol7cCi.net]
せっかく匿名で議論できるのに
「アメリカの大手一流」とか言い出しちゃうところが哀れやわ
>>805の下痢便コード出た時点でスレ終了やろ普通

938 名前:デフォルトの名無しさん [2020/07/05(日) 11:43:37.87 ID:9F15TCk0.net]
>>896
君の会社はどこなの?

アメリカ大手1流でブライベート単位でのテストケース書いたりした網羅的なテストは「していない」という証明は悪魔の証明だから無理だけど。全社で働いたわけじゃないし。

逆にアメリカ大手1流でやっているという証明は一件出すだけなのでGAFAのどこでも、マイクロソフトでもアドビでも簡単にできるのでぜひどうぞ。

ただ、なんかコピペで爆撃されたオートメーションツールでは、特にコンパイル必要な言語は、直接privateテスト出来ないよ。当たり前の話。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<316KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef