クソコードとは何か

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

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

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

等、クソコードを見た時に「あっ、これクソコードだ」って認識する根拠を挙げていきましょう。
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
すいません、テストが漏れてましたじゃねーよ、いっつもいっつも
2021/02/19(金) 02:43:27.34ID:3DiTZZbV
>>433
じゃあテストコードのテストもいるよね?
2021/02/19(金) 02:59:07.17ID:lLyiEvh3
>>434
お前の真似をすると
テスト手順書のテストもいるよね?

当然、答えは「はい」になるよねw
2021/02/19(金) 06:52:05.98ID:zJ55MHzK
>>434
いらない、レビューで足りる
理由は>>255に書いてある
2021/02/19(金) 07:43:49.70ID:tQjoVXv/
>>435
え?設計書のテストが?
テストコードってもんにしたから特有の手順が増えちゃってるんだろ
2021/02/19(金) 07:48:43.11ID:tQjoVXv/
設計書
→コード→テスト
→テスト手順書→レビュー
で済むはずが
設計書
→コード→テスト
→テストコード
→レビュー
→テスト
になってるんだろ
テストコードがソースコードである以上テストしないわけにはいかんだろ
439420
垢版 |
2021/02/19(金) 07:59:08.25ID:PldOIixM
>>423
伝わりにくくてすまん
紛らわしい言い方だったか

>>428
分かってくれてありがとう
440デフォルトの名無しさん
垢版 |
2021/02/19(金) 08:24:00.57ID:IIFo83yT
クソ言語とは
PHP、Swift、Python
JavaScriptも昔はかなりクソだったが完全に復活した
Obj-CはSwiftに取って代わられることは無かった、コード効率が良すぎる
2021/02/19(金) 08:51:26.62ID:f7HYpZpv
>>438
レビューのあとの「テスト」ってビルドボタンを押す度に走るテストのこと?
それとと、gitとかにcommitする度に走るテストのこと?

作業をカテゴリ分けすると増えているように見えるだけで、作業量は減っているように見えるが

途中からこのスレ来たから、流れがわかっていない
2021/02/19(金) 08:52:42.54ID:hd6MOPhf
>>441
おk
半年Romれ
2021/02/19(金) 08:54:08.49ID:f7HYpZpv
>>438

あと、よく見ると手順が間違ってる
> 設計書
→コード
→テストコード
→レビュー(?)
→テスト(自動化)
if 自動化のテストにすべて合格したら
→結合テスト以降のテスト
だよ
2021/02/19(金) 09:01:26.16ID:f7HYpZpv
>>442
あっ(察し)
失礼しました(退場)
2021/02/19(金) 10:36:32.08ID:zJ55MHzK
>>438
> 設計書
> →コード→テスト
> →テスト手順書→レビュー
もうこの時点で意味不明w
普通は
1) 設計書 ⇒ コード(⇒ レビュー)
2) 設計書 ⇒ テスト手順書 ⇒ レビュー
3) 手動テスト(工数大)
だろ
で、自動テストなら
1) 設計書 ⇒ コード
2) 設計書 ⇒ テストコード ⇒ レビュー
3) 自動テスト(工数ほぼ "0")
要するにテストコードは計算機に対するテスト手順書だから手間は変わらんよ
むしろプログラマーだと仕様書よりコード書く方が楽と思う奴もいっぱいいるしw
あとどっちもテストと書いてるけど手動テストと自動テストでは工数が全く違うから同じ「テスト」という言葉でごまかすなよ
なおテストコードはデバッグが必要と主張するなら>>255にちゃんと反論しろ
446デフォルトの名無しさん
垢版 |
2021/02/19(金) 10:53:49.57ID:IIFo83yT
テストコードは暇なら書くレベルの価値しかない。
テスト仕様書に漏れがない事が最も重要。
実データで実動作で検証するのが納品条件。
2021/02/19(金) 11:02:12.72ID:8jP4Tkvg
実機繋がってないと無意味なテストにしかならんの多いのよな
2021/02/19(金) 11:29:00.52ID:RipgTCDE
>>438
> テストコードがソースコードである以上テストしないわけにはいかんだろ
だからいらない
馬鹿なのかな?
テストコードのテストなんてお前したことないだろ?
世の中の誰もしたことないわw
そんなものありはしないんだから


