クソコードとは何か

■ このスレッドは過去ログ倉庫に格納されています
2021/01/30(土) 17:33:05.78ID:BjNTZWUI
このスレはクソコードとは何かを考えるスレです。

・親クラスが子クラスに依存する処理を持つコード
例...社員クラスを継承した正社員クラスと派遣社員クラスがあり、社員クラスが正社員クラスの知識を持つ状況

・staticにするべきではないモデルにまでstaticにする人
例...社員クラスのメソッドを全てstaticにしたり、社員クラスにシングルトンパターンに相応するものを適用する人

等、クソコードを見た時に「あっ、これクソコードだ」って認識する根拠を挙げていきましょう。
2021/02/17(水) 23:26:31.02ID:FwS3TBTC
>>333
だから論点すり替えるなって言ってるだろ
自動運転の話なんかしてないんだわ

「手動テストでどうやってちゃんと書いてあるとおりにテストしたと担保するの?」
これに答えればいい。色々やってます!は答えじゃないからな
335デフォルトの名無しさん
垢版 |
2021/02/17(水) 23:35:59.81ID:ltamn3iy
「手動テストでどうやってちゃんと書いてあるとおりにテストしたと担保するの?」
「(手動テストでは)テスト項目を作成し、(完璧な)テスト要員はテスト(それに完全に従い)した結果を記録します」

この時、不良なテスト要員やテスト抜け、人間らしいヒューマンエラー許容しません。これはテストコードを
作成した場合についても同じです。だからあんたの脳内に大事にしまってある「論点」を語りなさい
2021/02/17(水) 23:52:39.21ID:rF5wbzd/
自動テストだと手動テストでできない説明ができるって?
2021/02/18(木) 00:00:13.06ID:uiIjzHNM
>>335
> 「(手動テストでは)テスト項目を作成し、(完璧な)テスト要員はテスト(それに完全に従い)した結果を記録します」

完璧なテスト要員なんて存在しません。
書いてあるテスト項目通りに、人間が作業したことを担保(記録)する方法を聞いています。

「完璧に記録するにはどうすればいいですか?」という質問に対して
「結果を記録します」は答えになっていません。
それが質問です。
2021/02/18(木) 00:03:21.14ID:CDAKHrDM
自動テストはオマケ。最後は品質保証チーム。
2021/02/18(木) 00:04:06.22ID:uiIjzHNM
>>336
> 自動テストだと手動テストでできない説明ができるって?

今の論点は「テスト項目通りに間違いなくテストを行ったか?」です
人間がやる以上、間違い(ミス)すること作業することはできないので、それを防ぐのが自動テストです。

もし手動テストでやる場合「書いてあるテスト項目に従い人間が間違いなく行動する」
または「人間の行動を後から再現できるように完璧に記録する」のどちらかが必要になるはずです
これだけやって、ようやく自動テストと同等の信頼性が得られますが、
それでも実行速度(テスト実行時間)はコンピュータにはかないません。
2021/02/18(木) 00:04:52.19ID:uiIjzHNM
人間がやる以上、間違い(ミス)することなく作業することはできないので、それを防ぐのが自動テストです。
341デフォルトの名無しさん
垢版 |
2021/02/18(木) 00:05:13.93ID:GR+auC/2
やっぱマウントポジション取りたいストレスだらけの無能ハゲやったか
手動テストって上の方でも書いてるけど、ほんまもんの気狂いだなww
同様にテストコードも完璧なテストなんてありませんし書けません
2021/02/18(木) 00:07:58.06ID:uiIjzHNM
>>341
いやちゃんと>>339に書いたんだからレスしろよ
マウント取るんじゃなくて、お前がマウント取られに行ってるじゃんw
言い返す言葉はなにもない。だがレスだけはしたいんだって
2021/02/18(木) 00:09:19.27ID:uiIjzHNM
> 同様にテストコードも完璧なテストなんてありませんし書けません
だーれも完璧なテストがあるなんて言ってない

完璧なテストがない=必ず後で修正が入るからこそ、
何度も高速に同じテストを実行できることが重要なんだわ
2021/02/18(木) 00:10:15.82ID:uiIjzHNM
何度も高速に同じテストを実行できることが重要だから
それを人間の手動テストでどうやるの?と聞いてる

