クソコードとは何か

レス数が1000を超えています。これ以上書き込みはできません。
2021/01/30(土) 17:33:05.78ID:BjNTZWUI
このスレはクソコードとは何かを考えるスレです。

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

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

等、クソコードを見た時に「あっ、これクソコードだ」って認識する根拠を挙げていきましょう。
2021/01/30(土) 17:33:42.44ID:BjNTZWUI
もうレスバの予感しかしない。
産まれたての子鹿のように震えてるよ。
2021/01/31(日) 10:20:47.27ID:9VN6dodl
>>1
クソはお前の頭だよ
4デフォルトの名無しさん
垢版 |
2021/01/31(日) 11:28:04.42ID:X7lGC0go
iostream ωωω
2021/01/31(日) 12:06:18.22ID:otlkJ8kc
>>3
staticおじさん乙
2021/01/31(日) 12:22:48.25ID:Nt4hAxS1
開幕から自分のコードに突き刺さって痛い
7デフォルトの名無しさん
垢版 |
2021/01/31(日) 12:46:25.58ID:I1+jaQmy
. /⌒ヽ
  ∩ ^ω^) な ん だ
  |   ⊂ノ
 |   _⊃
  し ⌒.   ___
   _/ ⌒ ⌒ \ うん、うん、
  /)) (●) (●)  ヽ それで?
  |∩ (_人_)  |
  / ノ、_ヽノ_ノ ̄)
 / /      /フ_/
 L_/\    \(
2021/01/31(日) 12:59:59.35ID:Nt4hAxS1
テストコードが無いのにテストしたとか言うプログラマーの提出するコード
2021/01/31(日) 16:11:11.70ID:MhKR2tlg
同じコードを何度も書く
2021/01/31(日) 16:33:43.28ID:Kwx3DUOx
コードとコードつなぎ合わせて一つのプログラム作ったけどごちゃごちゃでクソコードになってたw
2021/01/31(日) 16:59:37.31ID:Ti7TRi+9
function getPrice(id) {
const price = clothPrice.filter({ id }).first()
return price
}

はい、どこがクソか指摘してみて
2021/01/31(日) 17:27:33.78ID:JUmaLjMc
どこもクソじゃない
2021/01/31(日) 17:28:15.94ID:TZSorCef
>>11
getPrice関数いらなくね?
...で合ってる?

理由の指摘の仕方はどうしようかな
2021/01/31(日) 17:29:51.90ID:JUmaLjMc
>>13
理由を言えないならそれはレビューではない
2021/01/31(日) 17:33:42.78ID:TZSorCef
まず、このコードを見てクソだと気がつけない人相手だと、言い方が重要。
だから、説明に困ってる。
なぜ、気が付かないのかとか。
考えてるだけだよ。気がついた人は先に理由を述べてほしいが。
2021/01/31(日) 17:35:04.85ID:JUmaLjMc
>>15
相手のことはまず忘れろ。
理由を言え。

そうすればあとはその理由をどう言えば伝わるかという
次の話に行けるだろ
2021/01/31(日) 17:40:45.07ID:TZSorCef
getPrice(id) 関数とclothPrice.filter({ id }).first()
ってやってる事は一緒だよね?
責務も殆ど一緒。
些細な違いと言えばfirst以外を呼べなくしたことだが...
たぶん、インスタンスの名称からしてclothPriceをユーザー側に隠蔽する必要も無いのに隠蔽し、挙げ句に役割のかぶったほぼ無意味な関数を無駄に増やしてしまってる。

だから、クソ...だと思った。
2021/01/31(日) 17:42:50.72ID:TZSorCef
あと、一言で言えば...もしかしてドメインモデル貧血症?
2021/01/31(日) 17:46:41.31ID:JUmaLjMc
> getPrice(id) 関数とclothPrice.filter({ id }).first()
> ってやってる事は一緒だよね?

関数とその中のコードが
やってることが一緒になるのは当たり前です。

関数にする意味は、コードの可読性を上げるためです。

「clothPrice.filter({ id }).first()って何やってるの?」
「Priceをgetしてます!( getPrice(id))!」

という会話がコードレビューであるだろうなと少しでも思ったら
それは関数にすることで可読性が上がっているということです。
2021/01/31(日) 17:57:42.08ID:TZSorCef
>>19

> > getPrice(id) 関数とclothPrice.filter({ id }).first()
> > ってやってる事は一緒だよね?
>
> 関数とその中のコードが
> やってることが一緒になるのは当たり前です。

実装対象の仕様が1行程度のコードで住んでいる点をまず気にして。

> 関数にする意味は、コードの可読性を上げるためです。

可読性は上がったのだろうか?
だって、何のインスタンスのオブジェクトが返されるか名前から想像できますか?
2021/01/31(日) 18:00:20.47ID:JUmaLjMc
> だって、何のインスタンスのオブジェクトが返されるか名前から想像できますか?

逆。「何のインスタンスのオブジェクトが返されるか」を意識してはいけない。
それはかっこいい言葉で言うならデメテル法則に反している
実装の詳細を意識させるな
2021/01/31(日) 18:02:13.86ID:TZSorCef
>>11

clothPrice.filter({ id }).first()
だったら...clothPriceインスタンスのPriceが帰ってくるんだなーって一目で分かるけど

getPrice(id)
だったら...え?何が帰ってくるのこれ?
ってなりませんか?
仮にJavaみたいな型宣言が必要な言語だったとしても、何のインスタンスのPriceが得られるのかわからないですよね?

...って、これが本当の理由かっ!?
色々、問題が想像つくから、回答に迷ってる
2021/01/31(日) 18:03:52.46ID:JUmaLjMc
> getPrice(id)
> だったら...え?何が帰ってくるのこれ?
> ってなりませんか?

そのオブジェクトのpriceだろ
そのオブジェクトが内部で使用している〜とかを意識しないといけないのはデメテルの法則違反
2021/01/31(日) 18:04:38.99ID:JUmaLjMc
クソコードじゃないって最初から言ってるだろ
2021/01/31(日) 18:05:06.22ID:TZSorCef
>>21
setじゃなくて、getだよね?
それって、つまり...誰かにgetを呼ばせる前提の関数なんですよ。

あなたに問いますけど、getPriceって誰に何の為に呼んでもらう関数だと思いますか?
2021/01/31(日) 18:06:51.44ID:JUmaLjMc
> あなたに問いますけど、getPriceって誰に何の為に呼んでもらう関数だと思いますか?

このコードではそれは書いてないのだから、そこを勝手に想像して
自分の都合の良い解釈をするのは、それ自体が間違い
2021/01/31(日) 18:07:52.12ID:TZSorCef
出題者さんの回答が知りたいな...。
まぁ、二人しか答えてないけど。
2021/01/31(日) 18:13:16.87ID:TZSorCef
>>26
> このコードではそれは書いてないのだから、そこを勝手に想像して
> 自分の都合の良い解釈をするのは、それ自体が間違い

では、clothPrice.filter({ id }).first()は何をしているメソッドだも思いますか?
こっちは...なんとなくわかりませんか?
私はstiftを触ったことないですが、似たような言語で似たような記述をしたことがあるので推測できます。わかりやすいですね。
2021/01/31(日) 18:14:04.75ID:JUmaLjMc
> では、clothPrice.filter({ id }).first()は何をしているメソッドだも思いますか?

getPriceをしてるメソッド
2021/01/31(日) 18:14:59.04ID:TZSorCef
って、よく見たらjsか!?まぁ、どっちでもいいや。
何となくでわかる記述って大切じゃないですか?
2021/01/31(日) 18:19:27.38ID:JUmaLjMc
>>30
理由が言えないのを「何となくこっちが良いと思った」でごまかすなよ
それは理由がないという
2021/01/31(日) 18:21:37.30ID:TZSorCef
理由は必死に説明しているつもりなんだけどなぁ...。
こうなるから慎重に説明を考えていたんだけどなぁ...
2021/01/31(日) 18:22:44.83ID:TZSorCef
何となくでわかるの意味が分かってないことが分かった...。そもそも、filterの意味が分かってない?
2021/01/31(日) 18:25:20.39ID:TZSorCef
何となくこっちが良い
じゃなくて
コードを見たとき、記述から実装内容を察することができることが重要と言うべきだったかな...
言葉選びを間違えるとこうなるから慎重に説明をしないとなんだが...うーん、説明下手orz
2021/01/31(日) 18:27:15.53ID:JUmaLjMc
実装者の視点しか持ってないんだよな。

クラス設計というのは、どういうインターフェースにすれば
クラスが"使いやすいか" というクラスの利用者からの視点で設計する

getPriceというメソッドではなく、その中のコードの実装の
話をしてる時点で視野が狭いのは明らか
テストコードも書いたことないだろ?
テストコードは必然的に使いやすいクラスであることが要求されるからな
2021/01/31(日) 18:27:53.96ID:JUmaLjMc
> コードを見たとき、記述から実装内容を察することができることが重要と言うべきだったかな...

実装の詳細は隠蔽しろって習わなかったのか?
2021/01/31(日) 18:31:40.92ID:TZSorCef
別に、実装者だけではなくライブラリユーザーの事を考えてますよ。
実際、ライブラリ開発者ですしお寿司。

じゃなければ、getPriceって誰か何のためにーなんて質問をする発想はないよ。
たしかに、実装の詳細は隠蔽するべきだね。

でも、私が注目しているのは、まさにユーザビリティに相当する部分です。
2021/01/31(日) 18:33:13.55ID:JUmaLjMc
じゃあ実装の詳細を無視して話をしよう

function getPrice(id) {
・・・隠蔽。1行かもしれないし100行かもしれない・・・
}
2021/01/31(日) 18:35:19.06ID:TZSorCef
1.getPriceが必要な場面を想像できますか?
→想像すること自体が間違いだと回答しましたが、はいorいいえ でお願いします。
2.それが想像できないのはなぜですか?
2021/01/31(日) 18:37:59.05ID:JUmaLjMc
1.getPriceが必要な場面を想像できますか?
いいえ。

2.それが想像できないのはなぜですか?
出題に書いてないからです。

逆に出題に「これは商品オブジェクトです」と書いてあれば
getPriceが必要な場面を想像できます。
2021/01/31(日) 18:39:36.56ID:TZSorCef
>>38
もしかして...getPriceがクラスメソッドの実装ではない事に気がついていない?
2021/01/31(日) 18:41:32.55ID:JUmaLjMc
>>41
わかってるから"実装を取り除いて"、実装"以外"を書いたんですが?
その質問の意図はなんですか?
2021/01/31(日) 18:43:52.76ID:TZSorCef
じゃあ、もしもですよ?出題内容が
sin関数だったらどうですか?
>>40と同じノリで答えてください。
2021/01/31(日) 18:45:22.65ID:JUmaLjMc
>>43
何オブジェクトのsin関数ですか?

https://ejje.weblio.jp/content/sin
主な意味 (宗教・道徳上の)罪、罪業、過失、違反、ばち当たりなこと、ばかなこと
2021/01/31(日) 18:46:09.44ID:TZSorCef
>>44
いえいえ、ただのsin関数ですよ。数学の。
2021/01/31(日) 18:47:29.69ID:JUmaLjMc
>>45
同じノリで答えろと言われたから、同じノリで答えただけですが?

出題に、何オブジェクトのsinか書いてないから想像できない。
数学オブジェクトのsinと出題に書いてあれば想像できます。
>>40と全く同じノリで答えましたが?
2021/01/31(日) 18:49:00.47ID:TZSorCef
...もしかして、三角関数知らない?
もうギブアップ。
2021/01/31(日) 18:49:45.66ID:JUmaLjMc
>>47
sinという言葉には色んな意味があります。
出題に書いてないことを勝手に想像しないように
同じノリで答えてますw
2021/01/31(日) 18:50:29.12ID:TZSorCef
酷い意地悪を見た
2021/01/31(日) 18:54:20.45ID:uAw68cw/
面白すぎるだろこのやり取りw
最初から相手の話を聞く気がない人に説明をしても無駄無駄
2021/01/31(日) 18:54:30.12ID:uAw68cw/
諦めろ>>49!お疲れ様!
2021/01/31(日) 18:58:21.14ID:JUmaLjMc
stdnum.ca.sin SIN (Canadian Social Insurance Number).

https://arthurdejong.org/python-stdnum/doc/1.15/stdnum.ca.sin#module-stdnum.ca.sin

実際にあるみたいだなw
2021/01/31(日) 18:59:23.14ID:uAw68cw/
sin関数は一目で具体的な用途が判るが、getPriceはそうじゃないし使い勝手もイマイチだって言いたいんだろ
察してやれ
2021/01/31(日) 19:00:26.13ID:JUmaLjMc
>>50
ずっと答えてますが?

数学オブジェクトと出題に書いてないのに
想像で数学オブジェクトだと決めつけるのは良くないですよ?
違いますか?

厳密な定義ができるのはプログラマの能力の一つでしょう
2021/01/31(日) 19:01:36.35ID:JUmaLjMc
>>53
だから、getPriceには出題に書いてないからわからない。
これが商品オブジェクト、 product.getPrice() と
出題に書いてあればわかると答えたんですが?
2021/01/31(日) 19:03:23.18ID:TZSorCef
>>55
> だから、getPriceには出題に書いてないからわからない。
↑これが問題なの。
2021/01/31(日) 19:04:29.63ID:TZSorCef
>>53
よくわかりましたね。正解。
2021/01/31(日) 19:05:57.07ID:JUmaLjMc
>>56
俺の答えが正解っていいたいのか?w

俺が答えを言ってから、後出しで同じだって言うなよwww
2021/01/31(日) 19:09:21.55ID:JUmaLjMc
function getPrice(id) {
const price = clothPrice.filter({ id }).first()
return price
}

これが一行(二行)だから関数にすべきでないとか
中身を直接書けば何やってるかわかるから関数にすべきでないというならば、

tan(数学のタンジェント)関数はなぜ用意されているのでしょうか?

double tan(double x) {
return sin(x) / cos(x);
}

たった一行です。中身を直接書けば何をやってるかわかります。
同じ理屈であれば、不要なはずです。
そういう結論になるはずです。


tanを関数にする理由は明らかですね。最初に言った理由と同じです
「clothPrice.filter({ id }).first()は何やってるの?」という質問が出るのであれば
それを関数にすることで可読性が上がるのです。中で何をやってるかは
意識させないようにするのが正しい設計です。
2021/01/31(日) 19:22:21.34ID:TZSorCef
>>58
だって貴方、>>12でどこもクソコードじゃないって答えたじゃん
2021/01/31(日) 19:24:32.72ID:JUmaLjMc
コードはクソじゃないですが?
出題に書いてないって言うのは、出題がクソという意味ですが?

いい加減諦めたら?w
2021/01/31(日) 19:24:56.89ID:Ti7TRi+9
風呂入ってたら議論が白熱してた
俺どうすればいい?
2021/01/31(日) 19:25:29.66ID:JUmaLjMc
オナニーしてねろ
2021/01/31(日) 19:26:58.02ID:Ti7TRi+9
はい
2021/01/31(日) 19:28:30.31ID:TZSorCef
おかえり
もう、疲れたよパトラッシュ...

ところで、パトラッシュ、答えが知りたいな
2021/01/31(日) 19:30:52.25ID:Ti7TRi+9
てゆーか、答え言っていいの?
一応想定してた回答はあるけど
2021/01/31(日) 19:32:35.81ID:TZSorCef
いいよ!気になる。
2021/01/31(日) 19:34:13.36ID:JUmaLjMc
すでに指摘した点を蒸し返すなよ?
2021/01/31(日) 19:35:02.92ID:JUmaLjMc
せめてデメテルの法則ぐらいはわかった上で発言してくれな
2021/01/31(日) 19:35:18.81ID:Ti7TRi+9
一応俺の想定では>>22が正解
ただ俺はデメテルの法則違反とか知らんから色々勉強になった
一概にこれが正解とは言えないんだなーと
2021/01/31(日) 19:36:30.29ID:Ti7TRi+9
>>70
補足すると関数名ね
getPrice -> getClothPrice
にした方がいいんじゃないかなってこと
2021/01/31(日) 19:37:21.40ID:JUmaLjMc
>>71
それはgetPriceが属するオブジェクトによる
一概にそう言えないし、それは出題に書いてない
2021/01/31(日) 19:37:54.79ID:TZSorCef
>>71
ありがとう。
まぁ、俺も一部、知らんことあったから勉強にはなったよ。
2021/01/31(日) 19:38:59.71ID:Ti7TRi+9
>>72
まぁ思い付きの出題だから、その辺はすまんかった
2021/01/31(日) 19:39:20.06ID:JUmaLjMc
俺は何の勉強にもなってねーなw
2021/01/31(日) 20:18:52.57ID:OeszCOeJ
class Box {
private int h;
private int w;
public int getHeight(){
return this.h;
}
public int getWidth(){
return this.w;
}

public int setHeight(int value) {
this.h = value;
}
public int setWidth(int value){
this.w = value;
}

}

俺も出題しよっと
俺は上記、箱クラスを作った
カプセル化もしてるし、インスタンス化もできるし、まさにオブジェクト指向(キリッ)

さて、何が駄目でしょうか

前提...命名規則やインデント等の書き方の問題ではない
考えるべきこと...クラス設計的な問題点を見つけよ
2021/01/31(日) 20:21:04.97ID:OeszCOeJ
初期値書き忘れた
Javaの言語仕様で0が入るって事で
2021/01/31(日) 20:33:10.20ID:JUmaLjMc
>>76
クラスレベルでhやwといった一文字は使うべきではない
座標としての意味のxやyなら問題ないが
2021/01/31(日) 20:34:17.92ID:JUmaLjMc
一文字変数が許されるのは、広くても関数レベル
可能ならそれよりも小さいブロックレベルまで
2021/01/31(日) 20:36:14.99ID:JUmaLjMc
理由は「パッっと見」でクラス全体を見ることは普通は無理だから。
一文字変数は変数名から意図がわからないのでパッっと見でコードも同時に見れることが前提
2021/01/31(日) 20:36:31.43ID:eKqnOz0E
うーん、この
2021/01/31(日) 20:38:19.85ID:OeszCOeJ
問題文に「命名規則は関係ない」って書いてあるのになぁ
2021/01/31(日) 20:39:22.25ID:JUmaLjMc
一文字変数は命名規則ではない
2021/01/31(日) 20:41:27.15ID:OeszCOeJ
脳がバグってるのか?
どうみても...ビジ...面白いから黙っておこう
85デフォルトの名無しさん
垢版 |
2021/01/31(日) 22:12:44.94ID:HlWuf0AU
>>76
hとwを高々保持するのが目的のようなやつをクラスにする必要あるやろかとは思う
あとプライベートにしてアクセッサを用意するのはいかにもなんだけど
これは言うほど嬉しくも無いと結論づけてもういいんじゃないかな
こーいうデータ保持クラスおまえらも山ほど書いてきたと思うけど
嬉しかったことあるかこれ?
結局これを受け入れる側のクラスライブラリとべったりの未来しか見えないし
2021/01/31(日) 22:30:49.34ID:g6MPPGEA
>>85
素晴らしい!正解!!
理由説明も、その通り!

まぁ、解決するとしたら、そもそもこんなクラスを作るなorドメインロジックをしっかり記述しましょうってところか。

オブジェクト指向(キリッ)とか言いつつ、完全にオブジェクト指向の本質を無視したプログラムでした。
2021/01/31(日) 23:07:03.11ID:kFPKIccw
でも教科書にはこういう例しか載っていないんだよな・・・
2021/01/31(日) 23:28:33.14ID:xTcVCzeY
たしかに

Box box = new Box();

box.setHeight(10);
box.getHeight();
box.setWidth(7);

こんなことやってても虚しいなw
せめて

Box box1 = new Box(10, 7);
Box box2 = new Box(10, 5);

if( box1.area() < box2.area() ){}

くらいのことはできてほしいな
あと、コンストラクタで変な値(マイナスとか)を入れたら例外を出すとか

教科書はまだ未開拓なところがあるからしゃーない
最近の学生がどんな教科書を読んでるかは知らないけど
89デフォルトの名無しさん
垢版 |
2021/01/31(日) 23:28:37.40ID:HlWuf0AU
実装ありきでそれに対するアクセッサという順にしか考えないし
実装ではなくてインタフェースに対してプログラミングするとかも分かってない
インタフェースを設計する上で見るべきところに思考がフォーカスされてない
C#はプロパティがあって簡潔で嬉しい!これでアクセッサ書き放題ぐへへってなもん
9089
垢版 |
2021/01/31(日) 23:29:48.84ID:HlWuf0AU
あ、流れ読んでなかった
>>89はどれに対するレスじゃなくて雑感ね
2021/01/31(日) 23:32:30.66ID:JUmaLjMc
ふう。やれやれ

アクセッサにするのは将来の拡張性のためだろ
Javaであればプロパティが存在しないから
そうしないとインターフェース互換性を保ったまま
継承することができない。

言われてコードを書いてるだけで、その理由を知らないんだな
2021/01/31(日) 23:37:56.79ID:JUmaLjMc
自分か継承をしたことがないからって
クソコードというのはコードの話をしてない
自分の経験の話になっている
2021/01/31(日) 23:39:23.18ID:xTcVCzeY
大丈夫?ID真っ赤だぞ
2021/01/31(日) 23:45:54.87ID:JUmaLjMc
IDが赤くなるのはレスが多いからなだけだぞ?
それ以外に意味はない
2021/02/02(火) 07:34:00.26ID:Tpt4JRkR
クラス利用者の事を考えずに実装したクラスは全部クソコード説
2021/02/02(火) 14:23:08.30ID:bhwRAjFJ
お前の書いたのは全てクソコード説
2021/02/02(火) 14:38:58.03ID:o3/qhRLn
てめえのもな
2021/02/02(火) 15:05:56.95ID:dfd6YEEl
>>96
このスレで語られている内容を理解できない96はクソコードしか書けないニート説
2021/02/02(火) 15:18:13.00ID:mk8gJgM8
>>11
コードの良し悪しは用途と仕様が不明確ならまともな判断はできないから
どちらもわからない状態じゃコーディングプラクティスの指摘だけになる

- clothPriceはどっからやってくるの? それでいいの?
- idを指定して複数の値が返されるようなデータ構造を使うべきなの?
- filter(id).first()よりfind(id)のほうがいいのでは?
- clothPriceが1000万件になっても問題ない?
- 俺の知ってるJavaScriptでは({ id })とは書けないけど?
- .first()はどこにどういう仕様で定義されてるの?
- idに対応する値がclothPriceに存在しなかった場合にどうなるの?
- テストコードも一緒に出してね
2021/02/02(火) 16:23:17.93ID:F8EiZmWN
>>99
書いてないことをいちいち質問したらきりがない
タブの数は2でいいの?とかまででてくるだろ

それらの質問は「問題ない」として扱えば
クソコードではないという答えが正しい
2021/02/02(火) 18:40:58.39ID:dfd6YEEl
お前ら(>>26 >>99)、国語の問題で「告白された○○君はなぜ顔を赤らめたのですか」と問われたら、「そんなのどこにも書いて無い!!もしかしたら唐辛子ガムを噛んでいたら予想以上に辛くて顔を真っ赤にしただけかもしれないだろ!!!」とか真顔で言い出しそうだな。

なんなんだこのスレは
2021/02/02(火) 18:53:57.65ID:7of77oce
>>101
国語の問題と科学の問題は分けて考えないといけない
実際、顔を赤らめた理由は風邪だったかもしれないわけだ
2021/02/02(火) 19:17:56.91ID:dfd6YEEl
ここまで詭弁が病気を疑うレベル
論理学が発展しそうだ
2021/02/02(火) 19:18:09.01ID:dfd6YEEl
ここまで詭弁が酷いと病気を疑うレベル
論理学が発展しそうだ
2021/02/02(火) 19:20:12.00ID:j1AIfgcw
>>103
そんな滅茶苦茶な日本語を書くほど興奮してるのか?何が導火線に火を着けたんだw
2021/02/02(火) 19:27:02.71ID:ReeT4XGv
>>102
アスペ死ね
2021/02/02(火) 19:33:33.22ID:NnSaCayY
さあ盛り上がって参りました
108デフォルトの名無しさん
垢版 |
2021/02/02(火) 20:57:02.78ID:LnwudBv/
脳にコロナが沢山います
2021/02/02(火) 21:30:20.78ID:IyiGSAGP
>>11はせっかくお題を出してくれたんだから建設的に行こうや
あら探ししてても成長が無いぞ

> getPrice(id)

IDから価格を引くようなことするんなら
DBMS側で全部管理しておいて
コード上にはDM操作API(※)の操作のみがあるほうがスッキリすると思う
※例えばJavaで言ったらJDBC呼び出し

> clothPrice

あとこれ
fooPrice, barPriceってどんどん増えてきそうだけど大丈夫か?って思う
データの中身を区別したあとのものを変数に入れるのが不気味
クエリのパラメータ側にあったほうが自然に思える

なるべく細かくないものから指摘した
2021/02/02(火) 21:31:10.75ID:IyiGSAGP
訂正
×DM操作API
○DB操作API
2021/02/02(火) 22:08:39.45ID:mk8gJgM8
>>109
毎回DB読まなくてもいいようにマスタデータをメモリ上にロードしてるのかもしれない

const makeCloth = function(repository) {
const clothPrice = repository.load(…)
return {
getPrice(id) {
const price = clothPrice.find(id)
return price
}
}
}

const Cloth = makeCloth(repository)
Cloth.getPrice(id)
112デフォルトの名無しさん
垢版 |
2021/02/03(水) 00:29:01.19ID:2d6hEoKZ
明示的にポインタ型で変数宣言したらauto&にしろって指摘受けたけど型推論にメリットってあるのか
聞くのも面倒だから言う通りに修正したけど
2021/02/03(水) 07:53:29.40ID:WEM0wpGD
自分の場合、型推論は
var x = 何か
var y = x
var z = y
var a = z
...
「何か」の部分に扱う型の決定を委ねたい場合に使う
でも、「何か」に任せたら不具合になりかねない場合は使わない
114デフォルトの名無しさん
垢版 |
2021/02/03(水) 17:47:38.43ID:cEj1fKgU
>>111
流石にそれは問題文の課題解釈
115デフォルトの名無しさん
垢版 |
2021/02/04(木) 13:52:50.53ID:xGlwnT6u
クソコードは存在しない。
クソプログラマがいるだけだ。
116デフォルトの名無しさん
垢版 |
2021/02/04(木) 15:37:08.26ID:DKUfS2zw
前件否定
詭弁スレかなここは
2021/02/04(木) 15:40:28.24ID:9Y9XT+dm
クソプログラマが書いたコードがクソコード
118デフォルトの名無しさん
垢版 |
2021/02/04(木) 16:11:03.81ID:xGlwnT6u
普通のコードを解釈と言う名の詭弁で棄損している
ケチを付けるためだけに延々と持論を展開したりな
すると普通のコードがゴミというレッテルを貼られる

そりゃあそうだ、そいつはアラを見つけて如何にしてレッテルを貼り付けるかだけに終始してるからだ
だからそいつには「ゴミ化」の手法がある
2021/02/04(木) 17:51:50.18ID:JCtgNhXu
すごいドヤ顔してそう
2021/02/04(木) 18:10:05.67ID:cLYP9bxd
>>118が何を言ってるのか理解できない
121デフォルトの名無しさん
垢版 |
2021/02/04(木) 18:17:16.95ID:DKUfS2zw
詭弁の特徴のガイドライン(ム板拡張版)
・理解できる事を理解できないフリをして論点をずらす
例)sin関数を使って計算してください→sinって何?w罪?w