> 設計書
> →コード→テスト
> →テスト手順書→レビュー
> で済むはずが

だめでしょ?レビューが正しいかをテストしなきゃwww
2021/02/19(金) 11:45:25.31ID:3OrjGIvj
>>448
まて、そのレビューは本当に大丈夫なのか?
レビューが適切かどうかも検証しよう(名案)
2021/02/19(金) 11:47:16.24ID:3OrjGIvj
間違えた
レビューが正しいかのテストが適切かどうかもテストしよう
だった
2021/02/19(金) 11:50:29.27ID:RipgTCDE
レビューした結果もちゃんと記録しないといけないからな
レビューの結果をドキュメントとして残すなら
そのドキュメントのレビューも必要になる
当然の帰結だ
2021/02/19(金) 11:52:44.73ID:wrciXaB+
単体テストの範囲でこんな凝った仕組みいらんよ
一番やりたい結合は今度セッティングのが時間かかるんで
2021/02/19(金) 12:21:07.58ID:RipgTCDE
「結合テストはすごく時間がかかる」

え?なんで?

「単体テストでやるべきことも
全部結合テストで手動でテストやってるからさ!」

↑馬鹿じゃね?
2021/02/19(金) 12:30:35.44ID:F46jrkhY
敢えて皆と同じくらいテストコードの書き方を知ってる自分が弁護するけど

class クソクラス
 頻繁に仕様が変わるメソッド
  クソコード
 不具合が生じると仕様が変わるメソッド
  クソコード
 思考停止でプライベート変数のgetter
  思考停止の変数リターン
 思考停止でプライベート変数のsetter
  思考停止の変数代入

みたいなクラスを単体テストするところを考えてみよう

他の皆の無駄じゃない主張は疑いもなく事実だろうけど、テストコードは無駄という主張はある意味では事実なのだと思う

これは...扱うコードの質の違いが生んだ悲劇
そう、事故だったんだ

テストコード厨呼ばわりについては...うん(諦め)
2021/02/19(金) 12:34:28.76ID:RipgTCDE
>>454
テストコードが無駄なケースでは
手動テストも無駄になる

頻繁に仕様が変わるメソッドがあったとして
手動テストをしたら時間の節約になるとでも?
ああ、テストしないってことね(笑)

プロの仕事じゃねーよ
2021/02/19(金) 12:43:07.19ID:F46jrkhY
>>455
> ああ、テストしないってことね(笑)
たぶん、彼の言う手動テストは俺らの言う「テストしない」のレベルだと思う
ややこしいのは主張している本人は「テストしたつもり」になっている点
2021/02/19(金) 12:54:53.31ID:F46jrkhY
>>455
TDD前提で語ってた
クソコードのテストコードを書こうとしたら、直ぐに設計は是正されないとだぞ
2021/02/19(金) 13:02:30.29ID:F46jrkhY
まず、クラス設計する際にテストコードみたいなコードを書いたりしない?
クラス利用者から見たクラスの使い勝手を確かめる意味で

で、何度も試行錯誤して、素晴らしいクラスモデルができたらテストコードを書いて、その後、実装をして...
この作業プロセスができていないから単体テストは無駄だという主張が生まれたと思っていた
459デフォルトの名無しさん
垢版 |
2021/02/19(金) 13:19:31.43ID:IIFo83yT
>>458
abstractクラス<T>から頭の中で書いてるよ、それで十分
テストコードが必要なケースは、mockableAPIから全ケース流す時くらい、実データだとめんどくさいから
2021/02/19(金) 14:03:37.42ID:RipgTCDE
>>456
そうなんだよな。テストしたつもりになってるんだろうなって思うよ

「手動テストでテストできる!
リリース前に、人を大量に集めて人海戦術でテストするんだ!」

なんて言われたら、バグ出たらどうするの?って聞きたくなる

「バグを直して(そこだけ)テストするだけじゃないか!」っていうだろうな
たぶん、そこだけしかテストして無くて全体の再テストをしないだろう
最後にもう一回テストすればいい? いやいやバグはなくならないんだから
最後なんてありえないだろ