無理。だから自動テストが重要
って答えになるやろが?
2021/02/18(木) 00:29:33.49ID:unHOG45Z
は?全く苦労に見合った見返りが見えないんだが?

あとサブルーチンの戻り値で分岐しまくるコードが入りまくってるときに
テストコードってどうやって書くの?
戻り値を意図的に制御できないじゃん?
2021/02/18(木) 00:31:37.57ID:uiIjzHNM
>>345
> あとサブルーチンの戻り値で分岐しまくるコードが入りまくってるときに
手動テストってどうやるの?

それを書くのが先だ
2021/02/18(木) 00:34:28.27ID:uiIjzHNM
手動テスト vs 自動テストで
ドロー(引き分け)になる項目を持ってきて
勝てると思ってるんだろうか?

手動テストは、高速に同じテストを何度も実行できない
手動テストは、正しくテストをしたという担保がない

この項目で負けてるだろうが
そこに引き分け項目持ってきても勝てねーよw
2021/02/18(木) 00:42:57.81ID:80X4NLoW
なんかもう、テストコード書く書かないのスレ立ててそこでやれば?いつまでこのネタ引っ張るの?
349デフォルトの名無しさん
垢版 |
2021/02/18(木) 00:43:39.30ID:GR+auC/2
>>342
思い込みのハゲしい人ですね。最初からいいますよ?私は自動テストも手動テストも否定してない。まず上の方の
人たちと同一人物視をやめなさい。あなたは「担保するの」と書いていて「速度」のことなんて、ID上は今まで
1回も言っていません。ちゃんと質問するなら
「手動テスト”だけ”で仕様通りにテストを行い、変更があったら”同じテストを繰り返した”と
 担保して、素早いテストの繰り返しによる開発を継続するのでしょうか?」ですよね

もちろん手動テスト”だけ”でも時間と費用があれば無理ではありませんが、当然時間がかかります。
この質問であれば、「素早い開発」の要件を満たせないのでテストコードによるイテレーションテスト「も」
必要になります。「無理」というのはあんたの頭の中でできてるストーリーに無理ができているだけです。

「嘘つくな(笑) オープンソースでなんか証拠持ってきてみ 」
このような会話は5chだから通用しますが、現実世界ではあなたは爪弾きでしょう。何を言いたいのか
サッパリ分かりません。日本語が不自由な方かと思いましたが、思考が不自由な方だ
1.聞きたいことが質問にまとめられていない
2.聞きたいことを回答する人を馬鹿にして遊んでる
3.最初から(自分だけの)結論ありきで語っている

また頻繁に変更が入るコードで何度も同じテストを実行することはありますが、変更が入らないコードでは
同じテストを実行する事は無駄です。一部のツールはテスト結果で省略すらします。
自動vs手動という考えはあんたの頭の中にしかない初めて披露された考えです。この両者は対立構造では
ありませんし、ましてや勝つとか負けるとかどーでもいい事です。それがマウントと言っているのですよ
2021/02/18(木) 00:44:42.11ID:vQ0bM4Ab
>>345
一般的な言語なら普通にできるよ
2021/02/18(木) 00:45:02.81ID:uiIjzHNM
長文読まないよ
2021/02/18(木) 00:45:40.48ID:uiIjzHNM
結局の所、手動テストは時間がかかって
信頼性もないってことだろ
2021/02/18(木) 00:46:31.03ID:unHOG45Z
>>347
自動テストでそれは解決できないだろ
2021/02/18(木) 00:48:39.39ID:uiIjzHNM
>>353
それはシートベルトでは衝突事故は防げないだろ論法?w

手動テストは、高速に同じテストを何度も実行できない
手動テストは、正しくテストをしたという担保がない
自動テストで解決できてるだろ
355デフォルトの名無しさん
垢版 |
2021/02/18(木) 00:49:53.24ID:GR+auC/2
>>348
ごめんね、引数が100個あればクソコードかと言えば、そうでもなく可変引数展開するような言語では
配列渡しになったりするので「テストコード」も「開発手法」もここのタイトルだと何も関係ないね
2021/02/18(木) 00:51:16.80ID:unHOG45Z
>>354
自動テストってなんで正しいの?
2021/02/18(木) 00:52:15.60ID:unHOG45Z
自動テストってコードありきで作っちゃったゴミカステストしか見たことないよ
2021/02/18(木) 00:54:40.11ID:uiIjzHNM
>>356
それをいうなら、
「自動テストは、正しくテストをしたという担保があるの?」
だよね。