・議題を否定して論点をずらす
例)アンパンマンは何故、バイキンマンに勝つのか→アンパンマンなんて存在しねーよバーカバーカ

・直感と感覚を否定し、理由が言えなければ事実ではないと決めつける
例)地震が怖かった→なんで地震が怖かったの?理由が言えないのなら怖いなんて嘘だ

このスレみてたら、こんなのが思い浮かんだ
議論をもとに戻す前に、二度とこんな書き込みすんなと警告しとく
2021/02/04(木) 18:29:41.03ID:MbXlwikG
詭弁て>>115>>118みたいなやつだろ
2021/02/04(木) 18:30:42.54ID:7BpvnZAj
>>121
> 詭弁の特徴のガイドライン(ム板拡張版)

自分で勝手にオレオレルール作るなよw
124デフォルトの名無しさん
垢版 |
2021/02/04(木) 18:32:23.89ID:DKUfS2zw
>>120
俺も理解できん
2021/02/04(木) 18:34:52.95ID:r1rgzoeR
クソスレ上げんなカス
2021/02/04(木) 18:46:14.74ID:qhstqCrC
>>121
sin関数のくだり(>>43)は質問の仕方が悪かっただけでしょ
2021/02/04(木) 18:52:47.96ID:9Y9XT+dm
ム板拡張版www
2021/02/04(木) 19:04:30.45ID:7BpvnZAj
sin関数のくだりは、明らかにMathオブジェクトだとわかるものを持ってきて
それと同一視させようとしてるから、>>43がアホなだけ
2021/02/04(木) 19:56:09.47ID:plfmR7iV
ム板拡張版ってw
まぁ、時々、該当しそうな人を見かけるけどさw

それはさておき、酷いと感じるコードって

・仕様変更の度に膨大なプログラム変更の工数がかかるコード(人件費が無駄にかかる)
・全く品質の保証されないコード(保証するためのテストにかかる人件費が非現実的な価格になる)

これを満たしているコード全てじゃない?
これを満たすコードを分析していけば、答えが見つかりそう
2021/02/05(金) 18:13:08.64ID:7P5D6x+s
class Rest{
ログインメソッド
ユーザー情報取得メソッド
位置情報送信メソッド
位置情報送信成功通知メソッド
位置情報送信失敗通知メソッド
位置情報以外の情報送信成功通知メソッド
位置情報以外の情報送信失敗通知メソッド
HTTPエラー通知メソッド
private変数のgetterメソッド※全て定義
}

転職前の会社で見つけたAndroidクソコード
こんなコードを渡された時は転職を決意した
2021/02/05(金) 20:09:09.32ID:LvAfdZdW
位置情報送信メソッド

位置情報送信成功通知メソッド

どういう関係なの? 後者は前者に渡されるコールバック関数?
132デフォルトの名無しさん
垢版 |
2021/02/05(金) 20:30:02.05ID:sQbQrry7
位置情報とか必要な時だけは渡すが、終わったら絶対にアプリを落とすようにしてる
2021/02/05(金) 20:59:57.01ID:ywW/HyXt
>>130
1つのクラスでバックエンドAPIのスタブをまとめてるだけなら別にクソコードじゃない
134130
垢版 |
2021/02/06(土) 00:28:38.26ID:rZdEmaWa
>>131
後者は前者を呼んだ後、HTTPレスポンスが返ると引数に渡された関数型が呼ばれる

前者の結果を非同期で受け取るイメージ
2021/02/06(土) 13:51:42.40ID:F35+hfeS
クソコードというよりウンコードだろ
2021/02/06(土) 13:59:02.77ID:OoUbdqRB
unicode(ウンコード)
2021/02/09(火) 17:43:42.15ID:oXbJA4gd
httpレスポンス(Json)に1個、新しい項目を追加したらプログラムの書き直しが20箇所近くで発生してワロタ
無駄なラッパーによる地獄の変更作業
2021/02/10(水) 03:51:43.35ID:YKvIUGd6
ほほwww
2021/02/10(水) 23:05:34.63ID:PXY5WDG2
1万行のメソッド
巻物のような一本モノシーケンスで途中の幾多のエラーチェックの度にいろんなフラグを立てまくり、最終的に最後の行まで到達してから関数冒頭で行なったエラーチェック結果を参照、結局エラーでしたで終了
しかもユーティリティクラスのメソッド
2021/02/11(木) 12:29:17.94ID:QNzWdO78
頭の悪い人がMVVM
2021/02/11(木) 16:13:15.21ID:20fgad/C
皆、通る道は同じなんだな
142デフォルトの名無しさん
垢版 |
2021/02/12(金) 00:11:29.55ID:jyO5hUn0
テストコードって必要?
2021/02/12(金) 00:17:10.35ID:tz+82o+A
テストコードがないプロジェクトなんて見たことないレベル
まともにメンテナンスが続いてるソフトで探してみ
2021/02/12(金) 01:50:17.30ID:yHZydEd8
会社コードならテスト無いの山ほどある
145デフォルトの名無しさん
垢版 |
2021/02/12(金) 07:51:11.85ID:kUMRCn77
自社開発のパッケージ製品作ってんだけどテストコードって書いたことないんだよね
自分自身の学習コストはともかくメンバーの学習コストが怖くてね
2021/02/12(金) 08:29:33.79ID:tz+82o+A
メンバーのせいにするな。お前より優秀だろ。
2021/02/12(金) 12:30:09.75ID:qfo2XcRz
>>142
ちょっと前までテストコードの無い会社で働いてたけど、地獄だったよ

詳細設計の妥当性確認ができない点がヤバイ
上司やリーダーに単体テストをしていないことの危険性を説明したが...テストコード書いてもどうせ無駄になる的な事を言ってた

そもそも、そのテストコードが些細な変更で無駄になるような設計をしている事がマズイのだが...そこには触れてほしくないみたいな感じだったよ

地獄の住人は地獄しか知らない
逆に、テストコードを書く会社の人達も地獄を知らない
148デフォルトの名無しさん
垢版 |
2021/02/12(金) 22:53:23.25ID:jyO5hUn0
でもなー単体テストの品質はどこで保証されるん?
テストコードもコードレビューするんけ?
2021/02/12(金) 23:11:03.49ID:0z7QwFq3
>>148
当たり前だろ。
2021/02/12(金) 23:12:24.97ID:P801lvm7
業務によらね?
頻繁に仕様が変わっちまうのに変えるのが悪いって言われてもね
それで金もらってんだし悪いもクソもないんだよ3日後には変更履歴がすだれみたいに色付いてるのに
のんびりテストコードなんて書いてたって無意味は無意味だろ
2021/02/12(金) 23:13:45.01ID:0z7QwFq3
だいたいテストコードに限らずレビューするだろ


手動のテストでもレビューしなければ

お前何のテストした?
これらのテストをしました。スクショがテストした証拠です
いや、テストしたかどうかじゃなくて、そのテスト内容は問題ないのか?
しりません。テストしました。信じてください

ってなるやろが?
2021/02/12(金) 23:14:36.71ID:0z7QwFq3
>>150
仕様が頻繁に変わるからテストしてません
でリリースするつもり?
アホなの?
2021/02/12(金) 23:15:27.50ID:jxDcSv/l
ひょっとしてテスト項目レビューとかしたことないのか?
2021/02/12(金) 23:15:50.20ID:P801lvm7
テストコード書いたからOKとはならんよな
重要なのは仕様から見たテストコードが適切かどうかであって書きゃいいってもんじゃない
2021/02/12(金) 23:17:20.91ID:P801lvm7
>>152
いや別にテストコードなんか時間かかるやん
デバッガの計算後の値をエクセルにコピペするだけでええやん
2021/02/12(金) 23:19:19.72ID:v8f20fWB
>>152
まあ、あるんじゃね?
うちも大学の研究室に納めるやつとかはバグあったらごめんね、連絡くれたら直すから
なんて契約のものもあるし
まあ向こうに直せるぐらいの能力持ってる人いるけど
2021/02/12(金) 23:20:27.11ID:0z7QwFq3
>>154
当たり前じゃん。ただしテストコードは実際に動くから、それでテストしたということがはっきり記録される

手動だと、テストしたつもりだけどなぁ。もう一回やったらうまくいきません。
テストのやり方を間違えてたかもテヘペロってなる。これが問題

ひどい場合だと、テストの手順に漏れがあったけど
もう一回やるのが面倒だからってキャプチャを作ってごまかしたりできる
テスト項目一覧とかはそれが正しくてもそのとおりにやったことに記録にはならないから

まあ動画にでも取ってりゃ実際に何をやったかは記録できるが
その記録ムービーを全部見なければ意味がないその時間もない
2021/02/12(金) 23:21:27.80ID:P801lvm7
大抵書いた直後の一回だけやん必要なのって
そこでテストできていれば
とりあえずそれでええやん
コードにして引き釣り回す必要ってどこにあるん?
2021/02/12(金) 23:21:48.54ID:0z7QwFq3
>>155
> いや別にテストコードなんか時間かかるやん

手動のテストのほうが時間かかるだろ?
俺が個人で作ってるツールなんか1000を超えるテストを
数秒で終わらせることができるから

コードを修正するたびに全テストを実行できる
それと同じことをやってみ?できるんか?
2021/02/12(金) 23:22:36.21ID:0z7QwFq3
>>158
仕様が頻繁に変わるってことは、そのたびに全部のテストが必要ってことだぞ
2021/02/12(金) 23:23:15.89ID:P801lvm7
>>159
いや、テストコードの作成コストヤバイって
対象コードよりヤバイときのが大半やん
2021/02/12(金) 23:24:15.62ID:P801lvm7
>>160
だからデバッガの値のエクセル貼り付けで駄目な理由って何なん?
2021/02/12(金) 23:26:11.51ID:0z7QwFq3
>>162
エクセルに貼り付ける時にミスする可能性がある
エクセルに記録されるのは結果だけで
その手順が記録されない
2021/02/12(金) 23:26:33.56ID:0z7QwFq3
>>161
> 対象コードよりヤバイときのが大半やん
当たり前だろ。なんでその事がわからないのさ?
2021/02/12(金) 23:31:57.56ID:P801lvm7
てか、君が思ってるほど
無駄にコストかけられないんだよw

まあ、そこでやらなくても
結合とかシステムテストとかあるからさw
そんなに気張ってもらってもどうせ結合で出るようなの取れないし?
2021/02/12(金) 23:33:28.70ID:P801lvm7
それとその段階だと仕様でまずい部分も出るだろうし
あんまりガッツリテストやるよりさっさと出してもらったほうが嬉しいっつーか?
2021/02/12(金) 23:36:39.78ID:0z7QwFq3
>>165
無駄にコストをかけられないというのなら
手動テストを何回やればOKか見積もり立てられるの?

コードを修正したら全部テストいないといけないわけだ
修正した後にまたバグが見つかるかもしれないし
別のバグを入れてしまうかもしれない
そしたらまた全部テストやり直しだ

お前が言うようにコードよりもテストのほうが多くなるぐらいなのに
そのテストに時間がかかる方法を使っていたら
何度もテストできねーだろ
2021/02/12(金) 23:37:47.45ID:0z7QwFq3
>>166
リリース間近の話をしてますが?
2021/02/12(金) 23:38:14.73ID:0z7QwFq3
あと一旦リリースした後のバージョンアップとか
2021/02/12(金) 23:58:17.35ID:P801lvm7
>>168
え?システムテストをテストコードでできないでしょ
2021/02/12(金) 23:59:41.90ID:P801lvm7
>>169
あ、いや、お金にならなかったら今回で終わりなんで
2021/02/13(土) 00:03:54.30ID:xw8mV6Gs
>>170
うーん、お前馬鹿なのかな?

自動化できない所が1個あるからって
全部、手動でやるとか馬鹿だよね

手動でやるのが大変だからそれを減らすって話を
してるってその時点で理解できてないの?
2021/02/13(土) 00:04:38.64ID:xw8mV6Gs
>>171
じゃあもうお前の仕事なくなるじゃんw
自分でお金にならないような仕組みにしておいて
仕事なくすとかアホだなぁ
2021/02/13(土) 00:16:07.02ID:gxnJuOwS
>>172
うーん?聞いたことないなぁ?
んなとこまでテストコードなんて役に立たないでしょ
2021/02/13(土) 00:18:40.61ID:xw8mV6Gs
>>174
本気で頭が悪そうw

「そんな所まで役に立たない」=「そんな所以外では役に立つ」

ってお前はいいました。
2021/02/13(土) 00:20:25.46ID:xw8mV6Gs
自分で「そんな所以外では役に立つ」って言ってるのに
気づいてなさそうなんだよなw
2021/02/13(土) 00:20:59.63ID:gxnJuOwS
あー、いや、作るコストまで含めたときはんなもんいらねーわ
どう考えてもテスト対象のコードより時間かけてテストコード作るってのは無意味だろ
2021/02/13(土) 00:22:17.38ID:xw8mV6Gs
お前は実際にテスト対象のコードより時間かけて手動テストしてるだろーが
何を言ってるんだだこいつは?
2021/02/13(土) 00:22:26.90ID:gxnJuOwS
デバッガ機能で値をエクセルに貼るので十分だって
2021/02/13(土) 00:24:07.56ID:xw8mV6Gs
まさかテストコードを書く時間しかみてなくて
テストコードがなければ、テストする時間はゼロになるとでも思ってるのか?

テストする時間の話をしてるんだが?

テストコードを書けば限りなくテストする時間は短くなる
手動テストするとテストする時間が膨大になる
テストする回数は数回程度じゃ終わらない
2021/02/13(土) 00:24:17.75ID:gxnJuOwS
>>178
アホか
ステップ実行して値のプレビューウィンドウをエビデンスに貼るだけだわ
それ以上のもんいらんし
2021/02/13(土) 00:25:20.87ID:gxnJuOwS
>>180
いや、めっちゃ時間かかるやん
いらんわお前
2021/02/13(土) 00:25:36.27ID:xw8mV6Gs
>>181
それを1000回やったら何秒になる?w
2021/02/13(土) 00:27:15.87ID:xw8mV6Gs
>>182
だから手動のテストだと、どれだけ時間がかかるかを
どうやって見積もるか聞いたんだが?
バグがあると修正してテストが必要だが、じゃあ何回テストをやれば終わるんだ?
全体のテストを全部手動でやったら1回のテストで数日は軽くかかるだろうが
見積もりの方法を聞いている
2021/02/13(土) 00:29:26.07ID:zYMuRkWP
テストコードで品質が上がるとか言ってる奴はそのクソみたいなテストコードのテストも書くのか?(笑)
2021/02/13(土) 00:30:01.23ID:gxnJuOwS
>>183
えー、テストコード1000個書くより早いやろw
2021/02/13(土) 00:30:17.08ID:xw8mV6Gs
>>185
テストコードは人が見てコードレビューするので
テストコードのテストは不要
2021/02/13(土) 00:31:44.06ID:gxnJuOwS
まず、時間が掛かりそうなのがテストコード自体の正当性の担保だよね
テストコード自体も時間がかかるけどここの説明がないのもね
2021/02/13(土) 00:31:53.43ID:xw8mV6Gs
>>186
テストコード1000個書いて、1回あたり数秒でテストを終わらせる
手動で1000個のテストを数日かけてやって、バグがあったらまた数日かけて1000個のテストをやる

どっちが速いかって、明らかにテストコードじゃんw
2021/02/13(土) 00:32:35.09ID:xw8mV6Gs
テストコード不要って言ってるやつは
手動のテストにかかる時間を考慮してないってのがわかったなw
2021/02/13(土) 00:33:24.95ID:gxnJuOwS
>>187
もうバリバリヤバイ時間かかりそうだなw
これは何納品するなら許される重厚感?w
2021/02/13(土) 00:33:38.50ID:xw8mV6Gs
テスト作業の時間を減らすためにテストコードを書くってことを
理解してないってのが驚きだったわw
2021/02/13(土) 00:35:20.12ID:xw8mV6Gs
>>191
手動のテストは時間がかかるよ

テスト仕様書を書く→テスト仕様書のレビューする
この時点でテストコードのレビューをしたほうが速いんだが