時間がないときは小さいバグは運用でカバーとかいってリリースするんだろ?
そしてあとから修正するんだろ?再テストするだろ?
何回小さいバグを修正する?そのたびに人を大量に集めて人海戦術でテストする?
どんだけ時間とコストがかかるんだよ?

たぶんその答えは
「小さいバグの修正なんだから、たぶん他に影響してないはずだ。動いていればヨシっ」
なんだろ?

プロの仕事じゃねーよ

自動テストしてるプロジェクトでは、一日数回のリリースと全テストを行うことだってある
このスピードに手動テストでは追いつけない
461デフォルトの名無しさん
垢版 |
2021/02/19(金) 14:39:19.79ID:IIFo83yT
自動テストじゃほとんど何もできない。
日本語/フォント間違えてるとか色違うとかカクカク動くとか。
2021/02/19(金) 14:45:40.28ID:fG69+Z1U
しばらくぶりに見たプロジェクトの自動テストが通らないことぐらい
開発現場じゃ常識なんだよ!(パプリカ:DCmini)
2021/02/19(金) 14:48:09.77ID:RipgTCDE
>>461
> 日本語/フォント間違えてるとか色違う

それはクリティカルなバグじゃないですねw
正しくデータが処理されることをテストしたことありますか?
どうやってやりましたか?
2021/02/19(金) 14:49:14.42ID:RipgTCDE
>>462
> しばらくぶりに見たプロジェクトの自動テストが通らないことぐらい
それを手動テストして動いたら面白いなw

まあよくあるよね。本当はバグってるのに
表面上は動いてるように見えちゃう
だから手動テストは駄目なんだよ
465デフォルトの名無しさん
垢版 |
2021/02/19(金) 14:55:40.06ID:IIFo83yT
>>463
直接変数に値入れればいいじゃん
コード変わったらまたやる
毎回テスト回すとか無駄
2021/02/19(金) 15:01:38.27ID:RipgTCDE
直接変数に値入れるとは?
まさかデバッガ経由でやってんの?
デバッガを使うと挙動が変わるからテストにならない
2021/02/19(金) 15:01:59.28ID:RipgTCDE
テストは本番用ビルドでやるのが鉄則
468デフォルトの名無しさん
垢版 |
2021/02/19(金) 15:03:42.70ID:IIFo83yT
>>466
mockかデバッガーで十分です
469デフォルトの名無しさん
垢版 |
2021/02/19(金) 15:06:22.55ID:IIFo83yT
客を自動テストして欲しいわ、言うことコロコロ変わるからw
470デフォルトの名無しさん
垢版 |
2021/02/19(金) 15:20:06.23ID:LoU7pdW5
判定させたら99.99%がクソレスだった件
2021/02/19(金) 16:24:05.46ID:RipgTCDE
>>468
mockやデバッガーでどうやって
何千ものテスト項目を実行するの?w
2021/02/19(金) 17:47:03.42ID:IFuFAMn0
要件を確定させずレスバってプログラマどころじゃないな
しかも平日の昼間から真っ赤ってまともじゃないの自己紹介しているようなもの
2021/02/19(金) 17:47:13.51ID:ACLJAhWF
自分はアプリ開発と組み込み開発の経験があるけど、Web開発って単体テストやらんの?

Webは、Python+Django、node、古いPHPの入門書を読んだ程度にしか触れないからリアル開発事情に興味がある(開発経験が無い)
2021/02/19(金) 18:57:54.50ID:Clj7wgUu
web開発ってユーザーが入力欄に何を入れてくるかの組み合わせが
膨大になるから、テストも困難になるな。
2021/02/19(金) 18:58:00.55ID:RipgTCDE
単体テストをやらないのはSIerだよ

ああ、いや、エクセルに単体テスト報告書を書くとか
そういう意味でなら単体テストをやってるよw
テストコードを書かない手動テストのことをSIerは単体テストって言ってる
2021/02/19(金) 19:01:29.71ID:RipgTCDE
ああ、わかりやすいのが見つかった。これがSIerのいう単体テスト(手動テスト)

【Web系最高って言うけと゛本当なの?】siの5次請けから離脱したエンシ゛ニアか゛話してみた