コンピュータは書いたとおりに動く
だから、テストコードで書いたテストを
正しく行ったことが担保されている

それに対して人間は、いくらテスト指示書にこうしろと
書いてあったとしても間違えることがあるしサボることもある
なんかおかしい気がしたけど気づかずにスクショ取ってOKと記入してしまうこともある
だがあとになって調べようとしても、その時のテストが
間違っていたり手抜きしたことがわからない
359デフォルトの名無しさん
垢版 |
2021/02/18(木) 00:56:12.19ID:GR+auC/2
>>357
OSSなら基本的にテストファーストはしてないね、プロトタイプ作って0.1にバージョニングして
後からテストコード追加ですね。業務コードだとTDDを最初からやろうとする企業もあるけどさ
作ったテストが要件や機能に合わなくなることはあるあるネタだ
2021/02/18(木) 00:57:26.69ID:unHOG45Z
>>358
いや、ないよ
2021/02/18(木) 00:57:49.51ID:uiIjzHNM
>>359
普通、一つのコミットの中にテストコードと実装コードが含まれるけど
テストファーストしてないという根拠は?

後からテストコードが追加されたことがあるからといって、
それはテストファーストしてない理由にはならない
2021/02/18(木) 00:58:20.53ID:uiIjzHNM
>>360
何か言い返せよw
言い返せないのにレスだけするから恥をかくんだぞw
2021/02/18(木) 00:59:52.93ID:unHOG45Z
>>362
だってないもん
単体テストなんか仕様書ビルドしてできたわけでもねーのにそんな正しさがいきなり入る前提なのが気が狂ってる
2021/02/18(木) 01:01:03.98ID:unHOG45Z
バカが作ればバカなりな正常が定義されるだけだろ
夢みんな
2021/02/18(木) 01:01:59.98ID:uiIjzHNM
>>363
ああ「正しさ」だけ書いて論点をすり替えようとしてるのねw

俺がずーっと言ってるのは
「手動テストでどうやってちゃんと書いてあるとおりにテストしたと担保するの?」
2021/02/18(木) 01:02:43.80ID:uiIjzHNM
手動テストではいくらテスト項目が書いてあったからって
そのとおり正しくテストしたという保証がまったくないんだわ
人間は間違えることがあるから
2021/02/18(木) 01:04:27.27ID:unHOG45Z
>>365
いや、それ自動テストと手動テストに違いないじゃん
自動テストの間違ったテストコードで正常になっちゃったも
手動テストで間違ったエビデンスのとり方して正常になっちゃったも
違いねーし
頭おかしんちゃう?お前
2021/02/18(木) 01:06:47.98ID:uiIjzHNM
>>367
自動テストの間違ったテストコードで正常になっちゃった場合は
テストコードを見れば、テストコードが間違っていたとあとからわかる

手動テストでは、テスト作業が間違っていたのかどうかもわからない
あとから見た所で、作業内容自体までスクショ取ってないから。
それとも監視カメラで作業員の行動を動画で撮って
あとからその動画を眺めるつもりか?
コンビニの監視カメラの映像を確認するように

一体何時間時間がかかると思ってるんだ
2021/02/18(木) 01:07:56.11ID:unHOG45Z
>>368
え?わかるやり方もあるでしょ?バカなん?
2021/02/18(木) 01:08:25.16ID:uiIjzHNM
だから手動テストでは
もう一回やったら再現できませんでしたとか
ちゃんとテストしたのに実際は動きませんでした
とか発生した時に、その原因の追求ができない

うごくからヨシっていう
適当な仕事をしてる
2021/02/18(木) 01:09:01.59ID:uiIjzHNM
>>369
その分るやり方を書けよw
お前議論できねーな

言い返す言葉がないならレスしなくていいんだぞ?
2021/02/18(木) 01:09:10.15ID:unHOG45Z
>>368
あとテストコード見たってわかんないよ
仕様書見るんでしょ?
それは手動テストだって同じだよね?
2021/02/18(木) 01:10:46.79ID:unHOG45Z
>>370
は?
自動テストだって同じでしょ?
デバイス絡みがコードだけで動くわけ無いじゃん
2021/02/18(木) 01:11:16.43ID:uiIjzHNM
>>372
テストコードみれば、実際にやったテストがわかるだろ?
馬鹿なのか?