しかも手動テストの場合テスト仕様書のレビューがOKでも
実際に作業者がその仕様書通りにテストしてることが担保できない
テストしたけどちゃんとテストできてませんでしたってのが頻発する
2021/02/13(土) 00:35:34.83ID:gxnJuOwS
あ、はい、もういいですw
2021/02/13(土) 01:16:16.14ID:uGwTnb+S
テストコード書かない奴にはどれだけ説明しても大抵無駄。
あいつら野菜毛嫌いするホリエみたいなもんだから。
2021/02/13(土) 01:24:52.43ID:zYMuRkWP
テストコードが何故正しいと言えるのか?
こんなもの作る工数は含まれてないし
単体テストなんかやらんからな(笑)
やりたいならテスターが書けよ(笑)
結合やらやればどうせバグがあれば出るんだし、まさかとは思うけどテストコード教の奴は単体だけで品質が担保されてますとか言うのか?(笑)
コミットした時点で動作チェックぐらいしてるやろ
なんか最近の出来ない奴はテストコード以前に動かないものを平気でコミットするからな
2021/02/13(土) 05:47:34.87ID:scVpGKPS
テストコードなかったらテスト作業に膨大な時間がかかるって話だろ?
テスト作業にかかる時間を無視するなよ
2021/02/13(土) 05:50:27.48ID:scVpGKPS
>>196
> なんか最近の出来ない奴はテストコード以前に動かないものを平気でコミットするからな
開発にテストの時間を含めてないからでしょ?w
2021/02/13(土) 09:16:03.51ID:gxnJuOwS
>>197
比較するのもバカらしい
テストコード書いてる時間に5回はできそうだなw
200147
垢版 |
2021/02/13(土) 09:47:02.97ID:9XqVPVy+
いつの間にか盛り上がっててワロタ

流れを読まずに言わせてもらうと
テストコードって趣味で書くわけじゃなくて、品質を維持するため或いは開発費の無駄を無くすために書くものなんだぜ
201デフォルトの名無しさん
垢版 |
2021/02/13(土) 09:52:35.14ID:32jiSkKt
テストコード頑張るぐらいなら結合テストで頑張ればいいじゃんどうせ画面絡みとかの方がバグ多いし
202147
垢版 |
2021/02/13(土) 09:54:50.29ID:9XqVPVy+
>>201
テストコードを書けば、ビルドする度にテストが自動的に実行される
これが強み

手動で動作確認もやるけど、テストコードはあくまでのソースコードの質をチェックするための工程だし、目的が違う
203デフォルトの名無しさん
垢版 |
2021/02/13(土) 10:01:23.85ID:32jiSkKt
>>202
目的が違うのは分かるけどテストコード書くコストも結合テストにかかるコストも両方出せるないなら結合テスト頑張る、又はseleniumとかでそっちの自動化頑張った方がコスパいのかなと
204147
垢版 |
2021/02/13(土) 10:03:01.57ID:9XqVPVy+
あと、俺は画面がらみのテストも自動化してるよ
タッチとかの操作をテストフレームワークを使ってコンピュータにやらせてる

だから、同じテストを手作業でやらずに済む
最終チェックは念の為手作業でやるけど、バグが直るまで何百回でも自動的にテストができるのが強み

まぁ、それができない事情も知らないことはないけどね...static上司...ウッ頭が
2021/02/13(土) 10:04:08.61ID:gxnJuOwS
>>201
俺もそう思う
結合で頑張ろうよね
こんなのそもそもスタンドアロンでなんか動くに決まってんじゃん
206147
垢版 |
2021/02/13(土) 10:07:00.21ID:9XqVPVy+
>>203
不具合はなるべく早く見つけ出した方が修正が楽

もしも、手動テストで不具合が発覚しても原因分析に時間がかかってしまうから...そこが問題
一方、テストコードだと行レベルで不具合の箇所がわかる

まぁ、単体テストをすり抜けることもあるから手動チェックもするが...
207147
垢版 |
2021/02/13(土) 10:13:57.11ID:9XqVPVy+
まぁ、現場判断が一番だ
今、テストコードを書いても無駄だと感じるのなら、その通りなのだろう

ただ、へぇー
そんな職場もあるんだー程度に参考にしてくれれば
208147
垢版 |
2021/02/13(土) 10:26:37.18ID:9XqVPVy+
ごめん、Selenium無視してた
まぁ、ほとんどUIとフレームワークのコードしか書かないのならテストコードを書こうとしても何をテストすればいいんだよwってなるかも
2021/02/13(土) 11:17:00.74ID:scVpGKPS
>>201
テストコードでできるようなことを、結合テストで全部やるとかアホだろw
結合テストにどれだけ時間がかかると思ってるんだ?
2021/02/13(土) 11:18:03.19ID:scVpGKPS
>>205
> 結合で頑張ろうよね
なんで同じことを時間がかかる方法でやろうとするの?
時間泥棒が目的なわけ?
2021/02/13(土) 11:19:19.42ID:scVpGKPS
>>199
> テストコード書いてる時間に5回はできそうだなw

テスト回数5回って少なすぎるだろw
5個のバグを1個ずつテストしたら終わりじゃんw
2021/02/13(土) 11:29:32.31ID:PYtZn7CJ
> 結合やらやればどうせバグがあれば出るんだし
とか言ってるやつに単体テストの重要性を説いても無駄
何回か痛い目に会えばいいんだけど無職みたいだからそれも無理だしw
2021/02/13(土) 11:53:52.62ID:gxnJuOwS
>>212
いや、もし単体で動いたとしてもUIがどういうタイミングでどの頻度で欲しいのか?
よくわかってないんだよ
奴らバカだから
どうせ進捗率出せないと困るとか
中断とリスタートができないと駄目だとか
うっせからそんな決まらねぇぞどうせ
2021/02/13(土) 15:05:52.87ID:scVpGKPS
単体テストの重要性がわからなくても
テスト時間がどれくらいかかるかぐらいわかると思うがな
何日かけて総合テストしてますか?
2021/02/13(土) 15:06:38.25ID:scVpGKPS
何日かけて結合テストしてますか?
2021/02/13(土) 15:10:25.52ID:scVpGKPS
全部結合テストでやればいいって言ってるやつは
結合テストも適当にしかしてないだろうな
数ヶ月かけて開発して、まとめて2、3回テストをするとかそんな感じだろ
時間がかかってそれ以上やれるわけがないんだから
2021/02/13(土) 16:01:22.66ID:ePSMeSNb
テスト対象がテスト済みのオープンソースライブラリだらけだったら、テストコードを書かないのはわかる

まぁ、ごりごりドメインロジックを記述する人がテストコードは不要とか言うと困るけど
2021/02/13(土) 16:05:55.90ID:scVpGKPS
テストコードを書かないでいいなら
テストもしないでいいってことになるんだが?
2021/02/13(土) 16:07:53.04ID:ePSMeSNb
>>218
まぁ、落ち着け
あと、誰に言ってる?
220デフォルトの名無しさん
垢版 |
2021/02/13(土) 19:53:19.20ID:EpdeqUps
テストがどうよりクソコードを語れよ
221デフォルトの名無しさん
垢版 |
2021/02/13(土) 20:16:55.86ID:Hi5efe9w
テストはビジネスロジックだけ書くのが普通
222デフォルトの名無しさん
垢版 |
2021/02/13(土) 20:17:28.48ID:Hi5efe9w
プロが作ったなら要らない
2021/02/14(日) 18:52:08.05ID:UVTry2j6
開発者達とリーダー「単体テスト?テストコード?そんなのやっても開発費が無駄にかかる」
リーダー「開発者全員のコードを結合ッ!」
開発者達「ぐぁあああああ!!!」
リーダー「ど、どうした!?」
開発者達「4,294,967,295項目の不具合が発生した!しかも、どこのコードで不具合が起きてるのかよくわからん!!」
リーダー「お、お前ら落ち着け!」
リーダー「そ、そうだ...こんな時こそリファクタリングだ!」
リーダー「開発メンバーッ!開発メンバー全員集まれ!!」
リーダー「お前らッ!ここに4,294,967,295項目の不具合内容を書いた!各自、怪しいところを直せ!いいなッ!?」
リーダー「一斉に治すぞ...!いっせーのーせ...!」
開発者達「ぐぁあああああ!!今度はさっきと違う不具合が74,173,389,081ヶ所で発生したぁああああああああ!!」
リーダー「何やっとんじぁあああああ!!!お前らぁぁぁあああ!」
リーダー「ヤバイ!プロジェクトが炎上した!!」
全員「ぐぁぁぁあああああ!!」
→(チーン)
2021/02/14(日) 18:55:55.94ID:UVTry2j6
ということを懸念してるからこのスレで単体テスト&テストコードの話で盛り上がったのだろう(たぶん)
2021/02/14(日) 21:04:14.19ID:D24G58JB
なんかこれ面白いの?
2021/02/14(日) 23:30:53.36ID:Xb0b89w4
テストコードを書く時間 vs テストコードを書かない時間
で比べてるからアホなんだよなw

「テストコードがある場合のテストする時間」
vs
「テストコードがない場合のテストする時間」

テストする時間で比べないと意味がないだろ

テストコードがないと何千回(例 1日15回×3ヶ月)とかテストやってられない
テストコード書いて90%のバグを修正していれば
何日もかかるような手動テストは10%だけでよくなる
バグ修正時のエンバグも防げる
2021/02/15(月) 00:43:29.18ID:JE19der5
まさかテストコード書く書かないでこれほど盛り上がるとは
2021/02/15(月) 01:20:08.98ID:89MhGAsi
>>226
でそのテストコードは何故必ず正しいと言えるの?
そもそもまともなコード書ける人は単体なんかやる必要無いんだよね
その後のテストは結局手動やろ
2021/02/15(月) 02:53:39.67ID:P+hwD+is
>>228
これはひどいw
2021/02/15(月) 04:33:13.60ID:uhj1tPkS
>>228
正しいと言えるかどうかじゃなくて、
やったテストがちゃんと再現できるのが重要

テストした?→やりました、ほら証拠のスクショがあります!
いやスクショあったって、手順間違えてたら意味ないでしょ

これを防ぐためにある
手動で数千もあるテストを間違いなく実行できるんか?
そしてそれを短時間で再実行できるんか?
手動だとテストに時間がかかってしょうがないと言ってるだろ
2021/02/15(月) 07:21:34.31ID:KYanFmnG
>>230
エビデンス(エクセルにスクショ貼り付け)とってその後Gitに更新がなければそれで終わりや
実行なんてできる必要ないでどうせ時間が経ったらWindows Updateで動かんなるし
2021/02/15(月) 07:24:49.59ID:KYanFmnG
>>230
そもそもそれWindows Update後も動くんか?
動かんとき、その動かん原因がWindows Updateの類やライブラリ更新の類なのか元から動かんのか
テストコードしか書いてないとき判別できるんか?
できないならスクショもとってもらうで
2021/02/15(月) 07:42:37.58ID:l6UtloU6
>>226
だから
>> 結合やらやればどうせバグがあれば出るんだし
>とか言ってるやつに単体テストの重要性を説いても無駄
なのよ
リグレッションテスト?なにそれ?美味しいの?
って言う現場は実存する
2021/02/15(月) 08:51:23.20ID:rF3y723p
>>228
ネタで書いたであろう>>223をマジでやってそう
2021/02/15(月) 09:34:53.84ID:KYanFmnG
ていうか単体テストコードを起こせる設計書や仕様書が重要なんであって
単体テストコードすらWindows Updateの前には無力よな
やっぱりドキュメントが重要なんだよ
2021/02/15(月) 10:20:12.92ID:JE19der5
よくわかってないんだけど、windows updateが単体テストにどう関係してくるの?
2021/02/15(月) 10:30:33.84ID:l6UtloU6
単体テストをアプリかなんかと勘違いしてるんじゃねw
むしろWindows updateの時なんかに威力を発揮するんだけどね
2021/02/15(月) 11:07:38.83ID:rF3y723p
プラットフォームの仕様がwinアップデートで変わったせいで不具合がでるってこと?

もし、それが当たり前だと思っているのなら認識を改めた方がいいよ
単体テストしろ
2021/02/15(月) 13:48:53.21ID:89MhGAsi
テストコード厨って結局そのテストコードが正しいか証明出来ない上に
書くのが当たり前と脳死しているだけというwww

マジでいらんから
その程度の脳だから底辺プログラマーから抜け出せないのだよw
2021/02/15(月) 14:52:00.93ID:K9nFtIWr
>>239
> テストコード厨って結局そのテストコードが正しいか証明出来ない上に
→算数のテスト問題は間違ってるかもしれないから算数のテストは無意味と同じ主張

> 書くのが当たり前と脳死しているだけというwww
→脳死してるのお前じゃね?

> マジでいらんから
→お前がいらん

> その程度の脳だから底辺プログラマーから抜け出せないのだよw
→お前だろ
2021/02/15(月) 15:05:46.19ID:Yv9X0Du7
>>239
手動で実行してるテストのテストケースが正しいかどうかどうやって証明するの?
2021/02/15(月) 17:45:20.19ID:PMcPEWsf
>>231
> エビデンス(エクセルにスクショ貼り付け)とってその後Gitに更新がなければそれで終わりや

いつにエビデンス取るんだよ?
テストしたあとにエビデンス取るんだよな?
つまりテストでバグが出ることがあるだろ
そのバグを修正するんだから、エビデンス取った後に更新あるだろ
エビデンスとってgitに更新ないときは
テストですべてOKだったときしかありえないだろ
何いってんだお前
2021/02/15(月) 17:47:48.67ID:PMcPEWsf
>>232
> そもそもそれWindows Update後も動くんか?

Windows Update後動かなかったらどうするんだよ?
修正しないのかよ?

テストする時に時間がかかるのは
全部を手動テストするのか
一部だけ手動テストして残りはテストコードによる自動再テストなのか
どっちのほうが時間かかるのか言ってみて

もちろん手動テストは全部スクショ取ってもらうで(笑)
2021/02/15(月) 17:48:47.87ID:PMcPEWsf
>>239
> テストコード厨って結局そのテストコードが正しいか証明出来ない上に

手動テストでテスト内容が正しいか証明する方法と同じ方法が使える
手動テストでテスト内容が正しいか証明する方法を言え
245デフォルトの名無しさん
垢版 |
2021/02/15(月) 18:20:53.42ID:g92MWppk
客:何もしてないのに動かなくなりました!
(アプデは勝手にされてても気付かないパターン)
2021/02/15(月) 18:22:26.23ID:Y9YOwFs/
今から手動テストしますので1ヶ月ぐらいかかります
なにせ手動ですからね。ふっふっふ
2021/02/15(月) 18:27:58.41ID:c7rUji35
>>241
>>244

たぶん、まともなテストコードが書けない...そもそも、まともなクラス設計ができないから、そういう疑問を抱くんじゃないかな
>>76で、クソコード事例として挙げたコードみたいなクラス設計とかしてそう
2021/02/15(月) 18:30:00.42ID:2XXTIbH8
こんな単体テスト仕様書厨が居るんだからそりゃ老害老害言われるよ
頼むから60代だと言ってくれ
同じ世代にこんなん居たら怒鳴り散らすわ
2021/02/15(月) 18:47:28.42ID:c7rUji35
29だけど
誤解があったかもしれないから確認するけど、単体テスト仕様厨って何?
俺は必要だから単体テストの自動化を導入しているだけだけど、何か問題がありました?
2021/02/15(月) 21:37:06.55ID:SG2OCcUu
おまえらはすぐそうやって議題からすら遠ざかってしまうんよ
何かと何かの区別がつかない
手段が目的化してても平気
2021/02/15(月) 21:37:32.45ID:KYanFmnG
やっぱり単体テストはいいや
なんかやろうとか言ってた奴の手が一番遅いし
2021/02/15(月) 22:11:38.03ID:89MhGAsi
>>240
底辺が大発狂(笑)
こういう奴ってテストコード(笑)書いているのに低品質なクソコードしか書けない上にバグっているのに
テストコードが通ったから大丈夫とか平気で言いそう(笑)
こういうゴミが残業して給料だけはいいんだよな
優秀な奴は残業なんかしないしな
2021/02/15(月) 22:12:41.79ID:Y9YOwFs/
手動テストってテストした結果が曖昧なんだよな
「ちゃんと動くこと」

複数ある結果を全て書いてるところなんて見たことない
2021/02/15(月) 22:13:42.37ID:Y9YOwFs/
>>252
実際には「手動テストしたから大丈夫」なんだろ?
何が大丈夫なのか全くわからない
スクショだけじゃ、データベースの中身なんてわからんだろうに
2021/02/15(月) 22:44:18.63ID:l6UtloU6
>>239
> テストコード厨って結局そのテストコードが正しいか証明出来ない
もちろん完全にはできない
ただ単体テストのコードって
・値の設定
・被テストコードの呼出
・戻り値等のチェック
だから個々のテストコードは短いし普通は分岐ロジックないからレビューでバグを摘出するのは容易
もちろんそれでもテスト項目数は膨大なのでテストコードのステップ数もバカにならないからバグは作り込まれる
ただ作り込まれたテストコードのバグの大半はテスト失敗の形で現れるので修正することでバグを排除できる
2021/02/15(月) 22:55:52.85ID:Y9YOwFs/
それで手動テストで、やったテストが正しいか証明する方法はまだ?
スクショは正しいか証明する方法ではない
2021/02/16(火) 01:08:46.04ID:1bhKa/Av
なんか時間かかりすぎるよね
2021/02/16(火) 09:37:52.92ID:4/kXXcg7
唐突に「底辺」って言葉を使う人は大抵、底辺コンプレックスを抱えている奴だから>>256に反論はできない

だって底辺だから
2021/02/16(火) 09:42:16.10ID:JE34XZEs
>>258
底辺と自覚しているようで(笑)
そもそも単体テストなんていらないから
その後のテストで何もなければokだろ
証明とかテストという形式でやらないし残さないのだから(笑)
クソプログラマは必死でテストコード書いて通ってるから安心(笑)と思って後のテストでボコボコに指摘されそもそも仕様すらまともに理解してなかった(笑)ということが日常茶飯事やろ
2021/02/16(火) 10:20:55.15ID:IR9INNCG
>>259
お前の底辺コンプレックスとお前の日常とかどうでもいいから質問に答えたら?
その後のテストが正しいことってどうやって証明するんだ?
>>228書いたのお前だろ?
2021/02/16(火) 10:29:37.64ID:ZcpmZlC/
>>259
> その後のテストで何もなければokだろ

だからその後にやった手動テストが正しくテストしたと
どうやって証明するんだって聞いてるんだが?
2021/02/16(火) 10:31:18.03ID:ZcpmZlC/
>>259
テストコードない人は、仕様をわかってないで完成しましたって言って
その後の手動テストで、ボロクソに言われるだろw
2021/02/16(火) 12:51:04.85ID:IR9INNCG
> クソプログラマは必死でテストコード書いて通ってるから安心(笑)と思って後のテストでボコボコに指摘されそもそも仕様すらまともに理解してなかった(笑)ということが日常茶飯事やろ

修復不可能なクソコードを必死にテストしてそうだなコイツw
お前のコードは今更、単体テストしても手遅れだから諦めろ

他のお前らは、こんなふうにならないように最初からテストを自動化して、常に品質を保証できるようにしておけよ
2021/02/16(火) 14:36:40.86ID:JE34XZEs
>>263
お前と違って結合やらその後のテストで俺が作ったものは、ほとんどバグなんて無いんだよ
要望がでて対応するくらい
お前の場合はスキルが低過ぎてバグだらけな上に仕様すら満たしてないものしか作れないだろ(笑)
こういう奴のことを俺はマイナスしか生産しないゴミとよんでる(笑)
2021/02/16(火) 14:48:04.48ID:hLN/ZNLb
と妄想する底辺であった
2021/02/16(火) 14:53:04.38ID:1bhKa/Av
今の所一箇所しか当たったことないな
単体テストの自動テスト
すげー無駄作業感すごかった
2021/02/16(火) 14:53:52.36ID:OZpOEjmI
>>264
底辺コンプレックス君、さっきからなんで>>260>>261の質問を無視するの?
オブジェクト指向アンチのイキリ底辺君と同じ匂いがする
2021/02/16(火) 14:57:32.28ID:YiD3bxyB
>>266
なぜ、無駄だと思ったのか理由を述べてほしい
興味がある
2021/02/16(火) 15:05:00.94ID:QovxsXZg
いいんじゃないの、優秀な人が揃っててバグがないならサイコーやん
超優秀なグーグルの技術者さんが単体テストツールとか作ってるのが現実だけどw
2021/02/16(火) 15:26:10.69ID:1bhKa/Av
>>268
ソースに基づいて機械的に書いてるだけでテストが何のテストにもなってないことが多かったとかじゃなくて
すべてのテストコードがそうなった
少なくとも網羅されてなくては意味がないので
複雑な分岐のあるコードを通すときは同じコードをテストコードに貼り付けてすべての取りうる値をループで回すように組んだ
switch caseのような文ね
それの更に上の階層のコードも
結局subルーチンの取りうる値が結局わからないというか数が多過ぎていちいち調べてられないので
サブルーチンのテストコードを貼り付けてさらに本ルーチンのテストを加える形で追加していった
こんな手順でやるので一番うえの階層に行く頃には超巨大スパゲッティテストコードができていた
2021/02/16(火) 16:07:47.96ID:JE34XZEs
ホントテストが有用な説明を一切出来ないんだよなぁw
テストコード厨ってwww
頭が悪いからテスト書かないとボクのコードが正しいかわかりましぇーんwww
みたいなレベルなのかもしれんがw
こういう奴らって自分で動作確認しないでコミットしたりマジでしそうなんだよなぁw
普通はデバッグとかして大丈夫なものを上げるやろ
あ、デバッグの仕方やコールスタックとか全く知らんのかwwwwwwww