https://www.slideshare.net/yuukinakajima794/websi-67526868#8
8. てすとほうほう winshot、エクセル、人間 スクショ一枚取り忘れただけでも
テストがやり直しになるプレッシャーと進捗表.xls との戦い テスト結果.xlsが
不要なのでめんどくささがない 開発者が目で見ておk

https://www.slideshare.net/yuukinakajima794/websi-67526868#12

12. ソース修正とかテスト バグが出た!→単体テスト障害報告書.xlsを書く→
必要に応じて単 体テストケース.xlsを直す→上司にお話して単体テスト障害報告
書を確認して貰う→テストをする バグが出た!→直す→必要に応じてテストパターン を
増やす→テストする あまりに、あまりにめんどくさい、進捗表.xlsには障害数も書くのでバグゼロは困るらしい
477デフォルトの名無しさん
垢版 |
2021/02/19(金) 19:04:03.28ID:uscWUjsm
田中勇←口だけテストコード大好き変態老人
技術力はゼロwww
2021/02/19(金) 19:19:27.73ID:2/3+b4qC
>>476
まあそういうテストが必要なフェイズは確かにあるが、その前に自動テスト入れるべきではある。
2021/02/19(金) 19:33:50.76ID:RipgTCDE
>>478
どちらにしろ手動テストするなら
全部、手動テストでやっても同じ
テスト時間も変わらない

と思ってるらしいよw
2021/02/19(金) 20:27:04.98ID:ACLJAhWF
>>476
URLの闇が深すぎて怖い
2021/02/19(金) 20:45:17.65ID:B4GlCKY0
>>473
Ruby on Rails では、minitest/RSpec という2種類のテストフレームワークがある。
単体/システムテストの2つある

Rails 6 からは、環境を丸ごとコピーして、並列テストもできる

TDD では、テストが仕様書。
Excel で管理したりしない
2021/02/19(金) 21:59:46.75ID:zJ55MHzK
>>454
それ扱うコードの質の違いが問題じゃないだろ
テストコードの変更が必要になるのは「頻繁に仕様が変わる」のが原因で当然手動テストでもテスト手順書の変更が必要になるだろ
根本がわかってなさ過ぎ
2021/02/19(金) 22:05:12.15ID:ACLJAhWF
>>481
おお、なんかスピード感あって楽しそうだな
TDDいいよね!本業の組み込み自社開発でも導入した
何で長年気が付かなかったのか不思議なレベル

この手のノウハウは組み込みより圧倒的にWebの方が進んでるから、俺にとっては上位レイヤーの開発ノウハウが新鮮に感じる
2021/02/19(金) 22:07:51.51ID:uYMrqqBZ
やっぱり単体テストでそこまで用意する意味ねぇって
時間がかかってるのデバイス周り出し及びじゃねぇよコレ
2021/02/19(金) 22:08:44.56ID:/Wn3Sj0O
結合入ってから頑張ろうよ
486481
垢版 |
2021/02/19(金) 22:31:54.64ID:B4GlCKY0
伊藤淳一などが翻訳してる「Everyday Rails - RSpecによるRailsテスト入門」は有名な本

テストに関しては、ソニックガーデンの伊藤淳一の動画・Qiita などを読めばよい
2021/02/20(土) 00:24:53.76ID:pHrkUBl9
>>484
デバイスはモックを使いましょう
ソフトウェアのテストをするのに
本物のデバイスは必要ありません
2021/02/20(土) 01:40:17.33ID:LGEbkfhl
>>487
いや、それだとレスポンスも早過ぎるしリトライも起きないから何のテストにもなってない
あと何よりデバイス出ないから返ってきて欲しい値を手動で設定するとか苦痛過ぎる
ソフトでset○○って入れた値が次のget○○に反映されるみたいなとこまで作れないやろ
2021/02/20(土) 01:44:19.60ID:pHrkUBl9
何のためにモック使ってるんだ?
素人かなぁ

レスポンスの時間を自由に変えられるのがモックの利点だし
リトライする状態を自由に再現できるのもモックの利点だし
デバイスから帰ってきてほしい値を自由に設定できるのもモックの利点

うーん、わかってない人が、意味不明な答えをしてる状態だw