手動テストでは、何が書いてあっても
実際にどういうテストをやったかがわからない
人間が間違えたかもしれないって話をしてるのだが
ついてこれてる?
2021/02/18(木) 01:11:52.03ID:unHOG45Z
俺がつないであるプリンタを踵落としで叩き割ったらもう動かないよね?
2021/02/18(木) 01:12:02.27ID:uiIjzHNM
>>373
> 自動テストだって同じでしょ?

なにが同じなんだよ?

自動テストなら実際にやったテストがわかる or 手動テストではわからない
って話をしてるんだが、ついてこれてる?
377デフォルトの名無しさん
垢版 |
2021/02/18(木) 01:12:12.31ID:GR+auC/2
>>363
「普通、一つのコミットの中にテストコードと実装コードが含まれる」間違い、0点です。
OSSでもクローズドソースでも普通はコミットの中には、偏在が生じます。TDD推進や原理主義者では
テストコード比率は80%だと主張する方もいます。一般的にOSSではテストコードがほとんどない方が
多いです。もちろんこれの正当性を主張するわけでもありませんが、何故そうなるのかと言えば多くが
個人開発だからです。いい加減な自動テストが含まれていて、それをテストファーストと主張するなら
主張すればいいですよw
2021/02/18(木) 01:13:10.82ID:uiIjzHNM
>>375
その点テストコードは、バージョン管理するから
動いていたものが動かなくなった原因までしっかり記録される
2021/02/18(木) 01:13:51.03ID:unHOG45Z
>>374
は?それが正しいかどうかは仕様書見ないとわからないだろ?
仕様書とテストコードとコード見るんやな
なんか無駄じゃねぇの?
仕様書とコード見るだけでよくね?

なんでテストコード書く必要あったんだっけ?
2021/02/18(木) 01:15:16.04ID:unHOG45Z
そもそも仕様書とコードを見比べてどうして正しいかわからないんだっけ?
2021/02/18(木) 01:15:18.95ID:uiIjzHNM
>>377
> 「普通、一つのコミットの中にテストコードと実装コードが含まれる」間違い、0点です。

ん?証拠を持ってくればいいわけ?

例なんていくらでもあるけど、一つのコミットの中にテストコードと実装コードが含まれてます。
https://github.com/facebook/react/pull/20813/files
2021/02/18(木) 01:15:52.08ID:unHOG45Z
>>381
ウィルス
2021/02/18(木) 01:16:06.06ID:uiIjzHNM
>>379
いい加減「正しい」の意味をすり替えるのやめろ

「書いてあるとおりに正しくテストした」ことが
自動テストならわかるって言ってるだろ
2021/02/18(木) 01:16:36.10ID:uiIjzHNM
>>382
そうだよね。そうやって嘘を付くしかないもんねw
2021/02/18(木) 01:17:07.59ID:unHOG45Z
>>383
え?それは仕様書通りって意味でないとビジネスで役に立たないよね?
2021/02/18(木) 01:17:45.50ID:unHOG45Z
自動テストでどうやって仕様書通りかどうかわかるの?
2021/02/18(木) 01:18:14.28ID:unHOG45Z
お前のテストコードがクソコードだったら終わりじゃん
2021/02/18(木) 01:20:25.65ID:unHOG45Z
さっきからなんの正しい説明にもなってないじゃん
自動テストも手動テストも仕様書通りかどうかテストすんだろ
何度も言わせるなクソが
389デフォルトの名無しさん
垢版 |
2021/02/18(木) 01:27:53.27ID:GR+auC/2
>>381
js系の人ですか(笑)reactの場合、ver17.0.0になってもissueのOpen数が500あります。明らかにデグレを
生んでいますが、issueのClose数も1万近くです。テストが完璧だとどうやって担保しているでしょうか?(笑)
リリース数は数えたら137回です
390デフォルトの名無しさん
垢版 |
2021/02/18(木) 01:35:12.01ID:GR+auC/2
>>381
ん?ショーコですか?誰もそんな事言ってないと思いますが?w
参考までにそのコミットの1つ前にはテストコードが含まれてませんが?w2つ前も含まれてませんw
対象コードはCIのコードですがwよくあるFix typo も多くはテストコードとやらは含まれませんね。
391デフォルトの名無しさん
垢版 |
2021/02/18(木) 01:55:43.96ID:GR+auC/2
>>387
”「書いてあるとおりに正しくテストしたことが自動テストならわかる」って言ってるだろ ”
上の方を見ても1回もそんな事はいってませんね・・・それと、日本語の区切りがおかしいので
直しておきました。「書いてあるとおりに正しくテストした」これを一言で言えばオナニー猿です。

