クソコードとは何か

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

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

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

等、クソコードを見た時に「あっ、これクソコードだ」って認識する根拠を挙げていきましょう。
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で止まることを想定できんやろ
どんな組み合わせをやっても無理なはずやで
テキトーなことを言うな
2021/02/22(月) 02:59:19.84ID:Vv8+u1qd
>>524
ハードの動作知らんやつが手動でテストしても
何の解決もしないけど?頭大丈夫か?
526デフォルトの名無しさん
垢版 |
2021/02/22(月) 03:09:12.22ID:PA6Gvk4i
ここまでをまとめると、自動テストは暇なら書く程度の価値
って事でおk?
2021/02/22(月) 05:42:49.54ID:Vv8+u1qd
手動テストに膨大な時間がかかるので
自動化してもっと価値が高いことに時間を使いましょうって話だよ
528デフォルトの名無しさん
垢版 |
2021/02/22(月) 05:49:19.42ID:PA6Gvk4i
手動テストに膨大な時間なんかかからないと思うんだが
そもそも
その時間まで積んだうえの開発コストだと思うんだが
529デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:03:54.54ID:2p9yrjmm
コロナウイルス→鳥インフルH5N8→人

もうダメだな、鶏肉も食えない
2021/02/22(月) 06:23:03.40ID:Vv8+u1qd
>>528
俺が作ってる1万行程度のツールはテスト項目数が1000個以上ある
この項目数は多いというほどのものでもないだろう
このテストを全て自動的に実行する時間はに30秒程度

もし手動で実行するなら1つあたり10秒で終わらせられたとしても
1万秒、300倍以上もの時間がかかっている
1万秒といったら、2時間半以上にもなる
開発しながらテストとかやってられないレベル

大きなシステムではテスト項目数は数万、数十万にもなるから
テストに数日かかる。コードを修正するたびにそんな事やってられないから
手動テストはテストをサボることになる
531デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:34:50.69ID:PA6Gvk4i
>>530
毎回やる必要のないテストばかりだろ?
2021/02/22(月) 06:38:20.47ID:Vv8+u1qd
> その時間まで積んだうえの開発コストだと思うんだが

開発コストは低い方がいいだろ?
そうすりゃ請求金額の多くを儲けにできる

1ヶ月かかる仕事を効率化して1週間でできるようにしたから
販売金額も1/4でいいですよなんて、技術料ゼロの儲けが出ない
ビジネスモデルで仕事してるなら可哀想としか言うしかないがなw
2021/02/22(月) 06:40:44.17ID:Vv8+u1qd
>>531
毎回やらなくていいとはどうやって判断したのか?
いつも想定してない所でバグが出るもんだ
コミットのたびにCIで全テストをするのは当たり前

ローカルでは一部のテストだけを行えばいいが
CIで自動的に全テストを行うのは普通の話だ
そこまでの高い信頼性を手動テストでやってるか?
534デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:41:49.22ID:PA6Gvk4i
自動テストで完結しないのに、議論に値しないだろ
2021/02/22(月) 06:42:47.10ID:Vv8+u1qd
>>534
論点はどれだけ時間を減らせるかだ
手動でしかできない部分だけ手動でやる
自動でできる部分も含めて全部手動でやる
どちらが時間がかかるか言うまでもないな
536デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:42:57.10ID:PA6Gvk4i
自動テストはヒマなら書くレベルの価値しかない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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