まずそもそもモックはお前が行った問題点を解決するための
ものだということを知りましょう
2021/02/20(土) 01:45:23.84ID:pHrkUBl9
まあ正確にはスタブだけどね
みんなごっちゃにして使ってるから俺もごっちゃにして使ってるw
2021/02/20(土) 01:48:18.86ID:mqOV0mvT
組み込みでは単体テストよりも実機テストが鬼門
どのプロジェクトでも最初は自動化を夢見ても、実現できたプロジェクトは少ない

自動化ぶん回してたら発熱して煙出てたり電源不足で再起動しちゃったり他の開発機器のノイズ拾ってコケまくったり・・・
492デフォルトの名無しさん
垢版 |
2021/02/20(土) 01:54:30.04ID:MdDLRkGY
MartinFowlerのMocksAre n't Stubsなど、テストでのモックとスタブに関するさまざまな記事を
読みましたが、それでも違いはわかりません。モックvsスタブ=行動テストvs状態テストと言われ
ますし、ライフサイクルが違うと言われますが、それでも違いはわかりません。
先輩がいつもモックモックモック言うので、すこし嫌になりました。
2021/02/20(土) 02:12:02.30ID:pHrkUBl9
>>491
組み込みのハードの部分が多いのかソフトの部分が多いのか
ハードの部分が多いなら、そりゃソフトウェアのテストじゃなくてハードウェアのテストだ

だが組み込みでもソフトウェアは多いだろ?
そっちはハードウェアなしでテストできる

めんどくさいからソフトウェア部分も
ハードウェア使ってテストするんだよ
時間がかかってしょうがない

っていうのならソフトウェア部分も
ハードウェア使ってじゃないとテストできないのなら
そりゃそうだろうよとしかw
2021/02/20(土) 02:24:18.76ID:ZkUFennS
>>489
いやーやめた方がいい

値1つとってもそう単純じゃない
例えばある値を3.223から増加量0.005で7まで変化させたいと
その時6.997で装置は処理を止めましたと
これはソフトからしたらクソでも多分バグじゃねぇんだわ
じゃあ、増加量0.001にしたら7になるのかと?
今度は6.995で止まったと
まだ足せんじゃん足せよゴミカスと言いたいが
デバイスのハード的なもんを無理矢理デジタルに直してるようなのはこんなのが限界のときあるんだわ
精度も条件によって変わったりね
多分ハードの値って一つ一つこういう変な癖があって何でもかんでもうまくはいかないと思うよ

ってなるとやっぱり重要なのって結合なんだよね
デバイスと絡んだ値があるとこはすんなりいかないことが多い
2021/02/20(土) 02:32:10.26ID:mqOV0mvT
>>493
落ち着け、後半日本語めちゃくちゃだぞ・・・
2021/02/20(土) 02:33:03.30ID:56yjs2OO
>>494
それ実機でテストする段階にならないとわからないことなの?

COCOAみたいなのもあるし実機テストは必須だとは思うが
それ以前にインターフェース仕様に準じたテストしといたほうがよくない?
2021/02/20(土) 02:35:06.23ID:/l8xxO7y
>>496
そこに金くれる会社ねーな
よくあることだし
でもやってみないと具合がわからん
2021/02/20(土) 02:37:16.94ID:3iHtf1vt
>>492
マーチンさんはその記事を出すのが遅かったよねw
モックという言葉が広く普及してしまった後だった
rspec界隈?ではテストダブルという言葉を使って言葉を整理しようとしたが
一部でのみ使われて広く普及していない

俺的には、ダミーの値を返すオブジェクトがスタブ
スタブの反対はスパイで、スパイは呼び出された回数や引数を記録しておいて
あとで検証できるもの
スタブとスパイをあわせてモックとしたほうが良かった気がするな

世間的には、スタブ vs モック(スパイはモックの高機能版)と考えればいいよ
スパイは後から検証できるように便利なオブジェクトになってるが
モックはそんな機能がない、もしくは低機能。
だから「テスト対象のコード」から「モック」を呼び出した時に渡されたデータの検証ぐらいしかできない
またスパイもモックも結局はダミーの値を返さないとテスト対象は動かないので多くの場合スタブの機能も兼ねてる