逃げてしまったのか
2021/02/18(木) 06:37:17.08ID:EVRbmhyV
>>327
はいはい、どうしようもない現実を知らないとか幸福な人生で何よりですw
2021/02/18(木) 06:54:09.45ID:qR1rH4Mn
テストの内容(文章 or コード)が、仕様書通りかは、手動テストも自動テストもわからない
この勝負はドロー(引き分け)


テストの内容(文章 or コード)が仕様書通り正しいと仮定する
手動テストは、テストの内容を正しく実行したとは限らないが
自動テストであれば、テストの内容を正しく実行したことが保証される
なぜならコードは書いたとおりに動くから

この勝負は自動テストの勝ち
2021/02/18(木) 07:11:33.36ID:K1XgX+kk
>>393
だからテストコードのテストを行わなければ完結しない

ということだね
2021/02/18(木) 08:22:53.92ID:qR1rH4Mn
>>394
テストコードのテストというのは意味不明
お前の理屈だと、テストのテストが必要になるだろ
テストのテストのテストも必要になるだろ
アホらしい

テストコードに必要なのはコードレビュー
テストコードのレビューが必要なように
テスト実行手順書のレビューも必要

この勝負はドロー

そしてテストコードのレビューがOKだった場合
書いてあるテストコードの通りテストは行われるが

テスト実行手順書のレビューがOKでも
手動でテストすると、そのとおりにテストが行われるとは限らない

ということで、手動テストの負けになる
396デフォルトの名無しさん
垢版 |
2021/02/18(木) 10:15:13.26ID:64/LOwh9
>>308
2021/02/18(木) 10:27:02.08ID:PBViQ2A6
俺が折角>>305で流れ戻してやろうと思ったのに馬鹿を刺激すんな
もう手遅れだけど

馬鹿は詭弁を並べて相手にならねーから会話するな
馬鹿と会話しようとするから疲れる
テキトーに流しとけ
2021/02/18(木) 11:03:49.56ID:gOUQkM00
推奨するやつの頭が悪いから
テストの自動化自体も悪く見えるパターンだなこれ

ルビきちパターン
2021/02/18(木) 11:05:28.89ID:ZCTHPCfZ
>>397
馬鹿筆頭の自覚無しw
2021/02/18(木) 11:40:46.00ID:Nx8G+5tf
>>399
煽り耐性無さ過ぎ...
2021/02/18(木) 11:49:50.78ID:nrHJXjYu
スレの趣旨的にはむしろ>>305が正しい
2021/02/18(木) 12:14:02.17ID:2k7+F3J5
>>1>>305の中身がペラいから欲しい反応を貰えないだけやろ
2021/02/18(木) 12:21:36.18ID:2k7+F3J5
>>320の"再利用性の無いクラスは糞"でトライしてみたんだろうけどペラすぎて役に立たないから誰も反応しない
2021/02/18(木) 12:27:34.11ID:nrHJXjYu
そう?
むしろさり気なくanemic domainの話をしてる奴らがいたから、良スレの予感したのに一人の馬鹿が荒らした挙げ句に単体テストの必要性の有無とかいう低レベルスレになってがっかりしてる俺がここにいるけど?

内容がペラいってか、本当の経験者なら察せるし、一言二言から深堀すればいいのに
2021/02/18(木) 12:28:13.80ID:nrHJXjYu
単体テストの話で流れるせいで誰も手が出せん
何なら、隔離スレいる?
2021/02/18(木) 12:55:48.46ID:nrHJXjYu
ペラいとか言うけど、そもそも>>320の言ってることわかる?
他人を批判する前に貴方の実力チェックがしたいのだが、なんで再利用できないクラスがクソなのかわかる?
2021/02/18(木) 14:03:58.21ID:d72Uy3wC
>>406
>なんで再利用できないクラスがクソなのかわかる?