マイナスしか生産しない奴の場合、ちょっとパラメータ変えただけで動かないとか
エラー処理が無いとかそんなのばかりなんだよなw
それで、テストコードwも当然そのエラー処理に関するものは一切ないというwwwww
2021/02/16(火) 16:16:01.07ID:VGyCnBhh
wが多いほど余裕がなくて必死になってるように見えるぞ
2021/02/16(火) 16:58:55.10ID:+4LTd2t4
>>223で、すげー分かりやすい説明してるんだけどなぁ
2021/02/16(火) 17:13:03.88ID:+kNhNUJJ
芝の数は知能指数の低さを表す定期
池沼だから周りの指摘が理解できないのだろう
というかさ、単体テストができないレベルは論外なので他スレ逝ってください
お願いします
2021/02/16(火) 17:18:14.85ID:+kNhNUJJ
単体テストが必要ない→テスト済みのライブラリを使っており独自定義のモデルが無いから なら耳を傾けてやったが、流石に単体テストそのものの否定は論外

もし、これでテスト済みのフレームワークであるRailsやAndroid SDK、Django、Electron等を使ってたら嗤う
まぁ、フレームワークを一切使わない上、単体テストもしないとかだったらもっと嘲笑ってやるが
2021/02/16(火) 17:44:56.71ID:2fDc5cBr
>>270
文章がスパゲッティ過ぎて説得力ゼロ
2021/02/16(火) 17:52:58.50ID:+kNhNUJJ
>>270

> ソースに基づいて機械的に書いてるだけでテストが何のテストにもなってないことが多かったとかじゃなくて
> すべてのテストコードがそうなった

あなたはもう一人の頭おかしい人とは別人と見なして回答するけど、そもそもソースに基づいてテストケースを書くのが間違い

ソースを書く段階で既に正しいソースの答えが存在しないといけない
テストコードを書く→コード実装する→ビルドする→テストコードが自動で実行→コード修正する→ビルドする→テストコードが自動で実行
これを繰り返すから不具合の無いプログラムが書ける

もしも、これを否定するのなら、是非、もっと素晴らしい開発ノウハウを教えてほしいものだ
「俺がつくったものはほとんど不具合を出さない」とか、そういうイキリ情報だけ吐き出すのはどうでもいいから
2021/02/16(火) 18:08:22.87ID:1bhKa/Av
>>277
ソースがおかしかったらテストもおかしくなるの?
2021/02/16(火) 18:29:17.92ID:+kNhNUJJ
>>278
本来の単体テストでは、ソースがおかしかったらテストもおかしくなってはならないのだが...ソースに基づきテストコードを書くと、ソースがおかしいとテストコードもおかしくなる可能性はある

まぁ、ソースに基づきの本質的な意味にもよるけど

文面と自分の過去の経験(単体テストの無意味化)から、書き直しながら設計をする「書き直しプログラミング」という良くない実装をしているんじゃないかなーとも感じられたけど、そこら辺は大丈夫?
2021/02/16(火) 21:27:59.66ID:ZcpmZlC/
自動テストの欠点は

1. 時間がかかりすぎる。自動テストの数千倍
2. 正しくテストをしたという証拠が残らない
2021/02/16(火) 21:28:14.84ID:ZcpmZlC/
間違えたw

手動テストの欠点は

1. 時間がかかりすぎる。自動テストの数千倍
2. 正しくテストをしたという証拠が残らない
2021/02/16(火) 21:33:26.67ID:dPD3RJZH
テストが要らんと言う人の意見のほうが聞きたい
テストが要ると言う人の意見には興味は無い
PGとSEの区別も仕様書と要件定義書の区別も
人月も工数計算も俺にとっては興味が無いから
どうやって人類はクソコードを避けていくのかの意見だけが聞きたい
2021/02/16(火) 21:41:54.02ID:ZcpmZlC/
頑張ればできる。みたいな根性論はいらんで
何千人も人を投入すればできる。みたいな人海戦術もいらんで
2021/02/16(火) 21:46:50.65ID:2fDc5cBr
>>282
「〜すればクソコードを避けられる」という意見があったとして
それが本当にクソコードを避けられるかどうか
どうやって確認するの?
2021/02/16(火) 22:09:23.42ID:dPD3RJZH
>>284
確認も何も
本当に避けられるかどうかがまずどうでもいい
もっと気楽にもっと率直に
「こういう糞を俺はこう避ける」の生の意見を聞きたい
2021/02/16(火) 22:16:43.61ID:ZcpmZlC/
>>284
それを聞いてる

「手動テストすればクソコードを避けられる」という意見があったとして
それが本当にクソコードを避けられるかどうか
どうやって確認するの?
2021/02/17(水) 02:14:29.51ID:9AWFfoq+
クソコード避けたいなら、まずクソなプロジェクトを避けることだな
2021/02/17(水) 02:46:54.37ID:fzT3JoWH
>>285
発想がすでにクソコード
2021/02/17(水) 07:57:46.74ID:cgz/Ol0S
元は>>228の発言なんだろうけど、もう触れるのはやめようぜ
俺ももっと建設的な意見が聞きたいよ
2021/02/17(水) 08:34:48.76ID:ty0uudwM
結局手動テストで、正しくテストを行ったことを
担保する方法は出ないで終わりか
結果のスクショだけじゃ役に立たないからね
2021/02/17(水) 12:04:03.72ID:KH04dI9l
コードがクソでもプログラマーがクソじゃなければ簡単に浄化できる

クソコードを避けようとするのは浄化スキルを持たないクソプログラマー
2021/02/17(水) 12:11:35.28ID:JcWwc4WJ
浄化が何を示すのかよくわからんけど単体テストコード無しでリファクタリングする勇気は俺にはないわ
2021/02/17(水) 12:31:42.99ID:H55Rd51D
俺もテストコードが無い上、手遅れなソースは直せる自身がないや
ほぼ作り直しになる未来しか見えない
テストコードを作れば済む話なら直せるけど、手遅れコードは無理
2021/02/17(水) 12:50:38.83ID:FZd5objq
具体性皆無
どうやって浄化(リファクタリング?)するのだか
たったの2行から嫌な予感しかしないけど、一応聞いてやろう
2021/02/17(水) 13:00:59.13ID:pFFqlpSR
テストコードが無いなら書けばいいじゃん
クソコードを放置して新たなクソを付け足すのもクソプログラマーだな
2021/02/17(水) 13:50:01.10ID:FZd5objq
>>295
クソコード呼ばわりするレベルに至る時点で、テストコードを追加して直せばいいじゃんで済むレベルじゃないと思うのだが

まぁ、俺の想像するクソコードと貴方の想像するクソコードが乖離している可能性はあるけど
297デフォルトの名無しさん
垢版 |
2021/02/17(水) 14:04:39.81ID:DzAxBoaP
テストコードって学校で習わなかったなぁ
2021/02/17(水) 14:15:56.78ID:bkC92bnI
頭の悪いマウント合戦やってるクソスレ上げんなカス
2021/02/17(水) 14:24:26.00ID:8PenPzn3
晒し上げ
2021/02/17(水) 14:27:57.95ID:ty0uudwM
>>295
テストコードがないのに、どうやって正しいテストがわかるのかね?
テストが本当に正しいという担保はどうやって取るのかずっと聞いてる
2021/02/17(水) 14:35:24.50ID:7XrGtYbS
>>300
仕様があればテストコードがなくても何が正しいかわかるよね?

仕様がないなら仕様を作ればいいよね?
何が正しいかを決めればいいだけ

できない言い訳ばかりしてクソにクソを積み重ねる君たちがクソコードの現況だから
2021/02/17(水) 14:37:56.30ID:ty0uudwM
>>301
> 仕様があればテストコードがなくても何が正しいかわかるよね?

その仕様が正しいという担保は?
仕様が間違ってるなんてよくある話
2021/02/17(水) 14:47:15.95ID:csyh4HrV
はいはい、この話はやめやめ
頼むから【隔離】文字を入れた隔離スレで議論してくれ
2021/02/17(水) 15:11:11.02ID:4I2sE0QP
>>302
それは仕様書が間違ってるんであって仕様が間違ってるのとは違う

仕様書が間違ってると判断できる術があるなら何が正しいかわかるということ

結局テストと同じ話なんだけどあれこれ言い訳してクソを放置してるだけだよね
2021/02/17(水) 18:21:56.56ID:k81iZNBk
継続的イ...継続的な品質維持を破壊するようなコードを列挙していこうぜ
スレの趣旨的にはアンチパターンの研究が本来の目的だろうし

「構造が理解できないコード」とか
「責務を見失ったクラス」とか
「コピペしたような共通のコードが複数箇所あって、一部のソースを変更したら114,519箇所のコード書き直しが要求されるコード」とか
2021/02/17(水) 18:27:10.12ID:ar54zOTy
TDD知らんの?
2021/02/17(水) 18:30:50.13ID:k81iZNBk
>>306
知ってるけど流れ察しろ
308デフォルトの名無しさん
垢版 |
2021/02/17(水) 18:32:30.85ID:8Df3qLX7
馬鹿が文章を書くとこうなりますの見本スレ
309デフォルトの名無しさん
垢版 |
2021/02/17(水) 18:44:03.73ID:ltamn3iy
クソコード:大概が自己満足のオナニーに起因する
自動テスト:出来ているやつはホトンド居ない、なぜなら自動テストで致命的な問題が
      出てこないで後から発見されるから、セキュリティ・ホールも右に同じ
      大概が自己満足のオナニー

だが自動テストは必要悪である。テスト原理主義者はカバレッジが100%で無ければ教義に反する異端者として
処分され、変数の代入さえテストを要求するが、致命的な問題が後から発見された場合にはテストすら破壊する
破壊的なリファクタリングを必要とし、テストコードの修正と二重苦の責めを負う
2021/02/17(水) 18:50:55.02ID:dlextU55
>>305
視野が狭すぎてちょっと引く・・・

君みたいなプログラマーが継続的な品質維持を破壊する1番の原因
2021/02/17(水) 18:55:30.33ID:UmDM7l2a
>>310が空気読んでなくて引く
どう考えても継続的イとか言いかけているあたりがで、荒らしを相手にすんなという意味なのにそれを解説しないと伝わらないことに引くわ

あっ言っちゃった
2021/02/17(水) 18:59:25.09ID:JcWwc4WJ
>>295
テストコードがない時点でろくな仕様書がない可能性が高いと思う
コードからテストコードを作るのはめっちゃ大変だし
2021/02/17(水) 19:10:33.57ID:UlO/vFMl
継続的淫夢ローション
2021/02/17(水) 19:19:20.02ID:DzAxBoaP
>>298
1番馬鹿なのはお前
2021/02/17(水) 19:29:15.15ID:p8cob7ED
テストコードはあって当たり前の前提でスレタイの話がしたかった...
2021/02/17(水) 19:40:45.14ID:p8cob7ED
まぁ、意味のあるテストコードがあればクソコードと言われるレベルのものはなくなるけどさ、そうじゃなくて

クソコードと良いコードを知った上でテスト駆動やるべきだからこそ、クソコードの分析がしたかったよ...
317デフォルトの名無しさん
垢版 |
2021/02/17(水) 20:38:23.05ID:ltamn3iy
むしろ時代の流れは既にテストコードを「書く」という流れではなく、既に外部ソフトウェアを利用して
テストする段階に来ている。これは日本では「単体」しないのですか?と受け止めれれるがそうではない。
例えばテストしづらいソフトウェアにはLinux-KernelがあるがリリースはTorvaldsが十分に安定していると
「感じ」たときにリリースされる。ではLinuxは全くテストしていないですか?と思うがそうではない。
Kernelはテストコードが書きづらいため、様々な工夫がされる。外部ツールとして静的コード分析、
継続的インテグレーションツール、テスト自動化など様々なツールが使われる。もちろん単体テストもある。
現在のソフトウェアの主流において(ランダムな引数を渡す)ファジングテストツール(Fuzzer)なども
使われる。日本では一向に使われる気配は無い(誰も使わない・知らない企業独自のプロダクトのような
自動ツールが使われるのみである)ストレステストツールは何も知らない営業のアホが書いた根拠不明の
性能要件を満たすためのツールではないのである。フェイクデータを用意してテストするのが一部では
流行っているがそれでは網羅性はない。
例えば、1ファンクション/メソッド/スコープの変数の数、分岐の数、ループ、演算子の数の増えれば
増えるほど複雑度は増大しバグが発生しやすくなるはずである。そう言った統計的な手法を見ないで
宗教のようにテストコードばかりに注目するのは悪である。
2021/02/17(水) 20:56:14.06ID:3Rkqt+9c
>>312
むしろテストコードがないからこそ仕様書をきっちり更新してる可能性のほうが高いやろ
それにコードからテストコードを作るのはアンチパターンだぞ
2021/02/17(水) 21:16:09.34ID:3Rkqt+9c
>>316
自分がクソコードだと思う例をあげて解説してみればいいんでない?
クソだと思ったものが意外とそうでもない場合もあればその逆もあるから
2021/02/17(水) 21:24:29.62ID:v0/tbLAB
再利用性の無いクラスは糞
お前らもあるやろ?
アプリ全体で一箇所でしかインスタンス化されないようなクラス
邪魔だなぁと思いつつも
それを書く事で若干の整理と局所化が得られるから作っちゃうようなクラス
2021/02/17(水) 21:48:55.78ID:FwS3TBTC
>>317
嘘つくな(笑)
オープンソースでなんか証拠持ってきてみ
322デフォルトの名無しさん
垢版 |
2021/02/17(水) 22:15:44.97ID:ltamn3iy
>>321
いろいろ書いてますが、どの辺が嘘だと言っていますか?全て?
2021/02/17(水) 22:36:40.80ID:JcWwc4WJ
>>318
> むしろテストコードがないからこそ仕様書をきっちり更新してる可能性のほうが高いやろ
ないない、世の中にはテストコードも仕様書もちゃんとしてる組織とテストコードもないし仕様書もちゃんとしてないクズ組織しかないと思っていい

> それにコードからテストコードを作るのはアンチパターンだぞ
そんなことはみんなわかってる
やむを得ずのケースな
2021/02/17(水) 22:43:42.98ID:FwS3TBTC
仕様書をきっちり更新しているとして、
ちゃんとその通りにテストしたことを担保するのはどうすればいいの?
なんでこの質問に答えられないの?
2021/02/17(水) 22:44:31.47ID:FwS3TBTC
>>322
ソースを持ってきてない所全て
2021/02/17(水) 22:52:29.81ID:gjncEnw2
パーフェクトRuby on Rails には、
毎週モジュールを更新してテストするように書いてある

こういうのが出来るのは、Ruby/Rails コミッターのいるような技術力のある自社開発系だけ。
普通の会社は、できた後は放置するだけw
一切、更新しない

会社全体で、AWS の800資格と、
全12資格を持つ、ジェダイマスターが7人いる、クラスメソッドの動画を見ると、
全部、Lambda などのサーバーレス

自社で毎週、OS・アプリ・モジュールなどを更新してテストできる、会社は無い。
だから、AWS がOS・Aurora などのデータベースなどを更新する、サーバーレスを使う

サイボウズのkintone は、Kubernetes で毎日すべてのシステムを破棄して、作り直している。
これが究極のTDD・継続的インテグレーション

毎日、全システムをrolling update する
2021/02/17(水) 23:03:43.66ID:3Rkqt+9c
>>323
>そんなことはみんなわかってる
>やむを得ずのケースな

やむを得ずのケースもやっちゃダメ
わかってるつもりでわかってないパターン
328デフォルトの名無しさん
垢版 |
2021/02/17(水) 23:09:24.60ID:ltamn3iy
>>324-325
まあ暇だから相手するけど、「その通りにテストしたことを担保する」っていうのはテストコードを
流しただけでは出来ませんよ。なぜならテストにもバグが介在するからです。イテレーションテストでも
反復回数が足りなければデグレします。極限値テストでもその中にバグを起こす特定値が無ければ
何の意味もありません。多くの人があんたの質問には答える価値があんまりないからじゃないかな?
「ソースを持ってきて」という表現方法もプログラミングに置き換えると非常に曖昧で解釈が不明です。
情報源のURLを提示しろ、元のオープンソース(笑)を証拠を持ってこいよ」どちらにも取れますが
プログラミングには向かない人だと思います。マウントポジション取りたいだけなら話は良く分かりますが
煽りたいだけであれば、幼稚園にでも通いなさい
2021/02/17(水) 23:14:35.28ID:FwS3TBTC
>>328
初っ端から論点をすり替えるなよ

もう一回やり直し
「手動テストでどうやってちゃんと書いてあるとおりにテストしたと担保するの?」
330デフォルトの名無しさん
垢版 |
2021/02/17(水) 23:16:22.98ID:ltamn3iy
手動テストなんて1回も書いた事無いのに、すべての人があんた以外の同一人物じゃないんだから
あんたの脳内が正常に回ってるかテストしたほうがいいんじゃないですか?
2021/02/17(水) 23:19:03.48ID:FwS3TBTC
>>328
わかりやすく言えば

一人目「なんか手順を省いちゃった気がするけど、次の人がちゃんとやるだろうからヨシ」
二人目「正しく動いてない気がするけど、前の人がスクショとってOKって言ってるからヨシ」
三人目「前の二人がOKって言ってるからヨシ」

こんなたくさんのスクショあっても見る時間ねーよヨシ

これをどうやって防ぐの?
2021/02/17(水) 23:19:39.55ID:FwS3TBTC
>>330
論点をすり替えて答えた気になるなって言ってるだけ

「手動テストでどうやってちゃんと書いてあるとおりにテストしたと担保するの?」
333デフォルトの名無しさん
垢版 |
2021/02/17(水) 23:24:26.28ID:ltamn3iy
こいつは相手にしちゃダメな人だったか、テスラでもトヨタでも自動運転のテストを公道でやってますが
担保するために何をやっているかと言えば色々な現実的な状況や環境、人の動きなど特殊な例外パターンを
実地でチェックシートを用意してテストしてます。コードを書いて自己満足しているわけではありません。
そもそも自動運転というか自動学習のようなモデルでは何が正しいのかを定義することさえ困難です
「論点をすり替えて答えた気」といっていますがあなたが何を「論点」としているのか、まったくもって
説明していません。とても残念な方だと思いますが同僚や仲間には迷惑をかけないようにしましょう
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
すいません、テストが漏れてましたじゃねーよ、いっつもいっつも
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で止まることを想定できんやろ
どんな組み合わせをやっても無理なはずやで
テキトーなことを言うな
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
自動テストはヒマなら書くレベルの価値しかない
2021/02/22(月) 06:43:52.26ID:Vv8+u1qd
>>536
話し終わってねーだろw
手動テストが時間がかかるという話が出た途端
なぜそれまでの話をなかった事にするんだ?www
538デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:45:01.26ID:PA6Gvk4i
自動テスト書くくらいなら他の仕事やれよ
単価テスターの6倍とかなんだから
2021/02/22(月) 06:45:38.77ID:Vv8+u1qd
>>538
ならテスターが自動テスト書けばいいだろwww
540デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:46:59.64ID:PA6Gvk4i
>>539
それはアリ、でもそんな現場は無い
2021/02/22(月) 06:48:25.53ID:Vv8+u1qd
>>540
類は友を呼ぶってことだよw
自動テストがあるプロジェクトはたくさんある
542デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:48:33.24ID:PA6Gvk4i
プログラム分からないほうがテスターとして価値ある
時々すごい操作するし
543デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:49:22.93ID:PA6Gvk4i
メンテしなくなる自動テストのエレジー
544デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:51:06.89ID:PA6Gvk4i
もう丸1年くらいテストコード見てない
2021/02/22(月) 06:51:42.66ID:Vv8+u1qd
はい、手動テストの方が時間がかかるって
結論をそらし始めましたよw
546デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:51:53.08ID:PA6Gvk4i
ヒマなら書いたほうが良いのは認めてる
547デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:52:54.59ID:PA6Gvk4i
社員じゃないんで書きたくないというのもある
2021/02/22(月) 06:53:42.35ID:wMwiRJvv
自動テスト書いた方が早いことは自動テスト書きながら開発してるやつなら分かると思うんだ
549デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:54:15.04ID:PA6Gvk4i
エンドが書けば良いと思うんだが・・オナニーと大して変わらないんだから
550デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:57:07.17ID:PA6Gvk4i
SwaggerとかでAPI自動生成される場合は書いたほうが良いな
2021/02/22(月) 06:58:12.31ID:Vv8+u1qd
自動テストを書く時間まで積んだうえの開発コストだと思うんだが?w
手動でテストをすると、その開発コストが大きくかかる
552デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:59:23.38ID:PA6Gvk4i
手動テスト要らないプロジェクトを知らない
2021/02/22(月) 07:00:39.66ID:Vv8+u1qd
手動テスト要らないなんて一言も言ってないよな
自動テストを書く時間まで積んだうえの開発コスト
全部手動でテストをすると、その開発コストが大きく跳ね上がる
554デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:02:05.20ID:PA6Gvk4i
>>553
そんな事ない、テスト観点の洗い出しが変なだけ
2021/02/22(月) 07:03:27.97ID:Vv8+u1qd
>>554
テスト観点の洗い出しが良くなれば
同じ件数のテストを手動で早く実行できるという
理由を言ってみて

手動テスト要らないなんて一言も言ってないよな
自動テストを書く時間まで積んだうえの開発コスト
全部手動でテストをすると、その開発コストが大きく跳ね上がる
556デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:04:10.61ID:PA6Gvk4i
テストコードの保守工数より手動テストしたほうが確実
557デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:04:42.42ID:PA6Gvk4i
>>555
自分で考えろ
2021/02/22(月) 07:05:28.58ID:Vv8+u1qd
やっぱり話をすり替えようとしていただけだったかw
2021/02/22(月) 07:06:08.80ID:Vv8+u1qd
具体例

俺が作ってる1万行程度のツールはテスト項目数が1000個以上ある
この項目数は多いというほどのものでもないだろう
このテストを全て自動的に実行する時間はに30秒程度

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