スタブ・・・テスト対象がスタブを呼び出し、スタブはダミーの値を返すだけ
モック・・・テスト対象がモックを呼び出し、その内容をテストする+スタブ(必須ではないが多くの場合必要)
スパイ・・・テスト対象がスパイを呼び出し、その内容を記録しておいて後からテストする+スタブ(必須ではないが多くの場合必要)

テストダブル・・・上記の総称
2021/02/20(土) 02:41:28.39ID:WavZWbYg
>>494
> いやーやめた方がいい
やめた方がいい理由は?

> 値1つとってもそう単純じゃない
> 例えばある値を3.223から増加量0.005で7まで変化させたいと
> その時6.997で装置は処理を止めましたと
> これはソフトからしたらクソでも多分バグじゃねぇんだわ

バグじゃないなら、その値でテストするだけのこと
お前は、6.997でテストしたか? 6.995でテストしたか?
してないよな。だって装置が都合よくそんな値で止まってくれないんだから

ハードウェアを使って手動でテストすると 6.995 や 6.997 で止めるのが難しいから
テストの時間がかかる。そういう場合にモックを使うと 6.995 や 6.997 の値を作り出すことができる

単体テストであればデバイスの値を自由に作ることができる
2021/02/20(土) 02:44:52.28ID:WavZWbYg
>>497
> でもやってみないと具合がわからん

やってみれば具合がわかるだろ
そしたらそれをテストコードにするだけだろ

おまえはやってみて、その場でコード修正して終わりか?
リグレッションテストはしないのか?当然するよな

別の機種のための修正が、別の機種で不具合を起こす場合
Aでうまく行かない→修正
Bでうまく行かなくなった→修正
Aでまたテストして→修正
Bでも大丈夫かな?→修正

って機種を何度も変更して、同じテストを何度も「手動」で繰り返すんだろ?

テストコードにしてれば、この繰り返しを
自動でできるって言ってるんだよ
501デフォルトの名無しさん
垢版 |
2021/02/20(土) 06:09:56.09ID:Mzr1Xumx
>>477
それ誰?
2021/02/20(土) 09:25:13.41ID:EvFy/+SD
>>499
ええ、いくつ値あると思ってんねん
その一つ一つにデバック用動作つけんの?無理っしょ?
2021/02/20(土) 09:49:08.60ID:xSEyIqRP
>>502
はっきり言えよ。たくさん値があって大変だから
手動テストではテストしませんって

テストしてないんだろ?いくつ値あると思ってんねん(笑)
2021/02/20(土) 09:55:55.93ID:O4DpQFuV
クソコードとは何か
2021/02/20(土) 10:00:30.75ID:xSEyIqRP
テストが手動でテストをするのに膨大な時間がかかるコード
2021/02/20(土) 10:03:35.37ID:EvFy/+SD
>>503
え?モックとか言うやつの話っしょ?
2021/02/20(土) 10:04:35.86ID:EvFy/+SD
むしろこういう複雑な動作されるのはそもそも単体じゃないじゃん
2021/02/20(土) 10:06:03.68ID:xSEyIqRP
>>506
だからお前はモックを使わないで
全部手動で膨大な時間をかけてやるんだって話してるんでしょ?