その考え方がペラいって言ってんのにわかんないやつだな
これ全部同一人物じゃなきゃありえんな
2021/02/18(木) 14:20:32.85ID:nrHJXjYu
>>407
その考えとは?わからないから教えてくれや
2021/02/18(木) 14:52:32.67ID:nrHJXjYu
>>407
まさか再利用できないクラスが普通だとか思ってる?流石にそれはレベル低すぎてその発想はなかったけど、そういうこと?

たのむから伝わるように文章を書いてくれ
お前の文章こそ情報量がない
あるのは相手にマウントを取ろうとする意気込みだけ
2021/02/18(木) 15:50:41.18ID:bN9e6Enp
>>408
一般常識を持たず
自分の半径5cmの出来事の一側面だけを見て
コンテキストを無視して一般化しようとする考え方
2021/02/18(木) 15:59:27.62ID:nrHJXjYu
>>410
一般常識?ID変えながら、こんな時間に2chやる俺らが?w
発言元からコンテキスト境界を読み取れずに他人を批判するお前こそ薄ペラ野郎だわ
2021/02/18(木) 17:08:42.38ID:kV6+8waU
まず再利用性とは何かをまるで理解していない
アプリ全体の一箇所でしかインスタンス化されないからといって再利用性が無いとは言わない
再利用には様々な形があるにもかかわらずインスタンス化される箇所の数という著しく狭い一つの側面だけしか見えていない

そもそもインスタンス化される箇所の数と、そのクラスがクソかどうかとは何の関係も無い
ないない尽くし
2021/02/18(木) 17:23:27.31ID:kV6+8waU
クラスの再利用性の度合いが低ければそのクラスがクソかと言えば全くそんなことは無い
クソがどうかは再利用性の度合いとは関係ない

クラスベースのOO言語を使ってるならどんなアプリでそのアプリ特有の処理はそのアプリの用途に特化したクラスで実現する
当然、一般的に言うところのクラスとしての再利用性は無い

それだけでクソだと言い出したらGoogleが作るものでもMSが作るものでも世の中のアプリはほぼ全てクソの塊
414デフォルトの名無しさん
垢版 |
2021/02/18(木) 17:49:20.06ID:HwjlNY0O
ジョブがやたら多いシステムきつい
2021/02/18(木) 17:53:10.20ID:EQNcYV6O
>>413
> クラスベースのOO言語を使ってるならどんなアプリでそのアプリ特有の処理はそのアプリの用途に特化したクラスで実現する
> 当然、一般的に言うところのクラスとしての再利用性は無い

そんなの当たり前じゃん
殺人事件が起きて殺人は駄目だと訴える遺族の前で死刑囚は殺してはいけないと言うのか?とか言い出すようなもの

それくらい察してやれ
2021/02/18(木) 17:59:21.72ID:EQNcYV6O
って、アプリ特有ってまさか業務特有の処理とかじゃないよな?
フレームワーク特有だったらわかるけど
2021/02/18(木) 18:07:15.94ID:TPOb/Xi+
組込してるけど、USBクラス、SDカードクラスのインスタンス化が封じられていて、しかもUSBクラスの中にMCUのポートに依存する処理が書かれてたらクソだと思う

なんで、回路構成変わるたびにいちいちUSBのロジックを実装しなきゃなんねーんだよクソがって言いたい
2021/02/18(木) 18:40:52.03ID:uVIafMoc
>>417
なんで修正しないの?
staticなメソッドとメンバーのみを使うとしても必要なところを入れ替えるように作れるでしょ
419デフォルトの名無しさん
垢版 |
2021/02/18(木) 18:56:01.13ID:z09WEaLy
トイレ行っていい?
2021/02/18(木) 19:02:24.32ID:TPOb/Xi+
>>418
文面だと伝わりづらいと思うからコード書くけど
USBポートが2ポートある場合

USB usb1 = new USB(port1)
USB usb2 = new USB(port2)

で済むのに、インスタンス化を封じられたら

USB1 usb1 = USB1.getSingleton()
USB2 usb2 = USB2.getSingleton()

みたいにUSB1クラス、USB2クラスを自分で定義しないといけなくなるからやめた方がいいよって話
なぜかというと、USB1と2に同じコードを書かないといけないし、もし、USBの処理に仕様変更が生じると、今後はUSB1と2を変更しないと駄目だから
面倒でしょ?2個程度なら...という油断は命取り