大きなシステムではテスト項目数は数万、数十万にもなるから
テストに数日かかる。コードを修正するたびにそんな事やってられないから
手動テストはテストをサボることになる
560デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:07:12.30ID:PA6Gvk4i
いちいち理由を聞くな、ここは自分考えだけを言って
ストレス解消する便所の落書きだ
2021/02/22(月) 07:08:35.98ID:Vv8+u1qd
まあ手動のテストで1つあたり10秒って書いたけど
普通そんな時間で終わらせられないよなw

事前準備の手順があって結果のデータを見比べて
画面を注意深く観察してスクショとって
チェック表にチェック入れるんだろ?
1分でも短いかな?
2021/02/22(月) 07:08:55.27ID:Vv8+u1qd
>>560
お前がストレス解消のために書いてるってことはわかったよw
563デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:08:56.10ID:PA6Gvk4i
暇ならテスト書いていいんじゃない
2021/02/22(月) 07:10:09.10ID:Vv8+u1qd
暇だからという理由で手動テストをしてたのか?
手動テストをやめれば暇になるぞwww
565デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:10:31.54ID:PA6Gvk4i
開発工数30日とかテストなんか書けるかハゲ
2021/02/22(月) 07:11:40.21ID:Vv8+u1qd
>>565
だからテストしないと?
プロの仕事じゃないな
567デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:11:58.72ID:PA6Gvk4i
巷には短納期かつトラブル案件だらけ
2021/02/22(月) 07:12:33.00ID:Vv8+u1qd
そして短納期かつトラブル案件は自動テストがない

なるほどなw
569デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:12:50.79ID:PA6Gvk4i
悠々とテストコード書ける案件やりたいな
2021/02/22(月) 07:13:46.16ID:Vv8+u1qd
テストコード書く時間がないなら
それよりももっと時間がかかる手動テストやれるわけがないので
テストサボってるだけなんだろうな
571デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:14:21.10ID:PA6Gvk4i
テストコード工数を認めてもらえる案件やりたいな
もう単体テストはエンドでやる、みたいなのばっかり
572デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:15:19.40ID:PA6Gvk4i
そして仕様変更が来る
573デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:16:26.70ID:PA6Gvk4i
エージェントが20%とか抜いてるからエンドがコストにシビアすぎる
2021/02/22(月) 07:18:04.08ID:Vv8+u1qd
自動テストがないプロジェクトは短納期かつトラブル案件らしいw
575デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:18:22.62ID:PA6Gvk4i
もう60日以上の案件久しくやってないな
2021/02/22(月) 07:18:33.25ID:Vv8+u1qd
プロジェクトの炎上具合を測れるな
自動テストがないプロジェクトは短納期かつトラブル案件
577デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:19:07.55ID:PA6Gvk4i
自動テストとか暇な案件が羨ましいわ
2021/02/22(月) 07:19:23.92ID:Vv8+u1qd
自動テストを書いてないやつは、60日以上の案件をやらせてもらえないらしい
579デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:20:34.85ID:PA6Gvk4i
自動テストあるのにメンテしてなくて炎上するケースが50%くらいある
ずっと自動テスト工数割いてくれよ
580デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:21:38.82ID:PA6Gvk4i
60日以上の案件がほぼ無い
581デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:22:34.66ID:PA6Gvk4i
120日半年くらいあればなぁ
582デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:22:48.08ID:IPejWs3O
>>533
最近の単体テストツールは影響がないテストコードを実行しないものが多くある
583デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:23:43.26ID:PA6Gvk4i
他人の書いたテストコードのメンテが辛いのは分かる
584デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:27:46.33ID:PA6Gvk4i
メソッドを今流にメンテしたらテストコード通らないからギリギリまでママにされていて大規模改修とかやめてくれ
585デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:29:23.41ID:PA6Gvk4i
テストを直すのがめんどくさい時が多々ある
やめてくれ
586デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:52:25.48ID:PA6Gvk4i
テストコードとか書かないに限るな
2021/02/22(月) 08:29:30.69ID:UqVKWzXS
平日にID真っ赤にする手動テストおじさんはNGしとけ
無視して俺らと会話しようぜ
仕事してるからレスは少なくなるけど
2021/02/22(月) 18:49:35.65ID:/OsI7R0n
本日の職場で見たクソコード

class MainActivity implement 機能Aインタフェース, 機能B,インタフェース 機能Cインタフェース...機能Mインタフェース{

}

なんで12個のインタフェース継承してるの?
円卓の騎士かな?
Androidで発生するイベント全部、1個のアクティビティに継承して実装するのやめてください実装者が死んでしまいます
2021/02/22(月) 19:43:16.58ID:FCcJxvZt
それはクソコードと言うよりクソ設計だろ
2021/02/22(月) 22:40:13.49ID:hhtkxh8a
クソコード兼クソ設計だな
2021/02/23(火) 13:35:47.17ID:q1iKZVvs
>>587
なんか話せよ
2021/02/23(火) 13:39:35.37ID:q1iKZVvs
>>559
そのテストコード書くのにかかった時間は仕様変更によりすべて無駄になる世界があるんよ、君はまだ世界の広さを知らない
2021/02/23(火) 14:42:48.42ID:iu17pC6m
>>592
仕様変更によりテスト手順書が全て無駄になる世界はないのか?w
2021/02/23(火) 16:14:44.38ID:5BmsWjYf
こいついっつもテストする時間のことを無視するよなw

テストコードを書く vs テストコードを書かないでしか比べてない
それよりも重要な何度も行うテストの時間を持ち出されたら困るのだろうな
手動で数回テストをするだけであっという間に開発コストが数倍に跳ね上がる
595デフォルトの名無しさん
垢版 |
2021/02/23(火) 16:23:12.42ID:xxo3T1mG
テスト書くのめんどくさいんで俺が抜けた後のやつに任せるわ
2021/02/23(火) 16:58:13.53ID:8QyPv/It
テストコード1回書く間に手動テスト5回はできそうなんだが?
んで1回テスト通したら次の変更までやんねーよな?
597デフォルトの名無しさん
垢版 |
2021/02/23(火) 17:21:41.87ID:0iI/BmGY
ここまでをまとめると、テストコードはSWAGGERとかで自動生成される部分のみでおk?
2021/02/23(火) 17:21:54.85ID:iu17pC6m
>>596
それ、テスト手順書書く時間入れてなくね?
2021/02/23(火) 17:48:25.42ID:q1iKZVvs
>>593
テスト手順書なんて作るん?
2021/02/23(火) 17:49:26.31ID:q1iKZVvs
>>598
テスト手順書って何?
2021/02/23(火) 17:50:39.14ID:q1iKZVvs
仕様変更があるのは手順書作る前だから問題ないのさ、でもテストコードは無駄の極み底辺コーダーの自己満なのさ
2021/02/23(火) 17:51:03.33ID:q1iKZVvs
>>597
オーケー
2021/02/23(火) 17:53:11.25ID:q1iKZVvs
ユニットテスト100回回すより総合テスト1回の方が品質高まる、実装ミスなんて現代のプログラミング環境では無視できる
2021/02/23(火) 18:07:19.13ID:5BmsWjYf
>>596
> テストコード1回書く間に手動テスト5回はできそうなんだが?
たった5回って少なすぎだろw

バグ5個見つかったらそれで終わりじゃん
605デフォルトの名無しさん
垢版 |
2021/02/23(火) 18:33:09.14ID:0iI/BmGY
flutterとかJITでガンガン テスト→修正→リファクタリング を繰り返すからテストコード要らないんだよね。
2021/02/23(火) 19:03:27.43ID:5BmsWjYf
>>605
Flutter標準のやり方でテストしてるってことかな?
どの方法を使ってるの?

Testing Flutter apps
https://flutter.dev/docs/testing

Automated testing falls into a few categories:

- A unit test tests a single function, method, or class.
- A widget test (in other UI frameworks referred to as component test) tests a single widget.
- An integration test tests a complete app or a large part of an app.
2021/02/23(火) 19:15:46.42ID:5BmsWjYf
>>606のページに書いてあった
          Unit  Widget  Integration
Confidence    Low  Higher  Highest
Maintenance cost Low  Higher  Highest
Dependencies   Few  More  Most
Execution speed  Quick  Quick  Slow


俺が言っていたことと同じだけど翻訳すると

・信頼性
 ユニットテスト:低い ウィジット:高い 統合テスト:最高
・メンテナンスコスト
 ユニットテスト:低い ウィジット:多い 統合テスト:最も多い
・依存関係
 ユニットテスト:低い ウィジット:少し依存する 統合テスト:たくさん依存する
・実行速度
 ユニットテスト:速い ウィジット:速い 統合テスト:遅い

統合テストはメンテナンスコストが悪くて遅いんだよね
2021/02/23(火) 19:44:22.51ID:iu17pC6m
>>599-600
テスト手順書知らない体なのに>>601で手順書の前とか意味不明
テスト語る前に自分の頭のデバッグしろよw
609デフォルトの名無しさん
垢版 |
2021/02/23(火) 20:57:27.28ID:0iI/BmGY
テストコードは暇なら書くレベルの価値しかない
AppleもGoogleも特に推奨してないし
2021/02/23(火) 21:01:10.20ID:5BmsWjYf
はいはい、議論の負けたから続きじゃなくて
前の話に戻して逃げるとw
611デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:03:22.33ID:0iI/BmGY
>>610
それ言うなら「議論に」かな?
日本語を勉強しよう!
2021/02/23(火) 21:04:02.68ID:5BmsWjYf
やっぱりどうでもいい指摘
2021/02/23(火) 21:05:07.62ID:5BmsWjYf
Flutterが自動テストを推奨していることをどう思うのか?

Testing Flutter apps
https://flutter.dev/docs/testing

Automated testing falls into a few categories:

- A unit test tests a single function, method, or class.
- A widget test (in other UI frameworks referred to as component test) tests a single widget.
- An integration test tests a complete app or a large part of an app.
614デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:05:55.00ID:0iI/BmGY
テストコード自動生成ツールとかあったな・・
今どこいったんだろ・・
2021/02/23(火) 21:07:29.73ID:5BmsWjYf
>>614
使えないものは消えるだけの話
自動テストに、テストコード自動生成とかいう眉唾ものは必要ない
616デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:08:51.50ID:0iI/BmGY
>>613
どこで推奨してる?五万とあるプラグインのほとんどにテストコード無いけど。
2021/02/23(火) 21:09:47.53ID:H7g3tUGv
https://developer.android.com/training/testing/fundamentals?hl=ja
2021/02/23(火) 21:10:16.06ID:5BmsWjYf
>>616
一番最初に書いてある

The more features your app has, the harder it is to test manually.
Automated tests help ensure that your app performs correctly
before you publish it, while retaining your feature and bug fix velocity.
619デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:11:47.89ID:0iI/BmGY
>>617
推奨はしてないね。
2021/02/23(火) 21:12:45.23ID:5BmsWjYf
>>619
手動テストやれって書いてある?
書いてないね
621デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:13:16.46ID:0iI/BmGY
テストコード書け、ってwarningでも見たことないし
2021/02/23(火) 21:14:20.96ID:5BmsWjYf
>>621
カバレッジがそれに相当する
テストされてる範囲が低ければエラーになったりするし
623デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:15:40.93ID:0iI/BmGY
つまり暇なら書くレベルなんだよ。
「テストコード工数が嵩んで納期を守れません」
なんてPJ無いし。
2021/02/23(火) 21:16:18.20ID:5BmsWjYf
ほーらやっぱり反論できなかったw
2021/02/23(火) 21:16:58.40ID:H7g3tUGv
>>623
根拠は?
俺はURL示したけど
あと、Developerサイトに書いてあることが推奨じゃなかったらなんなの?必須?
626デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:18:00.51ID:0iI/BmGY
Xcodeとかでもテストコードカバレージ出るけどエラーになるかな・・
627デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:20:06.97ID:0iI/BmGY
>>625
そのURLは自動テストはこうやったら良いですよ。っていう紹介ページだよ。
秋葉原のテスト専門会社に出したほうがトラブル少ないし安いし。
628デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:21:23.76ID:0iI/BmGY
自動テストは暇ならやればいいよ。
2021/02/23(火) 21:23:33.72ID:5BmsWjYf
>>627
手動テストはこうやったらいいよっていう紹介はないんですね
やっぱり紹介するに値しないものだからなんでしょうね
630デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:24:44.69ID:0iI/BmGY
>>629
その意見はなんかズレてる気がするけど・・ジジイ?
631デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:26:29.19ID:luu761LB
>>630
そいつ田中勇だよ、相手にするな
2021/02/23(火) 21:26:51.74ID:H7g3tUGv
> そのURLは自動テストはこうやったら良いですよ。っていう紹介ページだよ。
> 秋葉原のテスト専門会社に出したほうがトラブル少ないし安いし。

TDD知らないの?
2021/02/23(火) 21:28:40.06ID:2jti1hD2
時間ないから自動テスト作りながら開発するんじゃないの?
634デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:28:52.26ID:zrvRgTjD
>>632
あ、もういいです。テストコードは基本書きません。
暇なら適宜書きます。
2021/02/23(火) 21:30:42.76ID:H7g3tUGv
>>634
お前はそうなのだろうけど、他所スレでやってくれない?
ここのスレタイ読める?
636デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:37:27.80ID:ruTDgDI5
ほんとこいつまじうぜぇ
637デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:55:00.29ID:zrvRgTjD
>>602
で、結論が出てるので自動テストの話は終了するか自動テストスレを立てて下さい。
2021/02/24(水) 01:17:48.29ID:edAGB3A3
モジュール仕様書って作る?javadocみたいな
cだから開発環境では作ってくれなくて、自前で用意するしかなさそうな雰囲気なんだけど自動生成してくれるツールとかない?
639デフォルトの名無しさん
垢版 |
2021/02/24(水) 01:27:10.83ID:cUgjNbyW
コレとかは違う?というかダメか。
https://gist.github.com/nafuka11/9c031f74682b1f66ccf22e7fbca9ca4b
2021/02/24(水) 05:41:22.24ID:IL+ryHZw
>>634
テストコードを書いてないあんたが忙しいというのはよくわかった
自動テストをしてないプロジェクトが炎上するのはよく聞く話だ
やっぱり忙しくなるんだね
2021/02/24(水) 07:35:11.50ID:1rMe/08W
蒸し返さなくていいから二人揃って隔離病棟池
2021/02/24(水) 07:36:31.14ID:7Ynmy8c9
>>638
とりあえずdoxygenはCにも対応してるはず
http://www.doxygen.jp/
643デフォルトの名無しさん
垢版 |
2021/02/24(水) 07:50:22.37ID:cUgjNbyW
>>640
おまえ死ねよ、しつこいよ
2021/02/24(水) 08:17:54.05ID:144B6M1D
>>641,643
お前らも相手すんな
2021/02/24(水) 08:53:02.20ID:edAGB3A3
>>642
知らなかった ありがとう
2021/02/24(水) 18:26:31.18ID:FKCMCStr
職場のクソコード

永続化する必要のない変数、全てをSQLightで管理
O/Rマッパー?何それ?
男は黙ってSQL文の文字列を埋め込め

データの取り出し方?
2021/02/24(水) 18:30:34.85ID:FKCMCStr
SELECTを書け
こうして、各種コードからSQLでアクセスするというグローバル変数共有化より恐ろしいクソコードができあがった

上司が勝手に外注に丸投げして作らせたコードが、プロジェクトメンバーでもない筈の俺の手元に何故か回ってきて発狂中
2021/02/24(水) 18:35:50.36ID:FKCMCStr
今日の心がけ◆丸投げはやめましょう