あ、テストしてないんだっけ?w
プロの仕事じゃないなぁ
2021/02/20(土) 10:07:47.77ID:xSEyIqRP
>>507
複雑なのはたくさん値があってその組み合わせが膨大だから
手動テストも、その組み合わせをテストしないといけない
時間がかかって現実的だからテストしないって言ってる?
手動テストはテストをしないこと・・・意味がわからんw
510デフォルトの名無しさん
垢版 |
2021/02/20(土) 10:24:31.88ID:MdDLRkGY
>>498
ありがとうございます。だけどプロトコルバッファーなどgRPCで生成されるコードにもStubって使うので
もう全部Stubで広義的にはいいじゃんって思います。付加機能があったり、ライフサイクルが複雑であって
テストコードの話に限定できてメインソースじゃない単語だと「モック」と言われてるような気もします。
先輩が見てるといけないので、先輩が嫌いな訳じゃないです、モックモックモックいうのはイライラするので
やめてほしいです。ここで「手動テストは○○○(否定表現)」を連呼する人が先輩に似てます。
2021/02/20(土) 10:32:54.85ID:xSEyIqRP
「手動テストは時間がかかる」
これは否定表現じゃないからセーフだなw
512デフォルトの名無しさん
垢版 |
2021/02/20(土) 10:37:02.86ID:MdDLRkGY
もうこの際だからハッキリ言うと、先輩、それ誰も知ってるから鬼の首を取ったように言われても
ぼくらは困惑ばかりです。正直ウザいです。みんなから嫌われてます
2021/02/20(土) 10:49:31.96ID:EvFy/+SD
でもそこまで作って尚まだ単体テストなんだぜソレw
ぜってーねーよw
もう繋げてテストしようよw
無駄だよw
2021/02/20(土) 10:51:50.41ID:xSEyIqRP
なんだ?今まであれだけ言い返してたのに
今度は何も言い返してないではないかw
2021/02/20(土) 10:56:54.38ID:NUXXCfLF
キチガイの巣窟スレ
2021/02/20(土) 13:03:05.75ID:226xMBL/
もう流れ追うのも面倒になってる奴多いやろこれw
当人同士は必死になっちゃってるんで引けないだろうけど
あとワイの研究結果を勝手に報告するで(`・ω・´)キリッ
適当なソースが思い浮かばなかったんでopenjdkのソースを調査したよ

$ grep --include='*.java' -hroE "new +[^<\( \[]+" jdk-master/src | sed -E 's/new +//g' | sort | uniq -c | sort -nr | head -n 30
5039 String
4884 IllegalArgumentException
3231 Object
3099 ArrayList
2465 byte
2186 int
1718 HashMap
1563 IOException
1548 StringBuilder
1513 UnsupportedOperationException
1465 NullPointerException
1263 RuntimeException
1170 IllegalStateException
976 HashSet
  :(以下略)

結論:Stringクラスはワイ理論ではもっとも再利用性の有る優れたクラス
2021/02/20(土) 13:04:05.48ID:226xMBL/
一応参考までに省略部分も張っとくわ

924 InternalError
886 {@code
755 XColor
742 AssertionError
737 Dimension
710 char
697 Rectangle
632 instance
610 File
594 value
486 DerOutputStream
466 Vector
436 double
408 PrivilegedAction
394 InvalidKeyException
393 Label
2021/02/21(日) 19:53:59.50ID:10q0ACVq
誰か突っ込んでやれよ
2021/02/21(日) 21:30:03.47ID:IppcSdfg
再利用できないコードの特徴
・凝集度が低い
・結合度が高い

この2つがセットだと、自分が使いたい機能に対して無関心な知識まで要求される
そういうのがクソコードの筆頭だと思う

Stringは、上手く実装されている例だな
520デフォルトの名無しさん
垢版 |
2021/02/22(月) 00:29:45.74ID:nzCnkmXH
もしかして文字列出力が多いソフトウェアだと文字列クラスの利用が多くなるんじゃないか?

そうでなくとも5000個の文字列が各所に散らばってるんだろ
どうやって文章を管理して辻褄合わせるんだよ
2021/02/22(月) 00:48:41.83ID:ESOE+x1C
まずさ
別に出来がいいから使ってるわけじゃ無いだろ?
クラスの造りが優秀なのとソースで使用回数が多いことに関連がそんなねぇよ
業務アプリだったらLogってのが簡単にStringをぶっちぎるのなんて簡単に想像できる
2021/02/22(月) 01:24:32.76ID:FgGbi9an
あれ?手動テストの話終わったの?
もっと罵り合えよつまんねーな
2021/02/22(月) 02:20:20.48ID:Vv8+u1qd
最後はこれでおしまい

>>507
複雑なのはたくさん値があってその組み合わせが膨大だから
手動テストも、その組み合わせをテストしないといけない
時間がかかって現実的だからテストしないって言ってる?
手動テストはテストをしないこと・・・意味がわからんw
2021/02/22(月) 02:33:01.98ID:ESOE+x1C
いや、流石にハードの動作知らんやつが設定値7に対して6.997で止まることを想定できんやろ
どんな組み合わせをやっても無理なはずやで
テキトーなことを言うな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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