>>419
ご自由に
2021/02/18(木) 19:30:22.47ID:unHOG45Z
>>395
それで?
仕様書通りであると説明できたん?
2021/02/18(木) 20:13:35.08ID:qR1rH4Mn
>>421
何度も言ってるが
仕様書通りのテストコード(or テスト手順書)になってるかはレビューで確認する
その点ではテストコードも手動テストの手順書も差はない

差があるのは
テストコードの通りにコンピュータが実行したか(実行したと保証される)
テスト手順書のとおりに人間が実行したか(実行したと保証されない)
この点で、手動テストは劣っている

>>421
なにか言い返す言葉があるならどうぞ
2021/02/18(木) 20:54:43.88ID:Tudb2iMs
>>420
インスタンス化しとるやーん

USBに共通する処理をコンポジションで切り出してれば1箇所の修正で済むよね

シングルトンにするメリットがある前提ならそのコードの形だけでクソコードだとは思わないな
2021/02/18(木) 21:58:25.07ID:unHOG45Z
>>422
え?コードレビューの他にテストコードのレビューやるの?
何がよかったんだっけ?
425320
垢版 |
2021/02/18(木) 22:15:10.24ID:1R5qg2DM
反応してくれるやつがおっただけでも嬉しいわ(ヽ´ω`)
2021/02/18(木) 22:24:23.85ID:1R5qg2DM
>>412
ワイはそれをあると言っている
インスタンス化された個数こそがそのクラスの価値だと言っている
抽象クラスやインタフェースについてはこの主張では扱わない
アホらしいと思うのなら聞き流してくれていい
2021/02/18(木) 22:27:00.40ID:1R5qg2DM
>>404
単体テストがどうのこうのってもう心底どうでもいいよなw
俺もそれの結論について興味が持てない
2021/02/18(木) 22:30:19.90ID:1R5qg2DM
>>420
インスタンス化を封じて苦しくなってくるのあるよなw
最初のうちはそれでよさそうに思えるんだけどね
2021/02/18(木) 22:55:26.26ID:GanGg3no
>>426
インスタンス化された個数と
インスタンス化される箇所の個数は全然違うと思うんだが?

コード上では1箇所でしかインスタンス化されないがリクエスト毎にインスタンス生成されるクラスとか
2021/02/18(木) 23:10:12.48ID:1R5qg2DM
ごめんね下のほうの意味が本来言いたかったこと
実行時のことは考えず単にコード上での評価
2021/02/18(木) 23:35:55.78ID:lCP5Fc9O
>>430
そうすると何か特殊な前提を置いてるかインスタンス化する箇所という言葉の定義が全く違うかだな

インスタンス化がnewしたりファクトリメソッドを呼ぶ事だとしたら
Webでもモバイルでもデスクトップでもコード上の1箇所でしかインスタンス化されないクラスが結構な割合で存在するほうが普通

わかりやすいところで言えばコントローラクラスやアプリケーションクラス
432デフォルトの名無しさん
垢版 |
2021/02/19(金) 02:02:43.04ID:C4/TpWTT
>>420
USB io = USB.create(port1)で物理的なUSBが重複する可能性があり、排他制御が必要ならそうすると思うよ。
USB io = new USB(port1)で個別にインスタンス作って、マルチスレッド・マルチプロセスで動くなら必要ないけど
自然的なコンストラクタでメンバー変数は初期化されることに意味があるだけで、それ以外の構築初期化を
しようとしたらファクトリーメソッドが必要になる。もちろんnewの後にメンバーメソッドを毎回自分で
呼び出して初期化しても良いわけだけど、ま、言いたいことは確かに安易な設計でシングルインスタンスは
避けるべきだけど、近代的なクラス型の言語によるメンバーの隠蔽とファクトリーメソッドは無関係
2021/02/19(金) 02:35:10.05ID:lLyiEvh3
>>424
> え?コードレビューの他にテストコードのレビューやるの?

当たり前だろ
お前コードレビューをするのは当然として、
お前、テスト手順書のレビューしないのか?
だからお前がやったテストはいつも抜けがあるんだろうがw
すいません、テストが漏れてましたじゃねーよ、いっつもいっつも
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況