一般社団法人クソコード研究所
2021/02/25(木) 06:46:12.65ID:zWIoETxB
コメントを無駄に装飾するのやめてほしいわ
2行以上の全コメントが枠で囲ってあんの
2021/02/25(木) 07:39:27.32ID:tKZpxD44
ポインタで挫折するってよく言われてるけど
アドレスの意味がわかってないだけ
int a = 1;
int* b= a;
a = 2;
int c = *b;
これでcに2が入ってないことがわからないとか論外だろ
2021/02/25(木) 08:11:39.04ID:bxBNuN1v
>>650
ごめん、わからんわ
2021/02/25(木) 09:08:33.19ID:2DtRWZ66
>>608
手順書がかりにあるとしてもという話だよアホが
2021/02/25(木) 09:12:18.10ID:bxBNuN1v
>>652
手順書が何かを知らないのに仮にあるとしてとかアホすぎ
恥の上塗りかよw
2021/02/25(木) 09:18:01.68ID:2DtRWZ66
>>653
何か知らなくても仮定することできるよ
ブラックホールがあるとしても僕たちが吸い込まれることを恐れることはない、のように
2021/02/25(木) 09:18:59.00ID:2DtRWZ66
知ってるってことだけでマウンティングしようとしてるアホが君だよ、浅はかなのだよ
2021/02/25(木) 09:21:13.40ID:2DtRWZ66
自動テストは底辺コーダの自己満と心に刻みなさい
2021/02/25(木) 09:22:15.80ID:2DtRWZ66
テスト手順書という言葉は君の造語だと僕は思ってるけどね、一般的なものだとは思えない
2021/02/25(木) 09:23:57.48ID:2DtRWZ66
自動テスト1万回回すより手動テスト一回の方が品質高い
2021/02/25(木) 09:31:19.73ID:bxBNuN1v
>>654
手順書が何かも知らないなら前とか分からんだろw
論理的思考能力 "0" の無能乙
2021/02/25(木) 09:35:33.88ID:2DtRWZ66
>>659
ははーん君は仮定が何かを知らないようだねえw
2021/02/25(木) 09:37:40.49ID:2DtRWZ66
君は手順書wを知っていると言ってるだけの虚ろなテープレコーダーとなり下がった
2021/02/25(木) 09:40:12.87ID:2DtRWZ66
テスト手順書という言葉自体一般社会では通用しない代物だから知らなくていいものだとは思ってるが仮にそのような下賤なものがあるとしても問題ないと言ってるのだよ、ここまで噛み砕かないとわからないかな
2021/02/25(木) 09:42:43.67ID:bxBNuN1v
相変わらずキチのままだな
存在の仮定には反論してないぞ
そんなことも分かってないだろw
664デフォルトの名無しさん
垢版 |
2021/02/25(木) 10:09:07.67ID:R7WVwVFS
誰か>>650の相手してやれよ(2行目
2021/02/25(木) 11:15:52.49ID:2DtRWZ66
>>663
反論してないのな
2021/02/25(木) 11:16:02.45ID:2DtRWZ66
>>664
アンドな
2021/02/25(木) 11:18:21.06ID:2DtRWZ66
>>664
あれ、でもこれ2が入ってないことと言ってるからアンドなくていんじゃね
668デフォルトの名無しさん
垢版 |
2021/02/25(木) 11:31:45.02ID:R7WVwVFS
>>667
もちろんそうなんだけど、そもそもexceptionじゃね?
とかw
2021/02/25(木) 11:35:19.84ID:bxBNuN1v
>>664
C言語すら怪しいのにドヤってるやつの相手しろってか?w
2021/02/25(木) 11:35:58.12ID:bxBNuN1v
>>665
反論はしてない、お前のアホさを指摘してるだけw
2021/02/25(木) 12:13:25.25ID:2DtRWZ66
>>668
それはOSによるんじゃないかな
2021/02/25(木) 12:13:36.12ID:2DtRWZ66
>>670
反論してないのな
2021/02/25(木) 12:14:48.54ID:2DtRWZ66
なんだ反論してなかったのか
僕の主張が全面的に正しくて反論の余地が一切なかったということか
2021/02/25(木) 12:16:12.07ID:2DtRWZ66
2であることは保証されないよねって論旨だからOSによる動作の違いは些末なものさ
2021/02/25(木) 12:18:43.21ID:2DtRWZ66
自動テストは底辺コーダの自己満です、システムの品質は一切上がりません、自動テストは80年代の手法
676デフォルトの名無しさん
垢版 |
2021/02/25(木) 12:46:09.79ID:R7WVwVFS
環境によるって話なら2が入る可能性もあるよw
2021/02/25(木) 13:26:17.62ID:bxBNuN1v
>>668
未定義動作だからそもそもcがないとかw
2021/02/25(木) 13:26:53.04ID:bxBNuN1v
>>673
アホさの指摘には触れられないってか?w
2021/02/25(木) 14:37:56.27ID:LJq279gj
int a = 1;
int* b= a;

2行目の暗黙的変換がエラーにならないのって相当古い実装だよね。今でもあるのかな?
2021/02/25(木) 15:33:47.71ID:tKZpxD44
入ってることがわからない、だった
2021/02/25(木) 15:54:22.42ID:2DtRWZ66
>>676
それは環境依存だから保証されないよねってことさ
2021/02/25(木) 15:57:22.21ID:2DtRWZ66
>>678
その言動がアホっぽいw
2021/02/25(木) 15:58:24.50ID:2DtRWZ66
>>679
コード的にはなんの問題もないからなあ
2021/02/25(木) 16:00:03.24ID:2DtRWZ66
>>680
そこの君ぃそれはおかしいぞ君ぃ
2021/02/25(木) 16:35:21.09ID:bxBNuN1v
>>682
>>682
まあ、もうそう言うレスしかできないんだろうけど…
可哀想にw
2021/02/25(木) 16:44:31.71ID:2DtRWZ66
>>685
そっくりそのまま返すわ
2021/02/25(木) 16:45:23.32ID:2DtRWZ66
僕は鏡、君はスケベ椅子
2021/02/25(木) 16:47:45.65ID:cAbWQIRq
>>679
constraint violationなので実装依存
標準に準拠してれば最低限警告は出す
2021/02/25(木) 16:53:27.63ID:bxBNuN1v
>>686
返してどうするw
指摘に対してなにも言えないのは君ね
ちなみに反論はできないんじゃなくてする必要がないからしてないだけだから
>>663にその理由も書いてあるけど理解できてないでしょ?
690デフォルトの名無しさん
垢版 |
2021/02/25(木) 16:53:58.85ID:R7WVwVFS
>>680
int c = *b; の時、b = 1だから、1番他のint型の内容をcに入れてるよ
2021/02/25(木) 16:57:15.36ID:2DtRWZ66
>>689
はいはいまとめると反論ありませんってことな
2021/02/25(木) 17:01:11.50ID:2DtRWZ66
僕の鉄のような正論の前で反論できなさすぎて悔しくて僕の人格を貶めようと頑張っておられるところ恐縮ですが反論ないのな
693デフォルトの名無しさん
垢版 |
2021/02/25(木) 17:05:53.09ID:0Aa2beUH
あわしろ氏は、 >>692 は勉強しなおすべきと言ってたな。
2021/02/25(木) 17:22:49.64ID:bxBNuN1v
>>691-692
する必要のない反論はなくて
アホさの指摘にはぐぅの音も出なくてクヤチー
ってことなw
2021/02/25(木) 18:01:57.08ID:2DtRWZ66
>>694
反論ないのな
2021/02/25(木) 18:02:38.68ID:2DtRWZ66
>>693
あわしろってLinux板で叩かれてるやつだろ
2021/02/25(木) 18:59:36.92ID:bxBNuN1v
>>695
バカはレスできなくなると同じ内容をひたすら繰り返すようになるのな
もちろん反論は(必要ないから)ないし、アホと言う指摘に触れられたくない必死のアホがいるという事実も変えられないw
2021/02/25(木) 19:03:00.55ID:d2pfH4ce
>>697
> バカはレスできなくなると同じ内容をひたすら繰り返すようになるのな

↓これなw

675 名前:デフォルトの名無しさん[sage] 投稿日:2021/02/25(木) 12:18:43.21 ID:2DtRWZ66 [17/27]
自動テストは底辺コーダの自己満です、システムの品質は一切上がりません、自動テストは80年代の手法
2021/02/25(木) 19:29:01.20ID:NnkAM5s4
Googleのエンジニアに「自動テストは時間の無駄だから手動テストにしろ」って言えたら本物だよ
2021/02/25(木) 20:08:29.75ID:2DtRWZ66
>>698
これ正しいな
2021/02/25(木) 20:15:40.28ID:GSBW3E39
自動テストサイクルが回ってるの見たことない
2021/02/25(木) 20:16:42.74ID:d2pfH4ce
炎上の現場からお送りします。

「自動テストサイクルが回ってるの見たことない。テストする時間がない。」
2021/02/25(木) 20:17:43.83ID:2DtRWZ66
>>699
権威にすがった時点で論理的に間違ってると認めたようなもんなんだよ
2021/02/25(木) 20:20:05.02ID:2DtRWZ66
>>702
僕はテストコードにこだわって破綻したプロジェクトを経験したことある、手段にこだわって目的を見失ったパターンですわ、それ以来僕はテストコードはにわかコーダの自己満だと思うようになったのだねえ
2021/02/25(木) 20:22:11.13ID:d2pfH4ce
>>704
そのプロジェクトは権威がある所のプロジェクトですか?
それとも権威がない所のプロジェクトですか?
2021/02/25(木) 20:25:43.66ID:GSBW3E39
一回のテストで確認してるものが多すぎるのだ
ひとつの結果をチェックって
DB更新するのにレコード全体がチェック対象になんねん
2021/02/25(木) 20:27:32.84ID:d2pfH4ce
手動テストなら、レコード全体をチェックしなくても
動いてるからヨシでリリースできるのだ
2021/02/25(木) 21:59:16.03ID:2DtRWZ66
>>707
良いこと言った、君は現場をよくわかってる
2021/02/25(木) 21:59:58.67ID:2DtRWZ66
自動テスト自己満コーダたちは現場を知らない
2021/02/26(金) 01:10:16.93ID:HiCUAcQC
おっ、まだやってる?
オラオラもっと罵り合えや!
2021/02/26(金) 01:28:41.17ID:nwGfe0iv
>>710
うるせえ!今何時だと思ってんだ!馬鹿野郎が!
2021/02/26(金) 01:30:59.68ID:nqhzic13
>>708
やっぱりプロの仕事じゃねーなw
713デフォルトの名無しさん
垢版 |
2021/02/26(金) 03:47:36.47ID:5d4w5oMJ
テストコードなんか書かせてくれるエンドなんか
もう無いだろ、・・・
714デフォルトの名無しさん
垢版 |
2021/02/26(金) 03:49:44.09ID:lNpcN0RJ
リクルートで10年アプリ作ってたけどテスト書いたことない
2021/02/26(金) 06:13:35.29ID:sPHbC1so
なんでユニットテストは品質が上がらないんだ?
2021/02/26(金) 07:05:56.03ID:nwGfe0iv
>>715
見てるところか小さすぎる
製品の使い勝手をねじを眺めることで見極めようとするようなものマイクロテストは時代遅れの遺物
大事なのは全体品質ということ
2021/02/26(金) 07:13:20.98ID:nwGfe0iv
システムを使うのは人間なんだから人間が最初から最後まで使ってみて品質を研ぎ澄ましていくんだよネジの造形を眺めて悦に入ってるようじゃダメだね

現代の開発環境では実装ミスなんて起こらないからそこを一生懸命テストしてどうするのってこと
2021/02/26(金) 07:46:11.61ID:nqhzic13
一所懸命テストしてるから実装ミスが起きてない
因果関係がおかしい
2021/02/26(金) 08:20:21.32ID:wRESsqiS
実装ミスの定義がわからんw
2021/02/26(金) 08:52:36.60ID:nqhzic13
仕様バグじゃなくて、実装上のバグのことだろ?
それ以外に考えられない
721デフォルトの名無しさん
垢版 |
2021/02/26(金) 09:18:10.55ID:5d4w5oMJ
もう外食を禁止しちゃえばよくね?
2021/02/26(金) 09:43:28.53ID:nwGfe0iv
外食を禁止します!
2021/02/26(金) 12:12:42.54ID:xnYLStfr
>>709
頼むから、お前のレベルの低い職場を基準に語るのやめろ
あと、いい加減に隔離スレ行け、池沼
2021/02/26(金) 12:48:01.58ID:wRESsqiS
>>720
最近の開発環境だと発生しないの?
2021/02/26(金) 12:58:34.45ID:mmiiD7K+
>>709
続きはこちらでどうぞ

【隔離】単体テスト・テストコードの必要性
https://mevius.5ch.net/test/read.cgi/tech/1614310983/
726デフォルトの名無しさん
垢版 |
2021/02/26(金) 13:45:34.17ID:w2bvpH1M
まるちゃん、まともな仕事をしている人はまともな仕事であればあるほど
守秘義務があって仕事のことは何も話せないから、
SNSでそれっぽいことを大声で言っているアカウントは大抵偽物なんだよ。
https://twitter.com/kitty_lifehack/status/1357857702836281348
https://twitter.com/5chan_nel (5ch newer account)
2021/02/26(金) 13:55:31.12ID:nwGfe0iv
興奮するとスレ建てするアホを観測してる
2021/02/26(金) 13:56:59.03ID:nwGfe0iv
自己満テストコード君
興奮スレ建て君
君たちに日本の未来を任せた
2021/02/26(金) 14:44:22.29ID:XCnNOCyO
単体テスト・テスト自動化・テストコードの必要性 2
https://mevius.5ch.net/test/read.cgi/tech/1614318232/
2021/02/26(金) 15:58:35.99ID:3WymOF2m
なんでスレ立て直すかな...
自演封じられると不都合あるの?
2021/02/26(金) 17:43:29.79ID:RgeNMGoP
>>714
事実でも嘘でも大問題ですね
2021/02/26(金) 18:19:35.79ID:KTQPKhRG
クソスレから派生スレ立てた上にその重複スレまで立てるとかマジ頭おかしい
2021/02/26(金) 18:22:47.93ID:y/9ce84r
>>731
いいんじゃねーの
自分しか使わんツールをシコシコ作ってたのかも知れんし
734デフォルトの名無しさん
垢版 |
2021/02/26(金) 19:00:59.16ID:iQO5Z3xR
あわしろ氏は、重複大いに結構と言ってたけどな。
2021/02/26(金) 21:06:44.19ID:RUEbYDb7
テストコードのテストは誰がやるんだ
2021/02/26(金) 21:11:56.20ID:MVwmWMo6
手動テストのテストは誰がやるんだ?
2021/02/26(金) 21:13:09.39ID:9y4w8ED+
隔離スレがIPアドレス丸出しだから
こっちでやるか
2021/02/26(金) 21:22:05.56ID:9y4w8ED+
前にいた自称(手動)テストのプロが
バグがあるバグがある!エビデンスもある!って
叫んでいてトラブルになったんだが
結局そいつがテスト手順を間違えていただけというオチだった
テスト手順書にしっかり書いてありますよねって問い詰めたらそいつやめたわwww
データを削除するって書いてるんだから、全部のデータを消すに決まってるだろと
購入データだけ消すなよアホかってな
2021/02/26(金) 21:27:03.87ID:sPHbC1so
ぜんぶ消したらテスト環境が消えました!
2021/02/26(金) 21:28:27.68ID:9y4w8ED+
>>739
アホか空気ぐらいよめや
2021/02/26(金) 21:28:31.08ID:sPHbC1so
テスト毎にぜんぶDBデータ消すこと。ただしDBはチーム共通。規約違反はテストと認めない。
チーム20人もいれば簡単ですよね
2021/02/27(土) 08:18:35.15ID:8gimEtnd
どっちでもいいから他所いけ、キ・チ・ガ・イ

単体テスト・テスト自動化・テストコードの必要性 2
https://mevius.5ch.net/test/read.cgi/tech/1614318232/

【隔離】単体テスト・テストコードの必要性
https://mevius.5ch.net/test/read.cgi/tech/1614310983/
2021/02/27(土) 08:48:42.05ID:ZW3ZqwOa
テストコードを書かないとクソコードになるという話題でもする?

テストコードを書くなどをして、自作のクラスを必要としているところ以外から呼び出さないと、気が付かない内に他のクラスとベッタリ依存するコードを書いたりしそうだが、そこら辺はどう?
2021/02/27(土) 10:03:55.32ID:OfxFNKjU
>>743
テストコード書かないんだから問題ない
テストコードは目的ではない
2021/02/27(土) 10:05:26.57ID:hpJz9JUm
じゃあ目的は?そしてその目的をよりよい方法で解決する手段は?

目的と手段の2つをお答えください(笑)
2021/02/27(土) 10:05:53.12ID:OfxFNKjU
テストコードこそがクソコード、これがこのスレの結論でしょうな
2021/02/27(土) 10:07:23.47ID:OfxFNKjU
>>745
プログラムの目的とはユーザを満足させること
そのための手段として実際に人間が使ってみること
こんなこと聞いてる時点でダメだよね
2021/02/27(土) 10:07:54.07ID:OfxFNKjU
クソコード生産マシンの皆さん
2021/02/27(土) 10:09:22.56ID:hpJz9JUm
>>747
料理の目的は、客を満足させること
料理の手段は、実際に人間が食べてみるとと

さて?料理はどうやって作るんですか?w
2021/02/27(土) 10:09:23.73ID:OfxFNKjU
テストコード実行することが目的の皆さんは底辺コーダです
2021/02/27(土) 10:11:27.64ID:ZW3ZqwOa
>>709
>>748
あんた、オブジェクト指向はクソとか言いまわってた挙げ句に厶板住民から総攻撃を食らって知的障害を起こしながらID真っ赤にして人が罵倒してた人でしょ?
文章がソックリだし、知的障害者を起こして人の話を聞かなくなるところもそっくりだわ

まぁ、1つだけ言えるのは、自分の非を認めず、是正する気のないお前のクソコードなんてテストしても時間の無駄だな
お前がテストは無駄だと感じるのは無理もない
クソコードスレなんで、是非、あんたのコードを晒してほしいものだ
良いクソコード事例として貢献できるぞ
2021/02/27(土) 10:12:27.68ID:OfxFNKjU
>>749
実食を重ねて試行錯誤していくに決まってる
料理の鉄人という番組がありましたね
実食によってどちらが優れた料理か決めてましたね
2021/02/27(土) 10:14:18.32ID:hpJz9JUm
>>752
> 実食を重ねて試行錯誤していくに決まってる

ではきこう。試行錯誤を1日に1000回やるにはどうしたら良いか?
2021/02/27(土) 10:14:34.77ID:OfxFNKjU
>>751
それただの人格攻撃ですね
はあ、論理的に議論できない人プログラマーにもいるんですね
2021/02/27(土) 10:15:32.69ID:OfxFNKjU
>>753
1000回やる根拠がないので質問の意味がない、ナンセンスの塊
2021/02/27(土) 10:16:31.76ID:hpJz9JUm
>>755
自分で実食を重ねると言っておきながら
実食の回数を否定するのか?w
2021/02/27(土) 10:18:22.80ID:OfxFNKjU
>>756
よく読んでください、1000回という数字に根拠がないと言ってます、また手段と目的を見誤ってますね
2021/02/27(土) 10:19:07.52ID:OfxFNKjU
数字を増やすことが目的になっておられる
2021/02/27(土) 10:19:40.92ID:hpJz9JUm
>>757
1000回という回数にこだわってるのはお前
試行錯誤の回数は多いほうが良いと言っている
より多く試行錯誤をするにはどうすればいいか
実食を重ねて試行錯誤していくに決まってる(笑)
2021/02/27(土) 10:19:59.65ID:OfxFNKjU
こんなんだから日本はまともなソフトウェアを作れないんでしょうね
2021/02/27(土) 10:21:58.68ID:OfxFNKjU
>>759
おやおやそれは無理がありすぎでしょうw
1000回という数字を出してそれを達成するにはどうすればよいかを聞いたのはあなたでしょう、他人のせいにしないでください
2021/02/27(土) 10:22:42.60ID:OfxFNKjU
>>753であなたが言ってますよ
2021/02/27(土) 10:24:17.05ID:b2AUxonB
反論できなくなったらこれだから日本は〜ってださすぎるだろ
そもそもIT先進国の方がテスト文化進んでるだろうに
2021/02/27(土) 10:24:31.17ID:OfxFNKjU
日本からユーチューブやツイッターが生まれないのはユーザを見ずにコードを見てるからです
2021/02/27(土) 10:25:42.78ID:ZW3ZqwOa
>>761
単体テストってビルドする度に実行するものだけど、理解できてます?
まさか、そんなことも理解せずに単体テスト批判してたの?
あと、クソコードスレなんで、是非、クソコード事例書いてみて
生産性のないお前の愚痴とか相手を挑発するだけで中身のない批判とかどうでもいいから
2021/02/27(土) 10:26:12.15ID:ZW3ZqwOa
あと、クソコードの話と絡めることができないのなら、隔離スレ行ってくれませんか?
2021/02/27(土) 10:28:16.32ID:OfxFNKjU
>>765
いつ実行するかをあなたは話してますね、ふーんって思いました、なんでそんな話をしてくるんだろう
2021/02/27(土) 10:28:52.51ID:OfxFNKjU
>>766
テストコード=クソコード
なのです
2021/02/27(土) 10:30:34.90ID:ZW3ZqwOa
>>768
理由は?
あと、俺が最初に挙げたテスト対象コードの依存の話は?
2021/02/27(土) 10:30:45.78ID:OfxFNKjU
あれを知ってるかこれを知ってるか、そんなことも知らないのか、民主党の国会質疑みたいですね
2021/02/27(土) 10:32:30.36ID:OfxFNKjU
>>769
テストコードを書くとテストコードを実行することやテストコードをきれいに書くことが目的なってしまうからです、このスレの議論を見ればよくわかりますね
2021/02/27(土) 10:32:39.93ID:ZW3ZqwOa
はあ、論理的に議論できない人プログラマーにもいるんですね(皮肉)
2021/02/27(土) 10:35:35.35ID:OfxFNKjU
言うに事欠いて僕の真似をするとは、良いでしょう、あなたがその言葉を発言することを許諾します
2021/02/27(土) 10:36:03.25ID:OfxFNKjU
許しました、僕は心が広いので
775デフォルトの名無しさん
垢版 |
2021/02/27(土) 10:54:25.52ID:Yt5NHAzi
NG推奨:テスト
776デフォルトの名無しさん
垢版 |
2021/02/27(土) 13:00:30.28ID:NhoBp4qK
>>742
クソコーダーはクソスレ建てるのがお上手ですね!
2021/02/27(土) 14:21:58.44ID:o6FTnlQR
まずこのスレがクソスレじゃん
どんなジャンルで悪いお手本をあげつらって技術磨くってのが成り立つんだよ
状況によって対応が細かく変わりうるプログラムってジャンルだと尚更ねーよ
2021/02/27(土) 14:31:49.87ID:EOMk/snY
>>777
は?アンチパターン知らないのなら
2021/02/27(土) 14:32:21.56ID:EOMk/snY
は?アンチパターンも知らないのなら引っ込んでろ底辺プログラマー。
2021/02/27(土) 14:41:04.16ID:OfxFNKjU
アンパンチなら知ってるけど
2021/02/27(土) 14:42:05.95ID:OfxFNKjU
僕はバイキンマンがおしゃれだと思うし好きですけど
2021/02/27(土) 14:43:15.22ID:OfxFNKjU
ドキンちゃん、メロンパンナちゃんは可愛いです
2021/02/27(土) 14:45:08.51ID:OfxFNKjU
天どんマンとカバオくんは渋くて好きです
2021/02/27(土) 14:46:27.65ID:OfxFNKjU
愛と勇気だけが友だちという歌詞も深いですよね、大人の心にも響きます
2021/02/27(土) 14:50:27.61ID:Rkj+zBYu
>>777
スレ主がコンテキストを理解しない底辺プログラマーだから許してあげてね
2021/02/27(土) 15:25:16.36ID:srgcqAD7
コンテキスト?
Device Contextとか、Android Activityとかのコンテキスト?
2021/02/27(土) 15:47:29.01ID:qhUfxMpi
多分コンテキストって言いたかっただけなんだろうと思う…
2021/02/27(土) 16:37:52.70ID:OfxFNKjU
>>786
文脈って意味ですよ
789デフォルトの名無しさん
垢版 |
2021/02/27(土) 16:55:56.55ID:lzDnqtNz
俺は、あわしろ氏を信じる。

お前の言うことは信用しない。
790デフォルトの名無しさん
垢版 |
2021/02/28(日) 03:55:51.43ID:BRDX8bQ+
天ぷらだとうどんと蕎麦のどっちが好き?
2021/02/28(日) 03:57:33.36ID:Gc6Q6B7T
カレー
792デフォルトの名無しさん
垢版 |
2021/02/28(日) 03:59:46.09ID:BRDX8bQ+
>>791
天ぷら前提なんだが、レスがハエーから許す
2021/02/28(日) 04:04:03.84ID:Gc6Q6B7T
天ぷらカレー
794デフォルトの名無しさん
垢版 |
2021/02/28(日) 04:07:35.88ID:BRDX8bQ+
>>793
うどんか蕎麦で
2021/02/28(日) 04:53:09.79ID:Gc6Q6B7T
カレーどんぶり
2021/02/28(日) 09:53:36.42ID:fiymphDk
>>792
みなさんこれがクソコードです
2021/02/28(日) 17:33:35.64ID:JGZwcedL
最初は有意義になるかなと思ったのにクソスレになったな
2021/02/28(日) 17:44:13.70ID:VO7rpKqD
>>797
そう思ってたのはスレ主だけだろw
スレタイ & 1スレでどっちみちクソスレになるのは確定してた
2021/02/28(日) 22:04:12.82ID:AdiQic6X
5chに有意義なことを期待する時点で
2021/02/28(日) 22:29:20.29ID:HY9f+UaN
Qiitaでもクソコード云々言って炎上してる記事があったな
2021/02/28(日) 23:14:06.43ID:797yScED
>>800
試しにクソコードでQiitaを検索してみたがポエムばっかりで面白いのなかったな
↓これが視点としては面白かったけど処理分割のアプローチ間違ってるから新たなクソコードが出来そう
https://qiita.com/teradonburi/items/6483e51d5f9d47f5c22a
2021/02/28(日) 23:55:31.04ID:VPMHnl/e
>>798
いや、スレ主じゃないけどアンチパターン研究スレは厶板に必要だとは思うよ
文脈から察せない人が暴れただけで
2021/03/01(月) 00:40:02.48ID:p4pc8RdJ
>>802
アンチパターンを集めたかったんなら
スレタイと1スレをそうなるよう書けって話だろ
アンチパターンとクソコードは全く別物なんだよ
コンテキストを理解してないと言われてる理由と合わせて最低限パターン・ランゲージくらいは学んでこい


ちなみに「いや」から書き始めるレスはクソレス・パターンだからな
2021/03/01(月) 02:16:03.17ID:6wDZP3ri
>>803
君がコミュ障パターンなだけだろ
2021/03/01(月) 02:47:59.87ID:o92pxtgz
>>804
そうやって自分でクソスレにしてんだよな
クソスレ主あってのクソスレ(ム板拡張版w)
2021/03/01(月) 02:51:31.50ID:g6QBZhEL
アンチパターンを取り上げてる本でオススメある?
SQLアンチパターンを読んで得るものが多かったので
2021/03/01(月) 06:38:18.35ID:6wDZP3ri
>>805
ほうクソの定義とは何かね
2021/03/01(月) 06:39:15.47ID:6wDZP3ri
マーチン・ファウラーのりファクタリングやろな
2021/03/01(月) 06:52:02.27ID:6wDZP3ri
>>805
おいお前話を広げろ、今のお前は他人のヘイトやってるだけのクソ野郎だからそうじゃないところを見せろ
2021/03/01(月) 06:56:37.18ID:6wDZP3ri
あ、間違ってたも
>>805は僕に同意してたわけね
でも僕は敏感な人間だから僕に言われてることだと思った、だけれども紛らわしい言い方した君が悪い、僕は絶対に悪くないからこの件は以後言及することを禁止します、以上
2021/03/01(月) 07:06:26.34ID:6wDZP3ri
上に出てるパターン・ランゲージってアレクザンダーの都市計画理論だろ、プログラミングの本じゃない、そんなたとえ話のようなものでわかった気になるのは危ない

Twitterでも建築の本読んでオブジェクト指向がどうとか言ってる人いるけどポストモダンなソーカル野郎としか思えないんだよなあ、関係のないことを関係づけてそこに気づいた自分が賢いと思いこんでしまうクルクルパー、地頭の良い人が陥りやすい穴のように見える
2021/03/01(月) 08:09:59.68ID:Dkl+jirL
40年近く前の本だしFORTRAN, PL/1が題材だから今の言語に合わない箇所もあるけど名著だと思う

プログラム書法 第2版 / Brian W.カーニハン P.J.Plauger 著 木村 泉 訳 | 共立出版
https://www.kyoritsu-pub.co.jp/bookdetail/9784320020856
2021/03/01(月) 08:21:42.09ID:VB40xofU
プログラミング作法の方が良いと思うよ
2021/03/01(月) 11:23:05.55ID:vk4XQtG7
中国行くと肛門PCR検査
815802
垢版 |
2021/03/01(月) 12:23:46.76ID:sbiXUVTE
コミュ症の自覚がない>>803
2021/03/01(月) 17:40:20.81ID:scPLhEmU
>>803
まーた、詭弁デメテルバカが発狂してるよ
一番勉強が足りてないお前が勉強してないっていうねw
頼むから、一生ROMってろ
2021/03/01(月) 20:15:47.54ID:XEpCIBIH
コードとはまた違うけど
javaのインターフェースとインプリメントはクソだなと思う
無駄にファイル数増えてクソうざい
2021/03/01(月) 20:59:56.79ID:lUjHuGPy
interfaceがクソってw
オブジェクト指向知らないのではw
2021/03/01(月) 21:16:55.91ID:4ocrwkuw
これだからJava脳はw
言語周りで幼稚な愚痴垂れ流してるやつのJava率の高さったらない
2021/03/01(月) 22:39:30.52ID:o/aEg2l/
>>811
GoFのデザインパターンも、ファウラーのリファクタリングも、エリックエバンスのDDDもみんなパターン・ランゲージ

それぞれのパターン・ランゲージに共通する要素は何なのか?
なぜパターンがソフトウェア開発に有用なのか?
この辺を学んで出直してくるといいんじゃね
2021/03/01(月) 22:48:23.51ID:o/aEg2l/
クソコードと言うのは単なるBad Practiceの一種であってアンチパターンとは違うもの

アンチパターンの意味を理解せずにアンチパターンの研究とかまあ無理よね
822デフォルトの名無しさん
垢版 |
2021/03/01(月) 23:16:44.33ID:vk4XQtG7
>>818
abstractだけでいいって事では?
2021/03/01(月) 23:43:38.69ID:f1Pg/hcl
C#やるとJavaのいろいろ足りてない部分はめちゃくちゃ実感する
2021/03/02(火) 00:47:10.90ID:k1c4vJst
>>820
君が何を学んだかを教えてよ
825デフォルトの名無しさん
垢版 |
2021/03/02(火) 03:20:46.99ID:9w2EW+ai
いちいち2chで教えなくていいから
2021/03/02(火) 10:54:48.23ID:MXVQCo9F
Anti-pattern
https://en.wikipedia.org/wiki/Anti-pattern
2021/03/02(火) 11:43:32.18ID:sTNRmcJa
>>818
そのインターフェース本当に必要?ってのが大半
他クラスとは何も関係無い孤立したクラスなのにインターフェース実装されてるの見たことある?
javaやってる感出すためだけにファイル数が2倍になるゴミ
828デフォルトの名無しさん
垢版 |
2021/03/02(火) 12:24:38.24ID:08kau52M
肛門コード
2021/03/02(火) 12:31:08.45ID:MXVQCo9F
>>827
ポリモーフィズム

Storage storage

storage = new USBMemory()
or
storage = new SDCard()

以下、storageを使って読み出し

storage.read()

これができなくなるとか論外
830デフォルトの名無しさん
垢版 |
2021/03/02(火) 15:55:12.73ID:HE4Aq4BV
1メソッド1インタフェイスのペアで作れば解決するじゃないか!

interface Writer{
void write(Data data);
}
interface Reader{
Data read();
}
interface Eraser{
void erase();
}

abstract class Storage implements Writer, Reader, Eraser{
abstract void write(Data data);
abstract Data read();
abstract void erase();
}
2021/03/02(火) 16:18:47.07ID:sTNRmcJa
>>829
そうやって複数クラスで使う前提じゃなくて
自身にしか提供しないくせにインターフェースにするクソコード見ても同じこと言えんの?

その例で言うと
Interface USBMemoryと
Implements USBMemoryImplementsと
Interface SDCardと
Implements SDCardImplementsの4つファイルが作られるんだよ
もちろんStorageクラスなんて作られないからな、覚悟しとけ?
2021/03/02(火) 17:22:18.70ID:MXVQCo9F
>>831
それはどうかと思うけど、それを根拠に>>817みたいな言語機能を批判しちゃだめだろって話
Java脳とか言い出す人が湧いてるし

まぁ、そのコードは確かに問題だな
2021/03/02(火) 17:45:25.68ID:MXVQCo9F
脱線したが、無意味にインタフェースと実装部を分けるクソコードは俺も見たことがある
俺も初心者時代はやらかした事はあったな

無駄にコードが増えるだけでメリットが無いというね
初心者時代は、>>831のコードを書けば
class XXXImplement
から
class XXXImplement2
に乗り換える時が楽だなんて思ってたけど、実際はXXXImplement2なんて作らずにXXXImplementを直接編集してた

変な突っ掛かり方をして悪かったな
2021/03/02(火) 17:49:55.29ID:1QjqZlxS
仕様と実装をどこで切り離しておくかという設計選択の話なのでコードだけでは判断できない
>>831のようにインターフェースに対して実装が1種類しかなくてもそれが望ましい状況もあれば望ましくない状況もある
2021/03/02(火) 17:59:46.35ID:QgVhfuvD
>>834
望ましい状況って例えば何なんw
教えてプロjavaプログラマーさん
2021/03/02(火) 18:06:26.23ID:RCz98UPT
インターフェース作ってもいいけど同じファイルに押し込んで欲しい
こんなくだらない内容でファイル数が倍は勘弁してほしい
2021/03/02(火) 18:27:01.85ID:1QjqZlxS
>>835
Storageの例と一緒だよ
共通した仕様を使いたいレイヤーと複数の実装を使いわけたいレイヤーがあって
それを分離することで結合度を下げときたい場合の選択肢の一つ

USBの例で言えばSDカードや他のストレージとは異なるUSB特有の仕様に依存したコードを書く必要がある場合に
実装が変更されても利用者側のプログラムを変更しなくてもいいようにしたかったり
複数の実装を実行時に切り替えて使えるようにしておきたい場合

面倒臭さと将来の柔軟性とのトレードオフ
切る場所が適切かどうかは要件次第なのでコードからは判断できない
2021/03/02(火) 18:28:28.29ID:k1c4vJst
>>835
実装を変えられるってことさ
オープンクローズプリンシパルを守ろうとしたらインタフェイス切るしかない
2021/03/02(火) 18:29:36.21ID:k1c4vJst
クラスは分けてなんぼ、理想を言えばメソッドごとにクラスを分けるべき
2021/03/02(火) 18:36:50.14ID:Ut+tyB9O
メソッドごとにクラスを分ける理由は?
2021/03/02(火) 18:47:13.75ID:cXyQmkET
同じ階層のものがたくさんあると
全体を把握しにくくなるんじゃないかなあ
842デフォルトの名無しさん
垢版 |
2021/03/02(火) 18:48:50.43ID:2RCjcGnL
クラス毎にファイルを分ける理由は?
2021/03/02(火) 18:48:57.53ID:qGFbOGXJ
Java脳のレスはインターフェースなくてもオブジェクト指向できるっつう話でしょ
引数に関数をとることでインターフェースの代替にできる時もあるしね
2021/03/02(火) 18:59:10.26ID:Ut+tyB9O
>>842
関連するものの単位が同じだからでは?
2021/03/02(火) 19:35:50.44ID:stemNYci
>>831
あの例だと
interface IStorageにread()などの必須メソッドを追加
class USBMemory implements IStorage
class SDCard implements IStorage
やろw
Storage抽象クラス又は親クラスで定義してoverrideでもいいけど
設計次第やな
2021/03/02(火) 19:55:38.87ID:sTNRmcJa
>>845
違うんだよなぁw

Interface USBMemory
class USBMemoryImplements implements USBMemory
Interface SDCard
class SDCardImplements implements SDCard

こんなのが爆誕してるというかほぼ全クラスこんなので統一されてる絶望感分かる?
2021/03/02(火) 20:12:52.16ID:sTNRmcJa
>>833
まあ仕様が悪いというより簡単に悪用される実態が問題なんだよね
そのパターンもあるあるやと思ってる
だけどもし仮に2に乗り換えたところで、何かあった時に戻れるようにって無印が残されて結局ファイル数は増える地獄なんだなぁw
2021/03/03(水) 07:45:39.12ID:jQr6IfK5
>>846
テストしやすくて最高じゃないですか
849デフォルトの名無しさん
垢版 |
2021/03/03(水) 10:51:02.42ID:xzgw1tFV
ワクチン効かなくて人類オワタ
2021/03/04(木) 00:08:07.08ID:FIbtDWBm
親クラスが子クラスに依存する処理を持つコード例
https://stackoverflow.com/a/29907649/

Eric Lippertの書いてるコードがクソなのか?
それともその認識がクソなのか?
2021/03/04(木) 09:40:02.79ID:s3zRsfeD
ケース・バイ・ケース
2021/03/04(木) 09:49:55.40ID:OjWW0m8I
普通にクソってことでいいんじゃね?
クソだけど処理が小さく、まともにするには
過剰気味な設計が必要になるならそのままにするけど
良いとは思わないけど必要十分
2021/03/05(金) 11:07:38.15ID:zIBx0bjD
短絡的にクソコード認定したがるやつの脳みそがクソってことだよ
>>1のようなプログラマーは自分の見方がクソなのかもしれないと考えられるようにならない限り
いつまでたってもクソプログラマーのまま
2021/03/05(金) 16:16:51.44ID:rOFa7Oz2
短絡的にクソプログラマー認定したがるやつの脳みそがクソってことだよ
>>853のようなプログラマーは自分の見方がクソなのかもしれないと考えられるようにならない限り
いつまでたってもクソコードのまま
2021/03/05(金) 17:34:44.54ID:5bhxQzE4
>>854
クソプログラマー認定も含めて自分の見方がクソかもしれないと考えてないようなら
そいつ自身がクソプログラマーの可能性はそれなりに高いだろうね

ただコードとプログラマーにはクソかどうか判断する基準に決定的違いがある
その決定的違いが分かってないから君はクソプログラマーなんだよ
2021/03/05(金) 18:45:25.18ID:Gcj+sygJ
> クソコードを見た時に「あっ、これクソコードだ」って認識する根拠を挙げていきましょう。

スレ主は短絡的にクソコード認定をしていないと思うけど
むしろ、なぜクソコードを見てクソコードだと感じたのか哲学するスレだろ

クソプログラマーの定義とかスレ違いだし、どうでもいいわ
2021/03/05(金) 20:45:43.09ID:72RBlbeS
>>856
スレ主さんwちーすっ
2021/03/05(金) 23:14:44.63ID:6LAcg/yu
>>855
底辺に何言っても無駄
他人からは学べないから
2021/03/06(土) 09:14:58.43ID:6IalgJ8T
根本的な原理が分かってない人が意外なぐらい多い
情報の多重化、DRY原則からの逸脱を誘発するものがとにかく駄目
突き詰めればダメなものは間接的でもそこにつながっているから被害を受けるのだと分かる
いろんなデザインパターンなんて結局は
いろんな状況でDRYを遵守する手練手管が99%だろう
重複実装も必要な時があるが
どんなものをどんな風に重複させるかで
状況はかなり異なるので短絡的な判断は禁物

1が言ってる一つ目の例は
もっと文脈をはっきりさせないと
何がクソなのか断定出来ないし
これで伝わると思ってるなら難アリ
2021/03/06(土) 11:40:20.85ID:3bUl0e7x
そもそもデザインパターンみたいなのは、こうすれば良いのでは?みたいな物だし
正直そういう所から入った層よりは、ある程度組めるようになってから見て納得出来た方が良いかと
つまりは最初に読むものでは無いと
2021/03/06(土) 12:21:11.27ID:x8WQCH58
バックグラウンドとデザパタへの反応

複雑でも無く大きくも無いプログラムで遊んでた人
→自分のコードに対してデザパタの概念が大きい
→無意味にデザパタ導入してコード無意味に膨らます
→あるいはデザパタは無価値だと騒ぎ出す

ある程度複雑で大きいものを作ろうとして糞の山量産した人
→自分のコードに対してデザパタの概念が小さい
→デザパタ導入して部分的に見通し良く場面が見える
→必要に応じてデザパタを無言で使用
2021/03/06(土) 12:47:09.63ID:2s/lB21T
オブジェクト指向を理解するにはデザインパターンを理解するのが近道
言語の基本文法を学んだ後すぐデザインパターンを学ぶと上達がはやい
パターン熱にかかるのも早い方がいい
863デフォルトの名無しさん
垢版 |
2021/03/06(土) 14:22:35.38ID:pd/Aiz5V
デザインパターンとオブジェクト指向は全く別。
2021/03/06(土) 14:29:20.30ID:9ME8iPe/
>>863
GoFのデザインパターンのことだぞ
2021/03/06(土) 19:16:45.22ID:TUaJ1ME0
このスレすげえ面白えな
>>11からの流れは思わず引き込まれてしまった
下手なラノベよりよっぽど読めるわ
2021/03/06(土) 20:23:40.52ID:MNqEIsM4
そう言えば「名前がクソ」というクソパターンは
DRYとあまり関係ないな
あまりに基本過ぎて盲点だった
使ってる言葉や概念がそもそもおかしいのは
あまりに基本的な問題だが一番有りがちかもしれない
特に日本では戯言過ぎて英訳なんか不可能なぐらいの
曖昧模糊とした言葉を話す人が多いので…
コードを書くずっと前から間違ってることが多い
2021/03/06(土) 20:54:37.19ID:/fxEYj1Q
コードがクソかどうかはコードを見ただけでは判断できない
一見名前がクソっぽくても本当にクソなのかどうかは分からない
2021/03/06(土) 20:58:25.37ID:Q5bee5g2
コードを見る以外の何をやって判断するんだ?
煮るのか焼くのか食べるのか?
869デフォルトの名無しさん
垢版 |
2021/03/06(土) 21:00:04.77ID:pd/Aiz5V
マウントスレ
2021/03/06(土) 21:08:34.97ID:BLtO+LoM
重複には悪性のものとそうでないものがある
明らかに悪性なものの見極めは簡単だかそうでないものは重複を除去すべきかどうかそう簡単には見極められない

accidental duplicationなのかactual duplicationか
重複を除去して抽象化することが望ましい状況なのかどうか

最低でもこの2点の判断が必要
2021/03/07(日) 00:51:19.68ID:1+EXA2lk
片方だけの変更が妥当なら良性、両方に変更を入れないとダメなら悪性、ぐらいでだいたい見分けられるんじゃね?
2021/03/07(日) 01:45:46.06ID:TO18Vm5t
例えばこれ
https://mevius.5ch.net/test/read.cgi/tech/1610137345/570

似たようなこと3回繰り返してるけど重複を除去すべきかどうか?
除去すべきならどうリファクタリングするか?
2021/03/07(日) 18:09:07.95ID:6RHLTJ16
具体的なコードが出てくると途端にヒヨるマウントスレ民
2021/03/07(日) 19:18:29.31ID:HPgG7LJK
ゴミみたいに細かい問題
知るかボケ
2021/03/07(日) 20:58:32.09ID:FZPehcc/
>>872
3行3回程度ならそのままにするかな
breakしないとダメなので関数化しても条件判断が要るし
行数が増えるなら関数化する
回数が増えるなら関数をテーブルにしてforで回すかな
2021/03/08(月) 08:06:44.01ID:Q93ekmxF
それは要件次第って言えてしまうからなあ
関数作れない時もあるし、仮に1回でも要件で拡張の余地をとか言われたら関数にしなきゃだし
クソコードって分かってもそうしなきゃいけないときもある
2021/03/08(月) 09:04:47.24ID:ca4xsibi
関数化すらしないやつがいるのはちょっと驚き

このケースで関数化する動機は繰り返し同じことをしてるからというより意図を明確にするため
行数やbreakの有無みたいな表面的な形よりも意味が重要なので
この書き方が組織内で標準化されてる等の特殊な理由がない限り関数化する

ループにするかどうかは処理順序やcssをコードに固定化すべき状況なのかどうかによる
これも形じゃなく意味
使い捨てじゃなく長期的にメンテするコードで
hrml要素の検索順や検索条件をコードに固定化したほうが望ましい状況は少ない
2021/03/08(月) 09:23:46.71ID:zo5oau9O
でも関数って勝手に作ったらまずい現場もあるよね
2021/03/08(月) 10:14:50.71ID:1B2qwCXx
>>878
そういうのが特殊な理由

Pythonのような高レベル言語使ってるのに
ヘルパー関数を自由に作らせないのは控えめ言って異常だけどな
2021/03/08(月) 11:50:19.86ID:u4CRr3CF
全然控えめに言ってない件
2021/03/08(月) 13:51:58.27ID:pnlhyJpZ
作らせないってのもあると思うな
MSDNはドキュメントあるけど
派遣社員ってドキュメント書かないじゃん
ドキュメントないメソッドなら作らんほうがマシになるときもある
2021/03/08(月) 14:37:36.32ID:Amm+J3oO
>>881
ドキュメントが必要だと思うなら書いてもらえばいいだけでは?
必要なドキュメントをきちんと書かせないのは依頼主の責任
2021/03/08(月) 14:40:37.46ID:Amm+J3oO
ドキュメント必須のレイヤーとドキュメントは任意で十分なレイヤーがあるから
全部同じ扱いをするのは非効率

コーディング規約と同様に指針を決めておくのが普通
2021/03/08(月) 20:18:45.16ID:pnlhyJpZ
>>882
( ゚д゚)あ、お金ないんでいいです
885デフォルトの名無しさん
垢版 |
2021/03/08(月) 20:20:53.39ID:C8XgJIOz
ドキュメント間違えるし、イラネ
2021/03/08(月) 21:04:02.65ID:iO7qg9sm
>>884
金の使い方間違ってるw
2021/03/09(火) 08:13:13.98ID:DXzi7WCn
ドキュメントはちゃんとメンテしないとむしろ害を及ぼすよ
2021/03/09(火) 09:22:23.90ID:1va3W7Si
メンテと言ってる時点でおかしいんだよね
本来はドキュメント変更してからコード直すべき
まあ不具合対策とかでいちいちドキュメントまで直してられっかって言うのはよくあるけど…
2021/03/09(火) 09:35:33.69ID:p4cuNQqC
ドキュメントを修正するのは不可能
すでにそれでOKがでてるんだから
2021/03/09(火) 10:35:41.16ID:B9Z9HiJ8
関数化すべき
→勝手に関数作れないもん
→関数作ったらドキュメントが必要になるもん
→作ったドキュメント維持できないもん


コードを評価する方法よりも職場やプログラマーを評価する方法を身につけた方が
圧倒的に効率よくクソを避けられるといういい見本だな
2021/03/09(火) 11:18:33.87ID:R+x4GEwc
このスレで得られた教訓

クソプログラマーが「こういうコードはクソ」と言った場合、十中八九その認識のほうがクソ
2021/03/09(火) 11:48:27.03ID:2IS/A2ze
>>891
>>1を見ただけで得られる教訓じゃん
2021/03/09(火) 13:02:45.11ID:DvrveGIe
>>889
その理論でいくとコード修正するのも不可能では?
2021/03/09(火) 15:30:47.03ID:MbPysK70
>>891
それはわかる
895デフォルトの名無しさん
垢版 |
2021/03/09(火) 17:44:05.23ID:sQfPg4KP
引き継ぎしてドキュメントを読む。
ソースをあまり読まずに修正する。
ドキュメントを直す。
システムが死ぬ。
2021/03/09(火) 17:51:26.17ID:JYZP+6rB
>>893
コードは最終工程なので動かなければバグとして修正される
ドキュメントは動かなくても、コードを直せば動くので
ドキュメントの修正をする必要はない
2021/03/09(火) 18:19:39.56ID:tZmYicyt
>>888
コードがテストされるまで設計フェーズは終わらないので
その後のフィードバックで設計書の修正は当然
他のエンジニアリング分野で言う「製造」は
コンパイラとリンカーがやってしまうのであり
実装という実験によって設計の妥当性が証明されるまで
設計は終わらない
898デフォルトの名無しさん
垢版 |
2021/03/09(火) 20:20:33.28ID:sQfPg4KP
ロジックをドキュメント化するのは無駄。
コード読んで分からないものに手を入れてはいけない。
2021/03/09(火) 21:37:12.31ID:J60abFGc
>>891
このスレを見返してみると「こういうコードはクソ」というレスが15〜16あった
その中で「確かにそれはクソだな」と思ったのは1つだけ
それ以外は・・・
900デフォルトの名無しさん
垢版 |
2021/03/09(火) 22:03:20.61ID:qz7mFwyh
竹内関数は糞か否か。
2021/03/10(水) 02:31:32.15ID:hjUELKdd
どういう人が書いたのがわからんのが問題だと思う
バカが書いたとか間違ってるのが断定できればなんとかできるもん
2021/03/10(水) 13:29:27.14ID:hr2yGgcj
竹内関数は、WEB+DB vol.121 のRuby 3 特集で、
平行・並列処理、Ractor のベンチマークで使っている

マルチコア用の並列処理は、まだ数年は掛かりそう
2021/03/10(水) 15:29:31.30ID:eQWG2ihY
>>900
竹内関数は関数の仕様を定義したものなので
コードではなく仕様がクソかどうかという話になる
それはクソコードかどうかという話とは少し種類が違う
904デフォルトの名無しさん
垢版 |
2021/03/11(木) 15:58:20.83ID:2k6w0W90
まずは、使われない無駄なコードを減らして欲しい!

「無駄だらけのプログラムを効率化して、1万行→500行に。それを見た上司が激怒して『あいつは三流』と言いふらし始めました」(エンジニア・50代男性)
2021年1月26日 06:00
https://j-town.net/tokyo/column/allprefcolumn/317613.html?p=all
905デフォルトの名無しさん
垢版 |
2021/03/11(木) 16:00:27.63ID:2k6w0W90
とくぎ「パニパニハニー」を完全抹消コメント 1件

アイミョン
[KS108-054]
テーマ:キャラクター育成・強化2020/06/14 06:15
宝珠「パニパニハニーの技巧」とか、不要なオブジェクトは煩わしく誤動作の原因にもなります。
こうした旧バージョンのゴミは片づけて整理して、コマンド表示をわかりやすくしてほしいです。

https://i.imgur.com/IReXk4Q.png
2021/03/11(木) 16:31:29.74ID:4TSgT5Rn
>>904
50代にもなってこんな所でしょうもない憂さ晴らししてるほうもたいがいやな
907デフォルトの名無しさん
垢版 |
2021/03/11(木) 16:59:27.28ID:UhH3pQhX
>>904
条件分岐するたびに重複コードを書く初心者は必ずいる。サブルーチンの概念がないというよりは、変数の使い方がおかしいのが最大の理由だと思う。
908デフォルトの名無しさん
垢版 |
2021/03/11(木) 17:02:40.39ID:UhH3pQhX
プログラムもドキュメントも常に作りかけかと思う物を作る50代を知っている。
2021/03/11(木) 17:52:20.82ID:gBp5uuCV
ひな形とかサブルーチンって言葉が古めかしいよな
2021/03/11(木) 19:01:33.97ID:8a+EQRp9
サブルーチン=クソコードだよ
関数は原則として引数から戻り値を求めるものでテストが容易
もちろん副作用をもった関数もあるけど、わざわざ副作用と言ってるように
副作用は避けるべきものとして考えられてる

サブルーチンは戻り値がなく副作用がメイン
コードの責務とか考えなしに、似たようなコードがあったら
とりあえずサブルーチンにまとめちゃえってなる
その結果テストが容易ではなくなる
2021/03/11(木) 19:19:47.26ID:ifNxw6Pa
サブルーチンと関数を別キーワードで定義&コールするFortran流もありだと思うけどなあ
2021/03/11(木) 20:17:42.11ID:eJfNLsOm
>>910
クソプログラマーが「こういうコードはクソ」と言った場合、十中八九その認識のほうがクソ

サンプルが追加されたな
2021/03/11(木) 20:20:56.37ID:8a+EQRp9
クソプログラマーではないのでそれは当てはまらない
2021/03/11(木) 20:37:19.04ID:dIdzHpoo
クソプログラマーは自分がクソだという自覚ができない
自覚ができないからこそクソプログラマーとして生き続ける
2021/03/11(木) 21:26:53.63ID:sZRHwddG
>>910
サブルーチンに戻り値はないというのは勝手な思い込み
プログラミングにおける副作用という言葉は薬の副作用や副反応と違って一般的に望ましくないものという意味は全く無い

主張の中心となる用語をよく理解せず勝手な思い込みでオレオレ理論をふりかざすやつがクソプログラマーでなくなんなのだろうか?
自分の認識が間違ってるかもしれないとは考えないクソプログラマーの特徴がよく表れている
2021/03/11(木) 23:23:42.46ID:wuP7cLri
関数呼び出しは遅いから関数しか無いCは使えないという恐ろしいFortran使いが結構たりするけどな…
2021/03/11(木) 23:38:43.29ID:wuP7cLri
まあインライン化やマクロ駆使してオーバーヘッド削ったCよりは絶対読みやすいので、一理ないこともない
2021/03/12(金) 00:52:41.16ID:IfpuCZI8
今時FORTRAN使いとかいるのか・・・
どこで使っているんだ?w
2021/03/12(金) 03:40:10.66ID:pvW782MA
理学系とか今でもFORTRANらしい
2021/03/12(金) 03:51:45.30ID:iCE7eqEI
たぶんおじさんの想像するFORTRANとは随分違う言語だぞ
2021/03/12(金) 08:06:40.57ID:6WY1VkSt
>>918
母数がわからんけど、HPC分野だとまだまだFORTRAN優位

次世代スパコン「富岳」の重点課題で開発するアプリのうち,Fortranでないのは一つだけ.
https://qiita.com/implicit_none/items/ad4c556c043a91fa0dc4
2021/03/12(金) 10:14:24.86ID:Nf3fOkm/
Fortran2018?
2021/03/12(金) 11:45:41.06ID:zHGwFDvl
サブルーチン・副作用は、状態を持つから、ややこしい。
Ruby 3 のマルチコア並列処理・Ractor でも問題になっている

状態を持つと、共有変数の排他処理が難しいから、
関数型のElixir みたいに、immutable にしないといけない
924デフォルトの名無しさん
垢版 |
2021/03/12(金) 14:09:01.67ID:jKVaeyDL
デッドコードは、見つけて、取り除く必要がある。デッドコードを残しておくと、プログラマの理解と行動を
妨げることがあり、コードが実行されて、重大な問題を引き起こすリスクもある。 デッドコードの削除は、
技術的な問題ではない。Kevlin Henney氏によると、それは考え方と文化の問題だ。
https://www.infoq.com/jp/news/2017/03/dead-code/
925デフォルトの名無しさん
垢版 |
2021/03/12(金) 14:22:11.99ID:b9Kr93A5
仕様変更でなくてもよくなった箇所は、削除より、いったんコメントアウトで対処した方がいい。外国人はコードを変えて失敗する能天気だから、あいつらの言うことに従ってはいけない。
2021/03/12(金) 14:26:53.48ID:C5Hfq1un
>>925
VCS使えよ
2021/03/12(金) 14:35:41.22ID:6WY1VkSt
>>925
いつの時代の人だよw
928デフォルトの名無しさん
垢版 |
2021/03/12(金) 16:44:55.70ID:b9Kr93A5
必ずそういうことを言い出すやつがいるが、経験不足だと思うよ。いちいち見比べる方が効率が悪い。
929デフォルトの名無しさん
垢版 |
2021/03/12(金) 16:48:44.73ID:b9Kr93A5
すぐに削除しない方がいいと書いてあるのに、早とちりさんが多いね。
2021/03/12(金) 17:02:54.30ID:6WY1VkSt
>>928
> いちいち見比べる方が効率が悪い。
差分ツールも知らない爺乙
931デフォルトの名無しさん
垢版 |
2021/03/12(金) 17:19:15.11ID:7Crflr6r
見比べている自分の光景を想像しろ
932デフォルトの名無しさん
垢版 |
2021/03/12(金) 17:34:39.00ID:7Crflr6r
削除するなとは言ってない。ガンガン削除してもいいが、残ったコード内でこう作った意図がわからなくなるくらいなら、システムの作り直しの時点で変えるべきた。

元のデッドコードの話自体は初心者の話だし、コードの書き換えに躊躇がなく、バグだらけにするのは外国人に多いわけで、有名な製品をアップデートするとおかしくなる最大の理由。
2021/03/12(金) 17:41:07.46ID:EKGXILxS
外国人のフリして逃げる
934デフォルトの名無しさん
垢版 |
2021/03/12(金) 18:44:33.92ID:Jts8n3aI
クソコードとは俺が書いたコード
935デフォルトの名無しさん
垢版 |
2021/03/12(金) 18:52:31.32ID:0g8W4jPs
またまたご謙遜を。
936デフォルトの名無しさん
垢版 |
2021/03/12(金) 19:22:54.23ID:7Crflr6r
オープンソースはかなりの確率でクソコード
937デフォルトの名無しさん
垢版 |
2021/03/12(金) 19:44:02.10ID:HsBsGhC6
YAGNI (You Ain’t Gonna Need It) 直訳は「そんなモン要らんって!」
YAGNIの原則は「機能は実際に必要となるまでは追加しないのがよい」とすること。後で使うだろうという
予測の元に作っても、実際に使われるのはほんの一部。ソフトウェア実装において「予期しない変更」は常
についてまわり、できるだけ設計をシンプルにするべき。現実の問題に集中して余計なモノを足さない。
それがヤーグニ。
https://www.jabba.cloud/20180119204314/
938デフォルトの名無しさん
垢版 |
2021/03/12(金) 19:56:22.98ID:b9Kr93A5
業務システムにはあてはまらない。
939デフォルトの名無しさん
垢版 |
2021/03/12(金) 19:58:56.77ID:b9Kr93A5
>>937
仕様変更を想定しないといけないとわかっていながら、そのときの仕様で最適化するのは、その方が周囲から理解をえやすいから。
2021/03/12(金) 20:31:43.28ID:47v6/wL7
おまえヤベェわ
さすがクソプログラマースレ
941デフォルトの名無しさん
垢版 |
2021/03/12(金) 21:37:32.87ID:b9Kr93A5
外国人の言うことをありがたがっているようでは話にならない。
942デフォルトの名無しさん
垢版 |
2021/03/12(金) 21:37:59.65ID:HsBsGhC6
>クソコードとは何か

スマホ アプリの6割未利用!不要なアプリの大量保有はバッテリー消耗の一因。不要アプリは定期的に削除を。
https://prtimes.jp/main/html/rd/p/000000049.000005362.html

Androidスマホのキャリアアプリが1GB以上データ通信!?削除・無効化できるアプリ一覧
https://sp1.jp/career-appli/
943デフォルトの名無しさん
垢版 |
2021/03/13(土) 09:00:19.17ID:rQmPEF49
詫びソースコードコメント 1件

アイミョン
[KS108-054]
テーマ:冒険者の広場・DQXショップ2020/02/17 16:22
今月になってから急にシステム障害が多発しており、運営としては説明責任を果たすべきと考えます。

https://hiroba.dqx.jp/sc/news/category/3/

不具合を出した個所とその修正箇所の両方を「詫びソースコード」として開示するのです。
ソースコードも企業の重要な著作物ですが、だからこそ開示して詫びることが大切です。
それと同時にシステムの不具合がなぜ多発しているのかを、プレイヤーも一緒に考えるのです。
バンダイナムコゲームスの『ドラゴンボールZ ドッカンバトル』を見習うべきです。


https://i.imgur.com/s2RHkxT.png
944デフォルトの名無しさん
垢版 |
2021/03/13(土) 09:18:08.62ID:tBGlpruK
キチガイだなw
2021/03/13(土) 10:00:15.70ID:7EYMzEJd
スタッフの大人の対応w
946デフォルトの名無しさん
垢版 |
2021/03/14(日) 09:42:47.84ID:BsjTGNRz
ここに書かれた罵詈雑言と不要な議論の文字列
これがまさにクソコードだ
2021/03/14(日) 10:12:49.00ID:nT6f8vWc
>>921
2008以降になるとまともな和書殆ど無いよな、Amazonで見たら★2でわろた
英語なら20冊くらい引っかかって高評価だけど学術系出版社だから¥10000〜
俺もコンパイラマニュアルしか読んでないわ
948デフォルトの名無しさん
垢版 |
2021/03/14(日) 10:29:30.32ID:u05Cu7nI
クソコードの例

変数を取り違えて値を設定し、途中で本来の値を設定し直すコードが存在する。
2021/03/14(日) 11:56:43.59ID:NVyYwYtr
>>948
デッドコードの一種だね

値を取り違えて設定してることや
本来の値を設定し直してることが分かるようなら
たいしたクソではなさそう
2021/03/14(日) 12:25:06.62ID:mqW1umpN
フォートラン並みの配列演算記述ができるJuliaやPython/scipyが出てきたから、ガチる人以外はそっちに流れたんだろ
Matlabもフォートラン並みに高級だけどかなり高いし、プラットフォームが限られる
特にJuliaはCじゃなくフォートランの慣習に合わせてるし移行の敷居が低い
2021/03/14(日) 13:50:22.02ID:IL1Rx7pe
Matlab, R → Python → Julia

Matlab, Rは、もうダメ。
MIT は、Julia へ行ってる
952デフォルトの名無しさん
垢版 |
2021/03/14(日) 19:53:13.79ID:u05Cu7nI
>>949
10万行のコードを解析してわかったことだけどね。
2021/03/14(日) 21:04:29.30ID:FTgLqn2Y
>>11
constくそワロタ
2021/03/14(日) 22:59:16.59ID:SWD4O/qm
>>952
それがほんとなら根本の問題は別の所にあるよね

根本原因を究明できて再発防止策がとれたなら役に立ったクソコードということになる
2021/03/15(月) 07:24:19.90ID:AgY39MSU
>>953
なぜconstがダメなの?
2021/03/15(月) 08:19:07.60ID:unBa9C5h
覗いただけだけどテストコード不要論を唱えるプログラマがこの世に存在するとはな..
プログラマつっても世の中には色んな奴いるんだな
2021/03/15(月) 09:06:01.57ID:wTgsCYbG
>>955
JS知らないやつだからほっといてあげて
2021/03/15(月) 09:50:06.58ID:d7wExFeq
>>956
いやいらんでしょ
そのテストコードのテストはしなくてレビューでとか言ってる奴いたけど(笑)
結局それが正しいとはなぜ言えるのか?
959デフォルトの名無しさん
垢版 |
2021/03/15(月) 10:14:52.08ID:hBbAwZTG
テストコードがかなりのプログラムだとしらないやつがいるから仕方ない。
2021/03/15(月) 10:27:24.28ID:0wiZhmNk
>>958
正しいと言える必要なんてないからね
テストの基本
2021/03/15(月) 10:39:05.01ID:unBa9C5h
そもそもテストって想定どうりの動きをしてくれるかを確かめる為に書くんでしょ
テストコードなんて書く必要ないと思うならそれでいいし、テストなんて手動でいいと思ってる現場と規模感ならそれでいいんじゃない?
2021/03/15(月) 10:52:20.05ID:unBa9C5h
あとテストコードのテストって何?
テストコードを走らせて想定通りに動けば完了だよ
コードレビューはするでしょう
テストコードのテストコードを書けよという意味で言ったの?
2021/03/15(月) 11:44:06.79ID:bRJV5TtK
>>958
>>255に論理的に反論してみ
2021/03/15(月) 13:03:04.99ID:QmxS+DUu
>>961
テストは手動でいい・・・現場の方針でしかない
自動テストしないと再テストに時間がかかる・・・事実


再テストに時間がかかるがテストは手動でやる・・・アホな現場の方針でしかない
というだけだよ
2021/03/15(月) 13:32:11.56ID:d7wExFeq
>>963
その程度のことデバッグすれば分かるやん
テストコードを書くだけ無駄
2021/03/15(月) 13:37:22.63ID:QmxS+DUu
>>965
一回のデバッグの時間はどれくらいですか?
2021/03/15(月) 13:50:21.56ID:QmxS+DUu
もう降参かな?テストをしないでデバッグだけしてると
時間が膨大にかかるからねw

なによりテストしてないってことだから
エンバグしたことがわからない
2021/03/15(月) 13:52:10.06ID:bRJV5TtK
>>965
例えば千項目毎回テストするの?
そんな項目数がないような小規模案件ならなくてもいいかもねw
まさかリグレッションテストは不要だっていう主張なのかな?
2021/03/15(月) 13:58:05.35ID:QmxS+DUu
>>968
落ち着け。>>964はデバッグすると言ってる
テストしないでデバッグだけするんだ

テストはしないからテスト時間は0なのだ
やつはテストしないで製品をリリースしてるんだよ!
そしてバグが見つかったときに製品をリコールしてるんだよ
やつは組み込み系開発者だからな
2021/03/15(月) 14:47:18.91ID:uytQvjo+
世の中いろんな人がいるんだねえ
2021/03/15(月) 16:09:37.60ID:C+0mdEfW
テストコード組むのが上手いヤツはクラッカーに向いてる
972デフォルトの名無しさん
垢版 |
2021/03/15(月) 19:12:39.86ID:m9WM8q4q
テストは甘えと、あわしろ氏が言ってたけどな。

間違えなければテストする必要が無い。
2021/03/15(月) 19:26:48.17ID:QmxS+DUu
間違えなければテストする必要が無い。
そしてテストしなければ間違えたことがわからないのだ

「バグは見つかりませんでした!」
974デフォルトの名無しさん
垢版 |
2021/03/15(月) 19:32:28.24ID:m9WM8q4q
テストするってことは間違える前提で書いてるんだろ?

甘えすぎだわ。
2021/03/15(月) 19:35:41.62ID:QmxS+DUu
マジそれ

事故る前提で車を乗ってるやつが多すぎ
2021/03/15(月) 20:08:51.50ID:+SM2oHa/
自動テストは適当で良い、どうせバグはない
2021/03/15(月) 20:10:26.44ID:+SM2oHa/
それよりも手動の総合テストを頑張ったが良い、自動テストはコーダの自己満でしかない、ユーザと向き合ってないコミュ症の底辺がやること
2021/03/15(月) 20:11:36.50ID:+SM2oHa/
俺たちはシステムをデザインしてるんだという大局感が大事
2021/03/15(月) 20:12:57.03ID:QmxS+DUu
>>977
手動の総合テストにどれだけ時間がかかりますか?
まだこの質問に答えてもらってませんよ?
2021/03/15(月) 20:13:22.23ID:+SM2oHa/
ロケット打ち上げて爆発させるのがシステム開発のイテレーションなんだよ
2021/03/15(月) 20:14:03.52ID:+SM2oHa/
>>979
スコープとかものによるんじゃないかな
2021/03/15(月) 20:15:04.67ID:+SM2oHa/
底辺コーダはスコープと聞いて変数しか思い浮かばんだろwww
2021/03/15(月) 20:16:13.61ID:QmxS+DUu
>>981
スコープによるなら
○○の場合は、これぐらいとか
答えられるだろw

お前の実際の話をすればいいんだよ
手動テストしてないのか?
2021/03/15(月) 20:17:04.89ID:+SM2oHa/
>>983
〇〇には何を入れればいいの?おん?
2021/03/15(月) 20:18:08.93ID:QmxS+DUu
>>984
自分でスコープによるといっただろ
何も思いついてないのにスコープって言ったんか?
986デフォルトの名無しさん
垢版 |
2021/03/15(月) 20:19:31.02ID:+SM2oHa/
>>985
スコープがなんなのかわかってないようだねwww
987デフォルトの名無しさん
垢版 |
2021/03/15(月) 20:20:15.36ID:+SM2oHa/
スコープをまず説明してみwwwきちんと説明できたらなぜ○○に入れられないか自ずとわかるから
988デフォルトの名無しさん
垢版 |
2021/03/15(月) 20:20:30.62ID:+SM2oHa/
ほれほれはよせいよw
2021/03/15(月) 20:20:41.38ID:QmxS+DUu
981 名前:デフォルトの名無しさん[sage] 投稿日:2021/03/15(月) 20:14:03.52 ID:+SM2oHa/ [5/8]
>>979
スコープとかものによるんじゃないかな

↑「じゃあ○○(スコープ)の場合はこれぐらいと言ってください。」

986 返信:デフォルトの名無しさん[] 投稿日:2021/03/15(月) 20:19:31.02 ID:+SM2oHa/ [8/8]
>>985
スコープがなんなのかわかってないようだねwww

↑「わかってるお前が言ってください。」
990デフォルトの名無しさん
垢版 |
2021/03/15(月) 20:20:52.69ID:+SM2oHa/
スコープの説明責任はあなたにありまぁす!
991デフォルトの名無しさん
垢版 |
2021/03/15(月) 20:21:23.01ID:+SM2oHa/
>>989
あ、やっぱわかってないのな
2021/03/15(月) 20:21:23.96ID:QmxS+DUu
>>990
お前がスコープが何なのかわかってないのがはっきりしたなw
2021/03/15(月) 20:22:28.66ID:yk6Lta+7
答えられないならもうスコープについては答えなくていいよ

お前の実際の話をすればいいんだよ
実際の手動テストにどれくらいかかってるのか言え 
スコープはどれでもいい
994デフォルトの名無しさん
垢版 |
2021/03/15(月) 20:22:52.58ID:+SM2oHa/
>>992
〇〇を言ってくださいと君は言ったわけだがスコープの定義によりそのようなことはできないと述べたよ
なぜできないかはスコープの定義から自明なんだけど、君はスコープを何だと思ってるのかな?おん?
2021/03/15(月) 20:23:33.49ID:sDtoJkVU
あと逃げるなよ?
実際の手動テストにどれくらいかかってるのか  
いうだけなんだから簡単だろ  
996デフォルトの名無しさん
垢版 |
2021/03/15(月) 20:24:23.98ID:+SM2oHa/
>>993
君は答えなくてはいけないよ、スコープとはなにか!!(一喝)
997デフォルトの名無しさん
垢版 |
2021/03/15(月) 20:24:28.31ID:sDtoJkVU
>>994
もうすでにスコープの話は不要と言いました。

実際の手動テストにどれくらい時間がかかってるんですか? 
998デフォルトの名無しさん
垢版 |
2021/03/15(月) 20:24:50.46ID:sDtoJkVU
どうして実際の手動テストにどれくらい時間がかかってるか言えないんですか?
膨大な時間がかかってるからですよね
999デフォルトの名無しさん
垢版 |
2021/03/15(月) 20:25:12.18ID:sDtoJkVU
手動テストは時間がかかることが証明された
反論あるならどーぞ(笑)
1000デフォルトの名無しさん
垢版 |
2021/03/15(月) 20:25:24.05ID:sDtoJkVU
まあどうせ逃げるんやろな
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 44日 2時間 52分 19秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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