クソコードとは何かat TECH
クソコードとは何か - 暇つぶし2ch2:デフォルトの名無しさん
21/01/30 17:33:42.44 BjNTZWUI.net
もうレスバの予感しかしない。
産まれたての子鹿のように震えてるよ。

3:デフォルトの名無しさん
21/01/31 10:20:47.27 9VN6dodl.net
>>1
クソはお前の頭だよ

4:デフォルトの名無しさん
21/01/31 11:28:04.42 X7lGC0go.net
iostream ωωω

5:デフォルトの名無しさん
21/01/31 12:06:18.22 otlkJ8kc.net
>>3
staticおじさん乙

6:デフォルトの名無しさん
21/01/31 12:22:48.25 Nt4hAxS1.net
開幕から自分のコードに突き刺さって痛い

7:デフォルトの名無しさん
21/01/31 12:46:25.58 I1+jaQmy.net
. /⌒ヽ
  ∩ ^ω^) な ん だ
  |   ⊂ノ
 |   _⊃
  し ⌒.   ___
   _/ ⌒ ⌒ \ うん、うん、
  /)) (●) (●)  ヽ それで?
  |∩ (_人_)  |
  / ノ、_ヽノ_ノ ̄)
 / /      /フ_/
 L_/\    \(

8:デフォルトの名無しさん
21/01/31 12:59:59.35 Nt4hAxS1.net
テストコードが無いのにテストしたとか言うプログラマーの提出するコード

9:デフォルトの名無しさん
21/01/31 16:11:11.70 MhKR2tlg.net
同じコードを何度も書く

10:デフォルトの名無しさん
21/01/31 16:33:43.28 Kwx3DUOx.net
コードとコードつなぎ合わせて一つのプログラム作ったけどごちゃごちゃでクソコードになってたw

11:デフォルトの名無しさん
21/01/31 16:59:37.31 Ti7TRi+9.net
function getPrice(id) {
const price = clothPrice.filter({ id }).first()
return price
}
はい、どこがクソか指摘してみて

12:デフォルトの名無しさん
21/01/31 17:27:33.78 JUmaLjMc.net
どこもクソじゃない

13:デフォルトの名無しさん
21/01/31 17:28:15.94 TZSorCef.net
>>11
getPrice関数いらなくね?
...で合ってる?
理由の指摘の仕方はどうしようかな

14:デフォルトの名無しさん
21/01/31 17:29:51.90 JUmaLjMc.net
>>13
理由を言えないならそれはレビューではない

15:デフォルトの名無しさん
21/01/31 17:33:42.78 TZSorCef.net
まず、このコードを見てクソだと気がつけない人相手だと、言い方が重要。
だから、説明に困ってる。
なぜ、気が付かないのかとか。
考えてるだけだよ。気がついた人は先に理由を述べてほしいが。

16:デフォルトの名無しさん
21/01/31 17:35:04.85 JUmaLjMc.net
>>15
相手のことはまず忘れろ。
理由を言え。
そうすればあとはその理由をどう言えば伝わるかという
次の話に行けるだろ

17:デフォルトの名無しさん
21/01/31 17:40:45.07 TZSorCef.net
getPrice(id) 関数とclothPrice.filter({ id }).first()
ってやってる事は一緒だよね?
責務も殆ど一緒。
些細な違いと言えばfirst以外を呼べなくしたことだが...
たぶん、インスタンスの名称からしてclothPriceをユーザー側に隠蔽する必要も無いのに隠蔽し、挙げ句に役割のかぶったほぼ無意味な関数を無駄に増やしてしまってる。
だから、クソ...だと思った。

18:デフォルトの名無しさん
21/01/31 17:42:50.72 TZSorCef.net
あと、一言で言えば...もしかしてドメインモデル貧血症?

19:デフォルトの名無しさん
21/01/31 17:46:41.31 JUmaLjMc.net
> getPrice(id) 関数とclothPrice.filter({ id }).first()
> ってやってる事は一緒だよね?
関数とその中のコードが
やってることが一緒になるのは当たり前です。
関数にする意味は、コードの可読性を上げるためです。
「clothPrice.filter({ id }).first()って何やってるの?」
「Priceをgetしてます!( getPrice(id))!」
という会話がコードレビューであるだろうなと少しでも思ったら
それは関数にすることで可読性が上がっているということです。

20:デフォルトの名無しさん
21/01/31 17:57:42.08 TZSorCef.net
>>19
> > getPrice(id) 関数とclothPrice.filter({ id }).first()
> > ってやってる事は一緒だよね?
>
> 関数とその中のコードが
> やってることが一緒になるのは当たり前です。
実装対象の仕様が1行程度のコードで住んでいる点をまず気にして。
> 関数にする意味は、コードの可読性を上げるためです。
可読性は上がったのだろうか?
だって、何のインスタンスのオブジェクトが返されるか名前から想像できますか?

21:デフォルトの名無しさん
21/01/31 18:00:20.47 JUmaLjMc.net
> だって、何のインスタンスのオブジェクトが返されるか名前から想像できますか?
逆。「何のインスタンスのオブジェクトが返されるか」を意識してはいけない。
それはかっこいい言葉で言うならデメテル法則に反している
実装の詳細を意識させるな

22:デフォルトの名無しさん
21/01/31 18:02:13.86 TZSorCef.net
>>11
clothPrice.filter({ id }).first()
だったら...clothPriceインスタンスのPriceが帰ってくるんだなーって一目で分かるけど
getPrice(id)
だったら...え?何が帰ってくるのこれ?
ってなりませんか?
仮にJavaみたいな型宣言が必要な言語だったとしても、何のインスタンスのPriceが得られるのかわからないですよね?
...って、これが本当の理由かっ!?
色々、問題が想像つくから、回答に迷ってる

23:デフォルトの名無しさん
21/01/31 18:03:52.46 JUmaLjMc.net
> getPrice(id)
> だったら...え?何が帰ってくるのこれ?
> ってなりませんか?
そのオブジェクトのpriceだろ
そのオブジェクトが内部で使用している~とかを意識しないといけないのはデメテルの法則違反

24:デフォルトの名無しさん
21/01/31 18:04:38.99 JUmaLjMc.net
クソコードじゃないって最初から言ってるだろ

25:デフォルトの名無しさん
21/01/31 18:05:06.22 TZSorCef.net
>>21
setじゃなくて、getだよね?
それって、つまり...誰かにgetを呼ばせる前提の関数なんですよ。
あなたに問いますけど、getPriceって誰に何の為に呼んでもらう関数だと思いますか?

26:デフォルトの名無しさん
21/01/31 18:06:51.44 JUmaLjMc.net
> あなたに問いますけど、getPriceって誰に何の為に呼んでもらう関数だと思いますか?
このコードではそれは書いてないのだから、そこを勝手に想像して
自分の都合の良い解釈をするのは、それ自体が間違い

27:デフォルトの名無しさん
21/01/31 18:07:52.12 TZSorCef.net
出題者さんの回答が知りたいな...。
まぁ、二人しか答えてないけど。

28:デフォルトの名無しさん
21/01/31 18:13:16.87 TZSorCef.net
>>26
> このコードではそれは書いてないのだから、そこを勝手に想像して
> 自分の都合の良い解釈をするのは、それ自体が間違い
では、clothPrice.filter({ id }).first()は何をしているメソッドだも思いますか?
こっちは...なんとなくわかりませんか?
私はstiftを触ったことないですが、似たような言語で似たような記述をしたことがあるので推測できます。わかりやすいですね。

29:デフォルトの名無しさん
21/01/31 18:14:04.75 JUmaLjMc.net
> では、clothPrice.filter({ id }).first()は何をしているメソッドだも思いますか?
getPriceをしてるメソッド

30:デフォルトの名無しさん
21/01/31 18:14:59.04 TZSorCef.net
って、よく見たらjsか!?まぁ、どっちでもいいや。
何となくでわかる記述って大切じゃないですか?

31:デフォルトの名無しさん
21/01/31 18:19:27.38 JUmaLjMc.net
>>30
理由が言えないのを「何となくこっちが良いと思った」でごまかすなよ
それは理由がないという

32:デフォルトの名無しさん
21/01/31 18:21:37.30 TZSorCef.net
理由は必死に説明しているつもりなんだけどなぁ...。
こうなるから慎重に説明を考えていたんだけどなぁ...

33:デフォルトの名無しさん
21/01/31 18:22:44.83 TZSorCef.net
何となくでわかるの意味が分かってないことが分かった...。そもそも、filterの意味が分かってない?

34:デフォルトの名無しさん
21/01/31 18:25:20.39 TZSorCef.net
何となくこっちが良い
じゃなくて
コードを見たとき、記述から実装内容を察することができることが重要と言うべきだったかな...
言葉選びを間違えるとこうなるから慎重に説明をしないとなんだが...うーん、説明下手orz

35:デフォルトの名無しさん
21/01/31 18:27:15.53 JUmaLjMc.net
実装者の視点しか持ってないんだよな。
クラス設計というのは、どういうインターフェースにすれば
クラスが"使いやすいか" というクラスの利用者からの視点で設計する
getPriceというメソッドではなく、その中のコードの実装の
話をしてる時点で視野が狭いのは明らか
テストコードも書いたことないだろ?
テストコードは必然的に使いやすいクラスであることが要求されるからな

36:デフォルトの名無しさん
21/01/31 18:27:53.96 JUmaLjMc.net
> コードを見たとき、記述から実装内容を察することができることが重要と言うべきだったかな...
実装の詳細は隠蔽しろって習わなかったのか?

37:デフォルトの名無しさん
21/01/31 18:31:40.92 TZSorCef.net
別に、実装者だけではなくライブラリユーザーの事を考えてますよ。
実際、ライブラリ開発者ですしお寿司。
じゃなければ、getPriceって誰か何のためにーなんて質問をする発想はないよ。
たしかに、実装の詳細は隠蔽するべきだね。
でも、私が注目しているのは、まさにユーザビリティに相当する部分です。

38:デフォルトの名無しさん
21/01/31 18:33:13.55 JUmaLjMc.net
じゃあ実装の詳細を無視して話をしよう
function getPrice(id) {
・・・隠蔽。1行かもしれないし100行かもしれない・・・
}

39:デフォルトの名無しさん
21/01/31 18:35:19.06 TZSorCef.net
1.getPriceが必要な場面を想像できますか?
→想像すること自体が間違いだと回答しましたが、はいorいいえ でお願いします。
2.それが想像できないのはなぜですか?

40:デフォルトの名無しさん
21/01/31 18:37:59.05 JUmaLjMc.net
1.getPriceが必要な場面を想像できますか?
いいえ。
2.それが想像できないのはなぜですか?
出題に書いてないからです。
逆に出題に「これは商品オブジェクトです」と書いてあれば
getPriceが必要な場面を想像できます。

41:デフォルトの名無しさん
21/01/31 18:39:36.56 TZSorCef.net
>>38
もしかして...getPriceがクラスメソッドの実装ではない事に気がついていない?

42:デフォルトの名無しさん
21/01/31 18:41:32.55 JUmaLjMc.net
>>41
わかってるから"実装を取り除いて"、実装"以外"を書いたんですが?
その質問の意図はなんですか?

43:デフォルトの名無しさん
21/01/31 18:43:52.76 TZSorCef.net
じゃあ、もしもですよ?出題内容が
sin関数だったらどうですか?
>>40と同じノリで答えてください。

44:デフォルトの名無しさん
21/01/31 18:45:22.65 JUmaLjMc.net
>>43
何オブジェクトのsin関数ですか?
URLリンク(ejje.weblio.jp)
主な意味 (宗教・道徳上の)罪、罪業、過失、違反、ばち当たりなこと、ばかなこと

45:デフォルトの名無しさん
21/01/31 18:46:09.44 TZSorCef.net
>>44
いえいえ、ただのsin関数ですよ。数学の。

46:デフォルトの名無しさん
21/01/31 18:47:29.69 JUmaLjMc.net
>>45
同じノリで答えろと言われたから、同じノリで答えただけですが?
出題に、何オブジェクトのsinか書いてないから想像できない。
数学オブジェクトのsinと出題に書いてあれば想像できます。
>>40と全く同じノリで答えましたが?

47:デフォルトの名無しさん
21/01/31 18:49:00.47 TZSorCef.net
...もしかして、三角関数知らない?
もうギブアップ。

48:デフォルトの名無しさん
21/01/31 18:49:45.66 JUmaLjMc.net
>>47
sinという言葉には色んな意味があります。
出題に書いてないことを勝手に想像しないように
同じノリで答えてますw

49:デフォルトの名無しさん
21/01/31 18:50:29.12 TZSorCef.net
酷い意地悪を見た

50:デフォルトの名無しさん
21/01/31 18:54:20.45 uAw68cw/.net
面白すぎるだろこのやり取りw
最初から相手の話を聞く気がない人に説明をしても無駄無駄

51:デフォルトの名無しさん
21/01/31 18:54:30.12 uAw68cw/.net
諦めろ>>49!お疲れ様!

52:デフォルトの名無しさん
21/01/31 18:58:21.14 JUmaLjMc.net
stdnum.ca.sin SIN (Canadian Social Insurance Number).
URLリンク(arthurdejong.org)
実際にあるみたいだなw

53:デフォルトの名無しさん
21/01/31 18:59:23.14 uAw68cw/.net
sin関数は一目で具体的な用途が判るが、getPriceはそうじゃないし使い勝手もイマイチだって言いたいんだろ
察してやれ

54:デフォルトの名無しさん
21/01/31 19:00:26.13 JUmaLjMc.net
>>50
ずっと答えてますが?
数学オブジェクトと出題に書いてないのに
想像で数学オブジェクトだと決めつけるのは良くないですよ?
違いますか?
厳密な定義ができるのはプログラマの能力の一つでしょう

55:デフォルトの名無しさん
21/01/31 19:01:36.35 JUmaLjMc.net
>>53
だから、getPriceには出題に書いてないからわからない。
これが商品オブジェクト、 product.getPrice() と
出題に書いてあればわかると答えたんですが?

56:デフォルトの名無しさん
21/01/31 19:03:23.18 TZSorCef.net
>>55
> だから、getPriceには出題に書いてないからわからない。
↑これが問題なの。

57:デフォルトの名無しさん
21/01/31 19:04:29.63 TZSorCef.net
>>53
よくわかりましたね。正解。

58:デフォルトの名無しさん
21/01/31 19:05:57.07 JUmaLjMc.net
>>56
俺の答えが正解っていいたいのか?w
俺が答えを言ってから、後出しで同じだって言うなよwww

59:デフォルトの名無しさん
21/01/31 19:09:21.55 JUmaLjMc.net
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()は何やってるの?」という質問が出るのであれば
それを関数にすることで可読性が上がるのです。中で何をやってるかは
意識させないようにするのが正しい設計です。

60:デフォルトの名無しさん
21/01/31 19:22:21.34 TZSorCef.net
>>58
だって貴方、>>12でどこもクソコードじゃないって答えたじゃん

61:デフォルトの名無しさん
21/01/31 19:24:32.72 JUmaLjMc.net
コードはクソじゃないですが?
出題に書いてないって言うのは、出題がクソという意味ですが?
いい加減諦めたら?w

62:デフォルトの名無しさん
21/01/31 19:24:56.89 Ti7TRi+9.net
風呂入ってたら議論が白熱してた
俺どうすればいい?

63:デフォルトの名無しさん
21/01/31 19:25:29.66 JUmaLjMc.net
オナニーしてねろ

64:デフォルトの名無しさん
21/01/31 19:26:58.02 Ti7TRi+9.net
はい

65:デフォルトの名無しさん
21/01/31 19:28:30.31 TZSorCef.net
おかえり
もう、疲れたよパトラッシュ...
ところで、パトラッシュ、答えが知りたいな

66:デフォルトの名無しさん
21/01/31 19:30:52.25 Ti7TRi+9.net
てゆーか、答え言っていいの?
一応想定してた回答はあるけど

67:デフォルトの名無しさん
21/01/31 19:32:35.81 TZSorCef.net
いいよ!気になる。

68:デフォルトの名無しさん
21/01/31 19:34:13.36 JUmaLjMc.net
すでに指摘した点を蒸し返すなよ?

69:デフォルトの名無しさん
21/01/31 19:35:02.92 JUmaLjMc.net
せめてデメテルの法則ぐらいはわかった上で発言してくれな

70:デフォルトの名無しさん
21/01/31 19:35:18.81 Ti7TRi+9.net
一応俺の想定では>>22が正解
ただ俺はデメテルの法則違反とか知らんから色々勉強になった
一概にこれが正解とは言えないんだなーと

71:デフォルトの名無しさん
21/01/31 19:36:30.29 Ti7TRi+9.net
>>70
補足すると関数名ね
getPrice -> getClothPrice
にした方がいいんじゃないかなってこと

72:デフォルトの名無しさん
21/01/31 19:37:21.40 JUmaLjMc.net
>>71
それはgetPriceが属するオブジェクトによる
一概にそう言えないし、それは出題に書いてない

73:デフォルトの名無しさん
21/01/31 19:37:54.79 TZSorCef.net
>>71
ありがとう。
まぁ、俺も一部、知らんことあったから勉強にはなったよ。

74:デフォルトの名無しさん
21/01/31 19:38:59.71 Ti7TRi+9.net
>>72
まぁ思い付きの出題だから、その辺はすまんかった

75:デフォルトの名無しさん
21/01/31 19:39:20.06 JUmaLjMc.net
俺は何の勉強にもなってねーなw

76:デフォルトの名無しさん
21/01/31 20:18:52.57 OeszCOeJ.net
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;
}
}
俺も出題しよっと
俺は上記、箱クラスを作った
カプセル化もしてるし、インスタンス化もできるし、まさにオブジェクト指向(キリッ)
さて、何が駄目でしょうか
前提...命名規則やインデント等の書き方の問題ではない
考えるべきこと...クラス設計的な問題点を見つけよ

77:デフォルトの名無しさん
21/01/31 20:21:04.97 OeszCOeJ.net
初期値書き忘れた
Javaの言語仕様で0が入るって事で

78:デフォルトの名無しさん
21/01/31 20:33:10.20 JUmaLjMc.net
>>76
クラスレベルでhやwといった一文字は使うべきではない
座標としての意味のxやyなら問題ないが

79:デフォルトの名無しさん
21/01/31 20:34:17.92 JUmaLjMc.net
一文字変数が許されるのは、広くても関数レベル
可能ならそれよりも小さいブロックレベルまで

80:デフォルトの名無しさん
21/01/31 20:36:14.99 JUmaLjMc.net
理由は「パッっと見」でクラス全体を見ることは普通は無理だから。
一文字変数は変数名から意図がわからないのでパッっと見でコードも同時に見れることが前提

81:デフォルトの名無しさん
21/01/31 20:36:31.43 eKqnOz0E.net
うーん、この

82:デフォルトの名無しさん
21/01/31 20:38:19.85 OeszCOeJ.net
問題文に「命名規則は関係ない」って書いてあるのになぁ

83:デフォルトの名無しさん
21/01/31 20:39:22.25 JUmaLjMc.net
一文字変数は命名規則ではない

84:デフォルトの名無しさん
21/01/31 20:41:27.15 OeszCOeJ.net
脳がバグってるのか?
どうみても...ビジ...面白いから黙っておこう

85:デフォルトの名無しさん
21/01/31 22:12:44.94 HlWuf0AU.net
>>76
hとwを高々保持するのが目的のようなやつをクラスにする必要あるやろかとは思う
あとプライベートにしてアクセッサを用意するのはいかにもなんだけど
これは言うほど嬉しくも無いと結論づけてもういいんじゃないかな
こーいうデータ保持クラスおまえらも山ほど書いてきたと思うけど
嬉しかったことあるかこれ?
結局これを受け入れる側のクラスライブラリとべったりの未来しか見えないし

86:76(移動中)
21/01/31 22:30:49.34 g6MPPGEA.net
>>85
素晴らしい!正解!!
理由説明も、その通り!
まぁ、解決するとしたら、そもそもこんなクラスを作るなorドメインロジックをしっかり記述しましょうってところか。
オブジェクト指向(キリッ)とか言いつつ、完全にオブジェクト指向の本質を無視したプログラムでした。

87:デフォルトの名無しさん
21/01/31 23:07:03.11 kFPKIccw.net
でも教科書にはこういう例しか載っていないんだよな・・・

88:デフォルトの名無しさん
21/01/31 23:28:33.14 xTcVCzeY.net
たしかに
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:デフォルトの名無しさん
21/01/31 23:28:37.40 HlWuf0AU.net
実装ありきでそれに対するアクセッサという順にしか考えないし
実装ではなくてインタフェースに対してプログラミングするとかも分かってない
インタフェースを設計する上で見るべきところに思考がフォーカスされてない
C#はプロパティがあって簡潔で嬉しい!これでアクセッサ書き放題ぐへへってなもん

90:89
21/01/31 23:29:48.84 HlWuf0AU.net
あ、流れ読んでなかった
>>89はどれに対するレスじゃなくて雑感ね

91:デフォルトの名無しさん
21/01/31 23:32:30.66 JUmaLjMc.net
ふう。やれやれ
アクセッサにするのは将来の拡張性のためだろ
Javaであればプロパティが存在しないから
そうしないとインターフェース互換性を保ったまま
継承することができない。
言われてコードを書いてるだけで、その理由を知らないんだな

92:デフォルトの名無しさん
21/01/31 23:37:56.79 JUmaLjMc.net
自分か継承をしたことがないからって
クソコードというのはコードの話をしてない
自分の経験の話になっている

93:デフォルトの名無しさん
21/01/31 23:39:23.18 xTcVCzeY.net
大丈夫?ID真っ赤だぞ

94:デフォルトの名無しさん
21/01/31 23:45:54.87 JUmaLjMc.net
IDが赤くなるのはレスが多いからなだけだぞ?
それ以外に意味はない

95:デフォルトの名無しさん
21/02/02 07:34:00.26 Tpt4JRkR.net
クラス利用者の事を考えずに実装したクラスは全部クソコード説

96:デフォルトの名無しさん
21/02/02 14:23:08.30 bhwRAjFJ.net
お前の書いたのは全てクソコード説

97:デフォルトの名無しさん
21/02/02 14:38:58.03 o3/qhRLn.net
てめえのもな

98:デフォルトの名無しさん
21/02/02 15:05:56.95 dfd6YEEl.net
>>96
このスレで語られている内容を理解できない96はクソコードしか書けないニート説

99:デフォルトの名無しさん
21/02/02 15:18:13.00 mk8gJgM8.net
>>11
コードの良し悪しは用途と仕様が不明確ならまともな判断はできないから
どちらもわからない状態じゃコーディングプラクティスの指摘だけになる
- clothPriceはどっからやってくるの? それでいいの?
- idを指定して複数の値が返されるようなデータ構造を使うべきなの?
- filter(id).first()よりfind(id)のほうがいいのでは?
- clothPriceが1000万件になっても問題ない?
- 俺の知ってるJavaScriptでは({ id })とは書けないけど?
- .first()はどこにどういう仕様で定義されてるの?
- idに対応する値がclothPriceに存在しなかった場合にどうなるの?
- テストコードも一緒に出してね

100:デフォルトの名無しさん
21/02/02 16:23:17.93 F8EiZmWN.net
>>99
書いてないことをいちいち質問したらきりがない
タブの数は2でいいの?とかまででてくるだろ
それらの質問は「問題ない」として扱えば
クソコードではないという答えが正しい

101:デフォルトの名無しさん
21/02/02 18:40:58.39 dfd6YEEl.net
お前ら(>>26 >>99)、国語の問題で「告白された○○君はなぜ顔を赤らめたのですか」と問われたら、「そんなのどこにも書いて無い!!もしかしたら唐辛子ガムを噛んでいたら予想以上に辛くて顔を真っ赤にしただけかもしれないだろ!!!」とか真顔で言い出しそうだな。
なんなんだこのスレは

102:デフォルトの名無しさん
21/02/02 18:53:57.65 7of77oce.net
>>101
国語の問題と科学の問題は分けて考えないといけない
実際、顔を赤らめた理由は風邪だったかもしれないわけだ

103:デフォルトの名無しさん
21/02/02 19:17:56.91 dfd6YEEl.net
ここまで詭弁が病気を疑うレベル
論理学が発展しそうだ

104:デフォルトの名無しさん
21/02/02 19:18:09.01 dfd6YEEl.net
ここまで詭弁が酷いと病気を疑うレベル
論理学が発展しそうだ

105:デフォルトの名無しさん
21/02/02 19:20:12.00 j1AIfgcw.net
>>103
そんな滅茶苦茶な日本語を書くほど興奮してるのか?何が導火線に火を着けたんだw

106:デフォルトの名無しさん
21/02/02 19:27:02.71 ReeT4XGv.net
>>102
アスペ死ね

107:デフォルトの名無しさん
21/02/02 19:33:33.22 NnSaCayY.net
さあ盛り上がって参りました

108:デフォルトの名無しさん
21/02/02 20:57:02.78 LnwudBv/.net
脳にコロナが沢山います

109:デフォルトの名無しさん
21/02/02 21:30:20.78 IyiGSAGP.net
>>11はせっかくお題を出してくれたんだから建設的に行こうや
あら探ししてても成長が無いぞ
> getPrice(id)
IDから価格を引くようなことするんなら
DBMS側で全部管理しておいて
コード上にはDM操作API(※)の操作のみがあるほうがスッキリすると思う
※例えばJavaで言ったらJDBC呼び出し
> clothPrice
あとこれ
fooPrice, barPriceってどんどん増えてきそうだけど大丈夫か?って思う
データの中身を区別したあとのものを変数に入れるのが不気味
クエリのパラメータ側にあったほうが自然に思える
なるべく細かくないものから指摘した

110:デフォルトの名無しさん
21/02/02 21:31:10.75 IyiGSAGP.net
訂正
×DM操作API
○DB操作API

111:デフォルトの名無しさん
21/02/02 22:08:39.45 mk8gJgM8.net
>>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:デフォルトの名無しさん
21/02/03 00:29:01.19 2d6hEoKZ.net
明示的にポインタ型で変数宣言したらauto&にしろって指摘受けたけど型推論にメリットってあるのか
聞くのも面倒だから言う通りに修正したけど

113:デフォルトの名無しさん
21/02/03 07:53:29.40 WEM0wpGD.net
自分の場合、型推論は
var x = 何か
var y = x
var z = y
var a = z
...
「何か」の部分に扱う型の決定を委ねたい場合に使う
でも、「何か」に任せたら不具合になりかねない場合は使わない

114:デフォルトの名無しさん
21/02/03 17:47:38.43 cEj1fKgU.net
>>111
流石にそれは問題文の課題解釈

115:デフォルトの名無しさん
21/02/04 13:52:50.53 xGlwnT6u.net
クソコードは存在しない。
クソプログラマがいるだけだ。

116:デフォルトの名無しさん
21/02/04 15:37:08.26 DKUfS2zw.net
前件否定
詭弁スレかなここは

117:デフォルトの名無しさん
21/02/04 15:40:28.24 9Y9XT+dm.net
クソプログラマが書いたコードがクソコード

118:デフォルトの名無しさん
21/02/04 16:11:03.81 xGlwnT6u.net
普通のコードを解釈と言う名の詭弁で棄損している
ケチを付�


119:ッるためだけに延々と持論を展開したりな すると普通のコードがゴミというレッテルを貼られる そりゃあそうだ、そいつはアラを見つけて如何にしてレッテルを貼り付けるかだけに終始してるからだ だからそいつには「ゴミ化」の手法がある



120:デフォルトの名無しさん
21/02/04 17:51:50.18 JCtgNhXu.net
すごいドヤ顔してそう

121:デフォルトの名無しさん
21/02/04 18:10:05.67 cLYP9bxd.net
>>118が何を言ってるのか理解できない

122:デフォルトの名無しさん
21/02/04 18:17:16.95 DKUfS2zw.net
詭弁の特徴のガイドライン(ム板拡張版)
・理解できる事を理解できないフリをして論点をずらす
例)sin関数を使って計算してください→sinって何?w罪?w
・議題を否定して論点をずらす
例)アンパンマンは何故、バイキンマンに勝つのか→アンパンマンなんて存在しねーよバーカバーカ
・直感と感覚を否定し、理由が言えなければ事実ではないと決めつける
例)地震が怖かった→なんで地震が怖かったの?理由が言えないのなら怖いなんて嘘だ
このスレみてたら、こんなのが思い浮かんだ
議論をもとに戻す前に、二度とこんな書き込みすんなと警告しとく

123:デフォルトの名無しさん
21/02/04 18:29:41.03 MbXlwikG.net
詭弁て>>115>>118みたいなやつだろ

124:デフォルトの名無しさん
21/02/04 18:30:42.54 7BpvnZAj.net
>>121
> 詭弁の特徴のガイドライン(ム板拡張版)
自分で勝手にオレオレルール作るなよw

125:デフォルトの名無しさん
21/02/04 18:32:23.89 DKUfS2zw.net
>>120
俺も理解できん

126:デフォルトの名無しさん
21/02/04 18:34:52.95 r1rgzoeR.net
クソスレ上げんなカス

127:デフォルトの名無しさん
21/02/04 18:46:14.74 qhstqCrC.net
>>121
sin関数のくだり(>>43)は質問の仕方が悪かっただけでしょ

128:デフォルトの名無しさん
21/02/04 18:52:47.96 9Y9XT+dm.net
ム板拡張版www

129:デフォルトの名無しさん
21/02/04 19:04:30.45 7BpvnZAj.net
sin関数のくだりは、明らかにMathオブジェクトだとわかるものを持ってきて
それと同一視させようとしてるから、>>43がアホなだけ

130:デフォルトの名無しさん
21/02/04 19:56:09.47 plfmR7iV.net
ム板拡張版ってw
まぁ、時々、該当しそうな人を見かけるけどさw
それはさておき、酷いと感じるコードって
・仕様変更の度に膨大なプログラム変更の工数がかかるコード(人件費が無駄にかかる)
・全く品質の保証されないコード(保証するためのテストにかかる人件費が非現実的な価格になる)
これを満たしているコード全てじゃない?
これを満たすコードを分析していけば、答えが見つかりそう

131:デフォルトの名無しさん
21/02/05 18:13:08.64 7P5D6x+s.net
class Rest{
ログインメソッド
ユーザー情報取得メソッド
位置情報送信メソッド
位置情報送信成功通知メソッド
位置情報送信失敗通知メソッド
位置情報以外の情報送信成功通知メソッド
位置情報以外の情報送信失敗通知メソッド
HTTPエラー通知メソッド
private変数のgetterメソッド※全て定義
}
転職前の会社で見つけたAndroidクソコード
こんなコードを渡された時は転職を決意した

132:デフォルトの名無しさん
21/02/05 20:09:09.32 LvAfdZdW.net
位置情報送信メソッド

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

どういう関係なの? 後者は前者に渡されるコールバック関数?

133:デフォルトの名無しさん
21/02/05 20:30:02.05 sQbQrry7.net
位置情報とか必要な時だけは渡すが、終わったら絶対にアプリを落とすようにしてる

134:デフォルトの名無しさん
21/02/05 20:59:57.01 ywW/HyXt.net
>>130
1つのクラスでバックエンドAPIのスタブをまとめてるだけなら別にクソコードじゃない

135:130
21/02/06 00:28:38.26 rZdEmaWa.net
>>131
後者は前者を呼んだ後、HTTPレスポンスが返ると引数に渡された関数型が呼ばれる
前者の結果を非同期で受け取るイメージ

136:デフォルトの名無しさん
21/02/06 13:51:42.40 F35+hfeS.net
クソコードというよりウンコードだろ

137:デフォルトの名無しさん
21/02/06 13:59:02.77 OoUbdqRB.net
unicode(ウンコード)

138:デフォルトの名無しさん
21/02/09 17:43:42.15 oXbJA4gd.net
httpレスポンス(Json)に1個、新しい項目を追加したらプログラムの書き直しが20箇所近くで発生してワロタ
無駄なラッパーによる地獄の変更作業

139:デフォルトの名無しさん
21/02/10 03:51:43.35 YKvIUGd6.net
ほほwww

140:デフォルトの名無しさん
21/02/10 23:05:34.63 PXY5WDG2.net
1万行のメソッド
巻物のような一本モノシーケンスで途中の幾多のエラーチェックの度にいろんなフラグを立てまくり、最終的に最後の行まで到達してから関数冒頭で行なったエラーチェック結果を参照、結局エラーでしたで終了
しかもユーティリティクラスのメソッド

141:デフォルトの名無しさん
21/02/11 12:29:17.94 QNzWdO78.net
頭の悪い人がMVVM

142:デフォルトの名無しさん
21/02/11 16:13:15.21 20fgad/C.net
皆、通る道は同じなんだな

143:デフォルトの名無しさん
21/02/12 00:11:29.55 jyO5hUn0.net
テストコードって必要?

144:デフォルトの名無しさん
21/02/12 00:17:10.35 tz+82o+A.net
テストコードがないプロジェクトなんて見たことないレベル
まともにメンテナンスが続いてるソフトで探してみ

145:デフォルトの名無しさん
21/02/12 01:50:17.30 yHZydEd8.net
会社コードならテスト無いの山ほどある

146:デフォルトの名無しさん
21/02/12 07:51:11.85 kUMRCn77.net
自社開発のパッケージ製品作ってんだけどテストコードって書いたことないんだよね
自分自身の学習コストはともかくメンバーの学習コストが怖くてね

147:デフォルトの名無しさん
21/02/12 08:29:33.79 tz+82o+A.net
メンバーのせいにするな。お前より優秀だろ。

148:デフォルトの名無しさん
21/02/12 12:30:09.75 qfo2XcRz.net
>>142
ちょっと前までテストコードの無い会社で働いてたけど、地獄だったよ
詳細設計の妥当性確認ができない点がヤバイ
上司やリーダーに単体テストをしていないことの危険性を説明したが...テストコード書いてもどうせ無駄になる的な事を言ってた
そもそも、そのテストコードが些細な変更で無駄になるような設計をしている事がマズイのだが...そこには触れてほしくないみたいな感じだったよ
地獄の住人は地獄しか知らない
逆に、テストコードを書く会社の人達も地獄を知らない

149:デフォルトの名無しさん
21/02/12 22:53:23.25 jyO5hUn0.net
でもなー単体テストの品質はどこで保証されるん?
テストコードもコードレビューするんけ?

150:デフォルトの名無しさん
21/02/12 23:11:03.49 0z7QwFq3.net
>>148
当たり前だろ。

151:デフォルトの名無しさん
21/02/12 23:12:24.97 P801lvm7.net
業務によらね?
頻繁に仕様が変わっちまうのに変えるのが悪いって言われてもね
それで金もらってんだし悪いもクソもないんだよ3日後には変更履歴がすだれみたいに色付いてるのに
のんびりテストコードなんて書いてたって無意味は無意味だろ

152:デフォルトの名無しさん
21/02/12 23:13:45.01 0z7QwFq3.net
だいたいテストコードに限らずレビューするだろ

手動のテストでもレビューしなければ
お前何のテストした?
これらのテストをしました。スクショがテストした証拠です
いや、テストしたかどうかじゃなくて、そのテスト内容は問題ないのか?
しりません。テストしました。信じてください
ってなるやろが?

153:デフォルトの名無しさん
21/02/12 23:14:36.71 0z7QwFq3.net
>>150
仕様が頻繁に変わるからテストしてません
でリリースするつもり?
アホなの?

154:デフォルトの名無しさん
21/02/12 23:15:27.50 jxDcSv/l.net
ひょっとしてテスト項目レビューとかしたことないのか?

155:デフォルトの名無しさん
21/02/12 23:15:50.20 P801lvm7.net
テストコード書いたからOKとはならんよな
重要なのは仕様から見たテストコードが適切かどうかであって書きゃいいってもんじゃない

156:デフォルトの名無しさん
21/02/12 23:17:20.91 P801lvm7.net
>>152
いや別にテストコードなんか時間かかるやん
デバッガの計算後の値をエクセルにコピペするだけでええやん

157:デフォルトの名無しさん
21/02/12 23:19:19.72 v8f20fWB.net
>>152
まあ、あるんじゃね?
うちも大学の研究室に納めるやつとかはバグあったらごめんね、連絡くれたら直すから
なんて契約のものもあるし
まあ向こうに直せるぐらいの能力持ってる人いるけど

158:デフォルトの名無しさん
21/02/12 23:20:27.11 0z7QwFq3.net
>>154
当たり前じゃん。ただしテストコードは実際に動くから、それでテストしたということがはっきり記録される
手動だと、テストしたつもりだけどなぁ。もう一回やったらうまくいきません。
テストのやり方を間違えてたかもテヘペロってなる。これが問題
ひどい場合だと、テストの手順に漏れがあったけど
もう一回やるのが面倒だからってキャプチャを作ってごまかしたりできる
テスト項目一覧とかはそれが正しくてもそのとおりにやったことに記録にはならないから
まあ動画にでも取ってりゃ実際に何をやったかは記録できるが
その記録ムービーを全部見なければ意味がないその時間もない

159:デフォルトの名無しさん
21/02/12 23:21:27.80 P801lvm7.net
大抵書いた直後の一回だけやん必要なのって
そこでテストできていれば
とりあえずそれでええやん
コードにして引き釣り回す必要ってどこにあるん?

160:デフォルトの名無しさん
21/02/12 23:21:48.54 0z7QwFq3.net
>>155
> いや別にテストコードなんか時間かかるやん
手動のテストのほうが時間かかるだろ?
俺が個人で作ってるツールなんか1000を超えるテストを
数秒で終わらせることができるから
コードを修正するたびに全テストを実行できる
それと同じことをやってみ?できるんか?

161:デフォルトの名無しさん
21/02/12 23:22:36.21 0z7QwFq3.net
>>158
仕様が頻繁に変わるってことは、そのたびに全部のテストが必要ってことだぞ

162:デフォルトの名無しさん
21/02/12 23:23:15.89 P801lvm7.net
>>159
いや、テストコードの作成コストヤバイって
対象コードよりヤバイときのが大半やん

163:デフォルトの名無しさん
21/02/12 23:24:15.62 P801lvm7.net
>>160
だからデバッガの値のエクセル貼り付けで駄目な理由って何なん?

164:デフォルトの名無しさん
21/02/12 23:26:11.51 0z7QwFq3.net
>>162
エクセルに貼り付ける時にミスする可能性がある
エクセルに記録されるのは結果だけで
その手順が記録されない

165:デフォルトの名無しさん
21/02/12 23:26:33.56 0z7QwFq3.net
>>161
> 対象コードよりヤバイときのが大半やん
当たり前だろ。なんでその事がわからないのさ?

166:デフォルトの名無しさん
21/02/12 23:31:57.56 P801lvm7.net
てか、君が思ってるほど
無駄にコストかけられないんだよw
まあ、そこでやらなくても
結合とかシステムテストとかあるからさw
そんなに気張ってもらってもどうせ結合で出るようなの取れないし?

167:デフォルトの名無しさん
21/02/12 23:33:28.70 P801lvm7.net
それとその段階だと仕様でまずい部分も出るだろうし



168:んまりガッツリテストやるよりさっさと出してもらったほうが嬉しいっつーか?



169:デフォルトの名無しさん
21/02/12 23:36:39.78 0z7QwFq3.net
>>165
無駄にコストをかけられないというのなら
手動テストを何回やればOKか見積もり立てられるの?
コードを修正したら全部テストいないといけないわけだ
修正した後にまたバグが見つかるかもしれないし
別のバグを入れてしまうかもしれない
そしたらまた全部テストやり直しだ
お前が言うようにコードよりもテストのほうが多くなるぐらいなのに
そのテストに時間がかかる方法を使っていたら
何度もテストできねーだろ

170:デフォルトの名無しさん
21/02/12 23:37:47.45 0z7QwFq3.net
>>166
リリース間近の話をしてますが?

171:デフォルトの名無しさん
21/02/12 23:38:14.73 0z7QwFq3.net
あと一旦リリースした後のバージョンアップとか

172:デフォルトの名無しさん
21/02/12 23:58:17.35 P801lvm7.net
>>168
え?システムテストをテストコードでできないでしょ

173:デフォルトの名無しさん
21/02/12 23:59:41.90 P801lvm7.net
>>169
あ、いや、お金にならなかったら今回で終わりなんで

174:デフォルトの名無しさん
21/02/13 00:03:54.30 xw8mV6Gs.net
>>170
うーん、お前馬鹿なのかな?
自動化できない所が1個あるからって
全部、手動でやるとか馬鹿だよね
手動でやるのが大変だからそれを減らすって話を
してるってその時点で理解できてないの?

175:デフォルトの名無しさん
21/02/13 00:04:38.64 xw8mV6Gs.net
>>171
じゃあもうお前の仕事なくなるじゃんw
自分でお金にならないような仕組みにしておいて
仕事なくすとかアホだなぁ

176:デフォルトの名無しさん
21/02/13 00:16:07.02 gxnJuOwS.net
>>172
うーん?聞いたことないなぁ?
んなとこまでテストコードなんて役に立たないでしょ

177:デフォルトの名無しさん
21/02/13 00:18:40.61 xw8mV6Gs.net
>>174
本気で頭が悪そうw
「そんな所まで役に立たない」=「そんな所以外では役に立つ」
ってお前はいいました。

178:デフォルトの名無しさん
21/02/13 00:20:25.46 xw8mV6Gs.net
自分で「そんな所以外では役に立つ」って言ってるのに
気づいてなさそうなんだよなw

179:デフォルトの名無しさん
21/02/13 00:20:59.63 gxnJuOwS.net
あー、いや、作るコストまで含めたときはんなもんいらねーわ
どう考えてもテスト対象のコードより時間かけてテストコード作るってのは無意味だろ

180:デフォルトの名無しさん
21/02/13 00:22:17.38 xw8mV6Gs.net
お前は実際にテスト対象のコードより時間かけて手動テストしてるだろーが
何を言ってるんだだこいつは?

181:デフォルトの名無しさん
21/02/13 00:22:26.90 gxnJuOwS.net
デバッガ機能で値をエクセルに貼るので十分だって

182:デフォルトの名無しさん
21/02/13 00:24:07.56 xw8mV6Gs.net
まさかテストコードを書く時間しかみてなくて
テストコードがなければ、テストする時間はゼロになるとでも思ってるのか?
テストする時間の話をしてるんだが?
テストコードを書けば限りなくテストする時間は短くなる
手動テストするとテストする時間が膨大になる
テストする回数は数回程度じゃ終わらない

183:デフォルトの名無しさん
21/02/13 00:24:17.75 gxnJuOwS.net
>>178
アホか
ステップ実行して値のプレビューウィンドウをエビデンスに貼るだけだわ
それ以上のもんいらんし

184:デフォルトの名無しさん
21/02/13 00:25:20.87 gxnJuOwS.net
>>180
いや、めっちゃ時間かかるやん
いらんわお前

185:デフォルトの名無しさん
21/02/13 00:25:36.27 xw8mV6Gs.net
>>181
それを1000回やったら何秒になる?w

186:デフォルトの名無しさん
21/02/13 00:27:15.87 xw8mV6Gs.net
>>182
だから手動のテストだと、どれだけ時間がかかるかを
どうやって見積もるか聞いたんだが?
バグがあると修正してテストが必要だが、じゃあ何回テストをやれば終わるんだ?
全体のテストを全部手動でやったら1回のテストで数日は軽くかかるだろうが
見積もりの方法を聞いている

187:デフォルトの名無しさん
21/02/13 00:29:26.07 zYMuRkWP.net
テストコードで品質が上がるとか言ってる奴はそのクソみたいなテストコードのテストも書くのか?(笑)

188:デフォルトの名無しさん
21/02/13 00:30:01.23 gxnJuOwS.net
>>183
えー、テストコード1000個書くより早いやろw

189:デフォルトの名無しさん
21/02/13 00:30:17.08 xw8mV6Gs.net
>>185
テストコードは人が見てコードレビューするので
テストコードのテストは不要

190:デフォルトの名無しさん
21/02/13 00:31:44.06 gxnJuOwS.net
まず、時間が掛かりそうなのがテストコード自体の正当性の担保だよね
テストコード自体も時間がかかるけどここの説明がないのもね

191:デフォルトの名無しさん
21/02/13 00:31:53.43 xw8mV6Gs.net
>>186
テストコード1000個書いて、1回あたり数秒でテストを終わらせる
手動で1000個のテストを数日かけてやって、バグがあったらまた数日かけて1000個のテストをやる
どっちが速いかって、明らかにテストコードじゃんw

192:デフォルトの名無しさん
21/02/13 00:32:35.09 xw8mV6Gs.net
テストコード不要って言ってるやつは
手動のテストにかかる時間を考慮してないってのがわかったなw

193:デフォルトの名無しさん
21/02/13 00:33:24.95 gxnJuOwS.net
>>187
もうバリバリヤバイ時間かかりそうだなw
これは何納品するなら許される重厚感?w

194:デフォルトの名無しさん
21/02/13 00:33:38.50 xw8mV6Gs.net
テスト作業の時間を減らすためにテストコードを書くってことを
理解してないってのが驚きだったわw

195:デフォルトの名無しさん
21/02/13 00:35:20.12 xw8mV6Gs.net
>>191
手動のテストは時間がかかるよ
テスト仕様書を書く→テスト仕様書のレビューする
この時点でテストコードのレビューをしたほうが速いんだが
しかも手動テストの場合テスト仕様書のレビューがOKでも
実際に作業者がその仕様書通りにテストしてることが担保できない
テストしたけどちゃんとテストできてませんでしたってのが頻発する

196:デフォルトの名無しさん
21/02/13 00:35:34.83 gxnJuOwS.net
あ、はい、もういいですw

197:デフォルトの名無しさん
21/02/13 01:16:16.14 uGwTnb+S.net
テストコード書かない奴にはどれだけ説明しても大抵無駄。
あいつら野菜毛嫌いするホリエみたいなもんだから。

198:デフォルトの名無しさん
21/02/13 01:24:52.43 zYMuRkWP.net
テストコードが何故正しいと言えるのか?
こんなもの作る工数は含まれてないし
単体テストなんかやらんからな(笑)
やりたいならテスターが書けよ(笑)
結合やらやればどうせバグがあれば出るんだし、まさかとは思うけどテストコード教の奴は単体だけで品質が担保されてますとか言うのか?(笑)
コミットした時点で動作チェックぐらいしてるやろ
なんか最近の出来ない奴はテストコード以前に動かないものを平気でコミットするからな

199:デフォルトの名無しさん
21/02/13 05:47:34.87 scVpGKPS.net
テストコードなかったらテスト作業に膨大な時間がかかるって話だろ?
テスト作業にかかる時間を無視するなよ

200:デフォルトの名無しさん
21/02/13 05:50:27.48 scVpGKPS.net
>>196
> なんか最近の出来ない奴はテストコード以前に動かないものを平気でコミットするからな
開発にテストの時間を含めてないからでしょ?w

201:デフォルトの名無しさん
21/02/13 09:16:03.51 gxnJuOwS.net
>>197
比較するのもバカらしい
テストコード書いてる時間に5回はできそうだなw

202:147
21/02/13 09:47:02.97 9XqVPVy+.net
いつの間にか盛り上がっててワロタ
流れを読まずに言わせてもらうと
テストコードって趣味で書くわけじゃなくて、品質を維持するため或いは開発費の無駄を無くすために書くものなんだぜ

203:デフォルトの名無しさん
21/02/13 09:52:35.14 32jiSkKt.net
テストコード頑張るぐらいなら結合テストで頑張ればいいじゃんどうせ画面絡みとかの方がバグ多いし

204:147
21/02/13 09:54:50.29 9XqVPVy+.net
>>201
テストコードを書けば、ビルドする度にテストが自動的に実行される
これが強み
手動で動作確認もやるけど、テストコードはあくまでのソースコードの質をチェックするための工程だし、目的が違う

205:デフォルトの名無しさん
21/02/13 10:01:23.85 32jiSkKt.net
>>202
目的が違うのは分かるけどテストコード書くコストも結合テストにかかるコストも両方出せるないなら結合テスト頑張る、又はseleniumとかでそっちの自動化頑張った方がコスパいのかなと

206:147
21/02/13 10:03:01.57 9XqVPVy+.net
あと、俺は画面がらみのテストも自動化してるよ
タッチとかの操作をテストフレームワークを使ってコンピュータにやらせてる
だから、同じテストを手作業でやらずに済む
最終チェックは念の為手作業でやるけど、バグが直るまで何百回でも自動的にテストができるのが強み
まぁ、それができない事情も知らないことはないけどね...static上司...ウッ頭が

207:デフォルトの名無しさん
21/02/13 10:04:08.61 gxnJuOwS.net
>>201
俺もそう思う
結合で頑張ろうよね
こんなのそもそもスタンドアロンでなんか動くに決まってんじゃん

208:147
21/02/13 10:07:00.21 9XqVPVy+.net
>>203
不具合はなるべく早く見つけ出した方が修正が楽
もしも、手動テストで不具合が発覚しても原因分析に時間がかかってしまうから...そこが問題
一方、テストコードだと行レベルで不具合の箇所がわかる
まぁ、単体テストをすり抜けることもあるから手動チェックもするが...

209:147
21/02/13 10:13:57.11 9XqVPVy+.net
まぁ、現場判断が一番だ
今、テストコードを書いても無駄だと感じるのなら、その通りなのだろう
ただ、へぇー
そんな職場もあるんだー程度に参考にしてくれれば

210:147
21/02/13 10:26:37.18 9XqVPVy+.net
ごめん、Selenium無視してた
まぁ、ほとんどUIとフレームワークのコードしか書かないのならテストコードを書こうとしても何をテストすればいいんだよwってなるかも

211:デフォルトの名無しさん
21/02/13 11:17:00.74 scVpGKPS.net
>>201
テストコードでできるようなことを、結合テストで全部やるとかアホだろw
結合テストにどれだけ時間がかかると思ってるんだ?

212:デフォルトの名無しさん
21/02/13 11:18:03.19 scVpGKPS.net
>>205
> 結合で頑張ろうよね
なんで同じことを時間がかかる方法でやろうとするの?
時間泥棒が目的なわけ?

213:デフォルトの名無しさん
21/02/13 11:19:19.42 scVpGKPS.net
>>199
> テストコード書いてる時間に5回はできそうだなw
テスト回数5回って少なすぎるだろw
5個のバグを1個ずつテストしたら終わりじゃんw

214:デフォルトの名無しさん
21/02/13 11:29:32.31 PYtZn7CJ.net
> 結合やらやればどうせバグがあれば出るんだし
とか言ってるやつに単体テストの重要性を説いても無駄
何回か痛い目に会えばいいんだけど無職みたいだからそれも無理だしw

215:デフォルトの名無しさん
21/02/13 11:53:52.62 gxnJuOwS.net
>>212
いや、もし単体で動いたとしてもUIがどういうタイミングでどの頻度で欲しいのか?
よくわかってないんだよ
奴らバカだから
どうせ進捗率出せないと困るとか
中断とリスタートができないと駄目だとか
うっせからそんな決まらねぇぞどうせ

216:デフォルトの名無しさん
21/02/13 15:05:52.87 scVpGKPS.net
単体テストの重要性がわからなくても
テスト時間がどれくらいかかるかぐらいわかると思うがな
何日かけて総合テストしてますか?

217:デフォルトの名無しさん
21/02/13 15:06:38.25 scVpGKPS.net
何日かけて結合テストしてますか?

218:デフォルトの名無しさん
21/02/13 15:10:25.52 scVpGKPS.net
全部結合テストでやればいいって言ってるやつは
結合テストも適当にしかしてないだろうな
数ヶ月かけて開発して、まとめて2、3回テストをするとかそんな感じだろ
時間がかかってそれ以上やれるわけがないんだから

219:デフォルトの名無しさん
21/02/13 16:01:22.66 ePSMeSNb.net
テスト対象がテスト済みのオープンソースライブラリだらけだったら、テストコードを書かないのはわかる
まぁ、ごりごりドメインロジックを記述する人がテストコードは不要とか言うと困るけど

220:デフォルトの名無しさん
21/02/13 16:05:55.90 scVpGKPS.net
テストコードを書かないでいいなら
テストもしないでいいってことになるんだが?

221:デフォルトの名無しさん
21/02/13 16:07:53.04 ePSMeSNb.net
>>218
まぁ、落ち着け
あと、誰に言ってる?

222:デフォルトの名無しさん
21/02/13 19:53:19.20 EpdeqUps.net
テストがどうよりクソコードを語れよ

223:デフォルトの名無しさん
21/02/13 20:16:55.86 Hi5efe9w.net
テストはビジネスロジックだけ書くのが普通

224:デフォルトの名無しさん
21/02/13 20:17:28.48 Hi5efe9w.net
プロが作ったなら要らない

225:デフォルトの名無しさん
21/02/14 18:52:08.05 UVTry2j6.net
開発者達とリーダー「単体テスト?テストコード?そんなのやっても開発費が無駄にかかる」
リーダー「開発者全員のコードを結合ッ!」
開発者達「ぐぁあああああ!!!」
リーダー「ど、どうした!?」
開発者達「4,294,967,295項目の不具合が発生した!しかも、どこのコードで不具合が起きてるのかよくわからん!!」
リーダー「お、お前ら落ち着け!」
リーダー「そ、そうだ...こんな時こそリファクタリングだ!」
リーダー「開発メンバーッ!開発メンバー全員集まれ!!」
リーダー「お前らッ!ここに4,294,967,295項目の不具合内容を書いた!各自、怪しいところを直せ!いいなッ!?」
リーダー「一斉に治すぞ...!いっせーのーせ...!」
開発者達「ぐぁあああああ!!今度はさっきと違う不具合が74,173,389,081ヶ所で発生したぁああああああああ!!」
リーダー「何やっとんじぁあああああ!!!お前らぁぁぁあああ!」
リーダー「ヤバイ!プロジェクトが炎上した!!」
全員「ぐぁぁぁあああああ!!」
→(チーン)

226:デフォルトの名無しさん
21/02/14 18:55:55.94 UVTry2j6.net
ということを懸念してるからこのスレで単体テスト&テストコードの話で盛り上がったのだろう(たぶん)

227:デフォルトの名無しさん
21/02/14 21:04:14.19 D24G58JB.net
なんかこれ面白いの?

228:デフォルトの名無しさん
21/02/14 23:30:53.36 Xb0b89w4.net
テストコードを書く時間 vs テストコードを書かない時間
で比べてるからアホなんだよなw
「テストコードがある場合のテストする時間」
vs
「テストコードがない場合のテストする時間」
テストする時間で比べないと意味がないだろ
テストコードがないと何千回(例 1日15回×3ヶ月)とかテストやってられない
テストコード書いて90%のバグを修正していれば
何日もかかるような手動テストは10%だけでよくなる
バグ修正時のエンバグも防げる

229:デフォルトの名無しさん
21/02/15 00:43:29.18 JE19der5.net
まさかテストコード書く書かないでこれほど盛り上がるとは

230:デフォルトの名無しさん
21/02/15 01:20:08.98 89MhGAsi.net
>>226
でそのテストコードは何故必ず正しいと言えるの?
そもそもまともなコード書ける人は単体なんかやる必要無いんだよね
その後のテストは結局手動やろ

231:デフォルトの名無しさん
21/02/15 02:53:39.67 P+hwD+is.net
>>228
これはひどいw

232:デフォルトの名無しさん
21/02/15 04:33:13.60 uhj1tPkS.net
>>228
正しいと言えるかどうかじゃなくて、
やったテストがちゃんと再現できるのが重要
テストした?→やりました、ほら証拠のスクショがあります!
いやスクショあったって、手順間違えてたら意味ないでしょ
これを防ぐためにある
手動で数千もあるテストを間違いなく実行できるんか?
そしてそれを短時間で再実行できるんか?
手動だとテストに時間がかかってしょうがないと言ってるだろ

233:デフォルトの名無しさん
21/02/15 07:21:34.31 KYanFmnG.net
>>230
エビデンス(エクセルにスクショ貼り付け)とってその後Gitに更新がなければそれで終わりや
実行なんてできる必要ないでどうせ時間が経ったらWindows Updateで動かんなるし

234:デフォルトの名無しさん
21/02/15 07:24:49.59 KYanFmnG.net
>>230
そもそもそれWindows Update後も動くんか?
動かんとき、その動かん原因がWindows Updateの類やライブラリ更新の類なのか元から動かんのか
テストコードしか書いてないとき判別できるんか?
できないならスクショもとってもらうで

235:デフォルトの名無しさん
21/02/15 07:42:37.58 l6UtloU6.net
>>226
だから
>> 結合やらやればどうせバグがあれば出るんだし
>とか言ってるやつに単体テストの重要性を説いても無駄
なのよ
リグレッションテスト?なにそれ?美味しいの?
って言う現場は実存する

236:デフォルトの名無しさん
21/02/15 08:51:23.20 rF3y723p.net
>>228
ネタで書いたであろう>>223をマジでやってそう

237:デフォルトの名無しさん
21/02/15 09:34:53.84 KYanFmnG.net
ていうか単体テストコードを起こせる設計書や仕様書が重要なんであって
単体テストコードすらWindows Updateの前には無力よな
やっぱりドキュメントが重要なんだよ

238:デフォルトの名無しさん
21/02/15 10:20:12.92 JE19der5.net
よくわかってないんだけど、windows updateが単体テストにどう関係してくるの?

239:デフォルトの名無しさん
21/02/15 10:30:33.84 l6UtloU6.net
単体テストをアプリかなんかと勘違いしてるんじゃねw
むしろWindows updateの時なんかに威力を発揮するんだけどね

240:デフォルトの名無しさん
21/02/15 11:07:38.83 rF3y723p.net
プラットフォームの仕様がwinアップデートで変わったせいで不具合がでるってこと?
もし、それが当たり前だと思っているのなら認識を改めた方がいいよ
単体テストしろ

241:デフォルトの名無しさん
21/02/15 13:48:53.21 89MhGAsi.net
テストコード厨って結局そのテストコードが正しいか証明出来ない上に
書くのが当たり前と脳死しているだけというwww
マジでいらんから
その程度の脳だから底辺プログラマーから抜け出せないのだよw

242:デフォルトの名無しさん
21/02/15 14:52:00.93 K9nFtIWr.net
>>239
> テストコード厨って結局そのテストコードが正しいか証明出来ない上に
→算数のテスト問題は間違ってるかもしれないから算数のテストは無意味と同じ主張
> 書くのが当たり前と脳死しているだけというwww
→脳死してるのお前じゃね?
> マジでいらんから
→お前がいらん
> その程度の脳だから底辺プログラマーから抜け出せないのだよw
→お前だろ

243:デフォルトの名無しさん
21/02/15 15:05:46.19 Yv9X0Du7.net
>>239
手動で実行してるテストのテストケースが正しいかどうかどうやって証明するの?

244:デフォルトの名無しさん
21/02/15 17:45:20.19 PMcPEWsf.net
>>231
> エビデンス(エクセルにスクショ貼り付け)とってその後Gitに更新がなければそれで終わりや
いつにエビデンス取るんだよ?
テストしたあとにエビデンス取るんだよな?
つまりテストでバグが出ることがあるだろ
そのバグを修正するんだから、エビデンス取った後に更新あるだろ
エビデンスとってgitに更新ないときは
テストですべてOKだったときしかありえないだろ
何いってんだお前

245:デフォルトの名無しさん
21/02/15 17:47:48.67 PMcPEWsf.net
>>232
> そもそもそれWindows Update後も動くんか?
Windows Update後動かなかったらどうするんだよ?
修正しないのかよ?
テストする時に時間がかかるのは
全部を手動テストするのか
一部だけ手動テストして残りはテストコードによる自動再テストなのか
どっちのほうが時間かかるのか言ってみて
もちろん手動テストは全部スクショ取ってもらうで(笑)

246:デフォルトの名無しさん
21/02/15 17:48:47.87 PMcPEWsf.net
>>239
> テストコード厨って結局そのテストコードが正しいか証明出来ない上に
手動テストでテスト内容が正しいか証明する方法と同じ方法が使える
手動テストでテスト内容が正しいか証明する方法を言え

247:デフォルトの名無しさん
21/02/15 18:20:53.42 g92MWppk.net
客:何もしてないのに動かなくなりました!
(アプデは勝手にされてても気付かないパターン)

248:デフォルトの名無しさん
21/02/15 18:22:26.23 Y9YOwFs/.net
今から手動テストしますので1ヶ月ぐらいかかります
なにせ手動ですからね。ふっふっふ

249:デフォルトの名無しさん
21/02/15 18:27:58.41 c7rUji35.net
>>241
>>244
たぶん、まともなテストコードが書けない...そもそも、まともなクラス設計ができないから、そういう疑問を抱くんじゃないかな
>>76で、クソコード事例として挙げたコードみたいなクラス設計とかしてそう

250:デフォルトの名無しさん
21/02/15 18:30:00.42 2XXTIbH8.net
こんな単体テスト仕様書厨が居るんだからそりゃ老害老害言われるよ
頼むから60代だと言ってくれ
同じ世代にこんなん居たら怒鳴り散らすわ

251:デフォルトの名無しさん
21/02/15 18:47:28.42 c7rUji35.net
29だけど
誤解があったかもしれないから確認するけど、単体テスト仕様厨って何?
俺は必要だから単体テストの自動化を導入しているだけだけど、何か問題がありました?

252:デフォルトの名無しさん
21/02/15 21:37:06.55 SG2OCcUu.net
おまえらはすぐそうやって議題からすら遠ざかってしまうんよ
何かと何かの区別がつかない
手段が目的化してても平気

253:デフォルトの名無しさん
21/02/15 21:37:32.45 KYanFmnG.net
やっぱり単体テストはいいや
なんかやろうとか言ってた奴の手が一番遅いし

254:デフォルトの名無しさん
21/02/15 22:11:38.03 89MhGAsi.net
>>240
底辺が大発狂(笑)
こういう奴ってテストコード(笑)書いているのに低品質なクソコードしか書けない上にバグっているのに
テストコードが通ったから大丈夫とか平気で言いそう(笑)
こういうゴミが残業して給料だけはいいんだよな
優秀な奴は残業なんかしないしな

255:デフォルトの名無しさん
21/02/15 22:12:41.79 Y9YOwFs/.net
手動テストってテストした結果が曖昧なんだよな
「ちゃんと動くこと」
複数ある結果を全て書いてるところなんて見たことない

256:デフォルトの名無しさん
21/02/15 22:13:42.37 Y9YOwFs/.net
>>252
実際には「手動テストしたから大丈夫」なんだろ?
何が大丈夫なのか全くわからない
スクショだけじゃ、データベースの中身なんてわからんだろうに

257:デフォルトの名無しさん
21/02/15 22:44:18.63 l6UtloU6.net
>>239
> テストコード厨って結局そのテストコードが正しいか証明出来ない
もちろん完全にはできない
ただ単体テストのコードって
・値の設定
・被テストコードの呼出
・戻り値等のチェック
だから個々のテストコードは短いし普通は分岐ロジックないからレビューでバグを摘出するのは容易
もちろんそれでもテスト項目数は膨大なのでテストコードのステップ数もバカにならないからバグは作り込まれる
ただ作り込まれたテストコードのバグの大半はテスト失敗の形で現れるので修正することでバグを排除できる

258:デフォルトの名無しさん
21/02/15 22:55:52.85 Y9YOwFs/.net
それで手動テストで、やったテストが正しいか証明する方法はまだ?
スクショは正しいか証明する方法ではない

259:デフォルトの名無しさん
21/02/16 01:08:46.04 1bhKa/Av.net
なんか時間かかりすぎるよね

260:デフォルトの名無しさん
21/02/16 09:37:52.92 4/kXXcg7.net
唐突に「底辺」って言葉を使う人は大抵、底辺コンプレックスを抱えている奴だから>>256に反論はできない
だって底辺だから

261:デフォルトの名無しさん
21/02/16 09:42:16.10 JE34XZEs.net
>>258
底辺と自覚しているようで(笑)
そもそも単体テストなんていらないから
その後のテストで何もなければokだろ
証明とかテストという形式でやらないし残さないのだから(笑)
クソプログラマは必死でテストコード書いて通ってるから安心(笑)と思って後のテストでボコボコに指摘されそもそも仕様すらまともに理解してなかった(笑)ということが日常茶飯事やろ

262:デフォルトの名無しさん
21/02/16 10:20:55.15 IR9INNCG.net
>>259
お前の底辺コンプレックスとお前の日常とかどうでもいいから質問に答えたら?
その後のテストが正しいことってどうやって証明するんだ?
>>228書いたのお前だろ?

263:デフォルトの名無しさん
21/02/16 10:29:37.64 ZcpmZlC/.net
>>259
> その後のテストで何もなければokだろ
だからその後にやった手動テストが正しくテストしたと
どうやって証明するんだって聞いてるんだが?

264:デフォルトの名無しさん
21/02/16 10:31:18.03 ZcpmZlC/.net
>>259
テストコードない人は、仕様をわかってないで完成しましたって言って
その後の手動テストで、ボロクソに言われるだろw

265:デフォルトの名無しさん
21/02/16 12:51:04.85 IR9INNCG.net
> クソプログラマは必死でテストコード書いて通ってるから安心(笑)と思って後のテストでボコボコに指摘されそもそも仕様すらまともに理解してなかった(笑)ということが日常茶飯事やろ
修復不可能なクソコードを必死にテストしてそうだなコイツw
お前のコードは今更、単体テストしても手遅れだから諦めろ
他のお前らは、こんなふうにならないように最初からテストを自動化して、常に品質を保証できるようにしておけよ

266:デフォルトの名無しさん
21/02/16 14:36:40.86 JE34XZEs.net
>>263
お前と違って結合やらその後のテストで俺が作ったものは、ほとんどバグなんて無いんだよ
要望がでて対応するくらい
お前の場合はスキルが低過ぎてバグだらけな上に仕様すら満たしてないものしか作れないだろ(笑)
こういう奴のことを俺はマイナスしか生産しないゴミとよんでる(笑)

267:デフォルトの名無しさん
21/02/16 14:48:04.48 hLN/ZNLb.net
と妄想する底辺であった

268:デフォルトの名無しさん
21/02/16 14:53:04.38 1bhKa/Av.net
今の所一箇所しか当たったことないな
単体テストの自動テスト
すげー無駄作業感すごかった

269:デフォルトの名無しさん
21/02/16 14:53:52.36 OZpOEjmI.net
>>264
底辺コンプレックス君、さっきからなんで>>260>>261の質問を無視するの?
オブジェクト指向アンチのイキリ底辺君と同じ匂いがする

270:デフォルトの名無しさん
21/02/16 14:57:32.28 YiD3bxyB.net
>>266
なぜ、無駄だと思ったのか理由を述べてほしい
興味がある

271:デフォルトの名無しさん
21/02/16 15:05:00.94 QovxsXZg.net
いいんじゃないの、優秀な人が揃っててバグがないならサイコーやん
超優秀なグーグルの技術者さんが単体テストツールとか作ってるのが現実だけどw

272:デフォルトの名無しさん
21/02/16 15:26:10.69 1bhKa/Av.net
>>268
ソースに基づいて機械的に書いてるだけでテストが何のテストにもなってないことが多かったとかじゃなくて
すべてのテストコードがそうなった
少なくとも網羅されてなくては意味がないので
複雑な分岐のあるコードを通すときは同じコードをテストコードに貼り付けてすべての取りうる値をループで回すように組んだ
switch caseのような文ね
それの更に上の階層のコードも
結局subルーチンの取りうる値が結局わからないというか数が多過ぎていちいち調べて�


273:轤黷ネいので サブルーチンのテストコードを貼り付けてさらに本ルーチンのテストを加える形で追加していった こんな手順でやるので一番うえの階層に行く頃には超巨大スパゲッティテストコードができていた



274:デフォルトの名無しさん
21/02/16 16:07:47.96 JE34XZEs.net
ホントテストが有用な説明を一切出来ないんだよなぁw
テストコード厨ってwww
頭が悪いからテスト書かないとボクのコードが正しいかわかりましぇーんwww
みたいなレベルなのかもしれんがw
こういう奴らって自分で動作確認しないでコミットしたりマジでしそうなんだよなぁw
普通はデバッグとかして大丈夫なものを上げるやろ
あ、デバッグの仕方やコールスタックとか全く知らんのかwwwwwwww
マイナスしか生産しない奴の場合、ちょっとパラメータ変えただけで動かないとか
エラー処理が無いとかそんなのばかりなんだよなw
それで、テストコードwも当然そのエラー処理に関するものは一切ないというwwwww

275:デフォルトの名無しさん
21/02/16 16:16:01.07 VGyCnBhh.net
wが多いほど余裕がなくて必死になってるように見えるぞ

276:デフォルトの名無しさん
21/02/16 16:58:55.10 +4LTd2t4.net
>>223で、すげー分かりやすい説明してるんだけどなぁ

277:デフォルトの名無しさん
21/02/16 17:13:03.88 +kNhNUJJ.net
芝の数は知能指数の低さを表す定期
池沼だから周りの指摘が理解できないのだろう
というかさ、単体テストができないレベルは論外なので他スレ逝ってください
お願いします

278:デフォルトの名無しさん
21/02/16 17:18:14.85 +kNhNUJJ.net
単体テストが必要ない→テスト済みのライブラリを使っており独自定義のモデルが無いから なら耳を傾けてやったが、流石に単体テストそのものの否定は論外
もし、これでテスト済みのフレームワークであるRailsやAndroid SDK、Django、Electron等を使ってたら嗤う
まぁ、フレームワークを一切使わない上、単体テストもしないとかだったらもっと嘲笑ってやるが

279:デフォルトの名無しさん
21/02/16 17:44:56.71 2fDc5cBr.net
>>270
文章がスパゲッティ過ぎて説得力ゼロ

280:デフォルトの名無しさん
21/02/16 17:52:58.50 +kNhNUJJ.net
>>270
> ソースに基づいて機械的に書いてるだけでテストが何のテストにもなってないことが多かったとかじゃなくて
> すべてのテストコードがそうなった
あなたはもう一人の頭おかしい人とは別人と見なして回答するけど、そもそもソースに基づいてテストケースを書くのが間違い
ソースを書く段階で既に正しいソースの答えが存在しないといけない
テストコードを書く→コード実装する→ビルドする→テストコードが自動で実行→コード修正する→ビルドする→テストコードが自動で実行
これを繰り返すから不具合の無いプログラムが書ける
もしも、これを否定するのなら、是非、もっと素晴らしい開発ノウハウを教えてほしいものだ
「俺がつくったものはほとんど不具合を出さない」とか、そういうイキリ情報だけ吐き出すのはどうでもいいから

281:デフォルトの名無しさん
21/02/16 18:08:22.87 1bhKa/Av.net
>>277
ソースがおかしかったらテストもおかしくなるの?

282:デフォルトの名無しさん
21/02/16 18:29:17.92 +kNhNUJJ.net
>>278
本来の単体テストでは、ソースがおかしかったらテストもおかしくなってはならないのだが...ソースに基づきテストコードを書くと、ソースがおかしいとテストコードもおかしくなる可能性はある
まぁ、ソースに基づきの本質的な意味にもよるけど
文面と自分の過去の経験(単体テストの無意味化)から、書き直しながら設計をする「書き直しプログラミング」という良くない実装をしているんじゃないかなーとも感じられたけど、そこら辺は大丈夫?

283:デフォルトの名無しさん
21/02/16 21:27:59.66 ZcpmZlC/.net
自動テストの欠点は
1. 時間がかかりすぎる。自動テストの数千倍
2. 正しくテストをしたという証拠が残らない

284:デフォルトの名無しさん
21/02/16 21:28:14.84 ZcpmZlC/.net
間違えたw
手動テストの欠点は
1. 時間がかかりすぎる。自動テストの数千倍
2. 正しくテストをしたという証拠が残らない

285:デフォルトの名無しさん
21/02/16 21:33:26.67 dPD3RJZH.net
テストが要らんと言う人の意見のほうが聞きたい
テストが要ると言う人の意見には興味は無い
PGとSEの区別も仕様書と要件定義書の区別も
人月も工数計算も俺にとっては興味が無いから
どうやって人類はクソコードを避けていくのかの意見だけが聞きたい

286:デフォルトの名無しさん
21/02/16 21:41:54.02 ZcpmZlC/.net
頑張ればできる。みたいな根性論はいらんで
何千人も人を投入すればできる。みたいな人海戦術もいらんで

287:デフォルトの名無しさん
21/02/16 21:46:50.65 2fDc5cBr.net
>>282
「~すればクソコードを避けられる」という意見があったとして
それが本当にクソコードを避けられるかどうか
どうやって確認するの?

288:デフォルトの名無しさん
21/02/16 22:09:23.42 dPD3RJZH.net
>>284
確認も何も
本当に避けられるかどうかがまずどうでもいい
もっと気楽にもっと率直に
「こういう糞を俺はこう避ける」の生の意見を聞きたい

289:デフォルトの名無しさん
21/02/16 22:16:43.61 ZcpmZlC/.net
>>284
それを聞いてる
「手動テストすればクソコードを避けられる」という意見があったとして
それが本当にクソコードを避けられるかどうか
どうやって確認するの?

290:デフォルトの名無しさん
21/02/17 02:14:29.51 9AWFfoq+.net
クソコード避けたいなら、まずクソなプロジェクトを避けることだな

291:デフォルトの名無しさん
21/02/17 02:46:54.37 fzT3JoWH.net
>>285
発想がすでにクソコード

292:デフォルトの名無しさん
21/02/17 07:57:46.74 cgz/Ol0S.net
元は>>228の発言なんだろうけど、もう触れるのはやめようぜ
俺ももっと建設的な意見が聞きたいよ

293:デフォルトの名無しさん
21/02/17 08:34:48.76 ty0uudwM.net
結局手動テストで、正しくテストを行ったことを
担保する方法は出ないで終わりか
結果のスクショだけじゃ役に立たないからね

294:デフォルトの名無しさん
21/02/17 12:04:03.72 KH04dI9l.net
コードがクソでもプログラマーがクソじゃなければ簡単に浄化できる
クソコードを避けようとするのは浄化スキルを持たないクソプログラマー

295:デフォルトの名無しさん
21/02/17 12:11:35.28 JcWwc4WJ.net
浄化が何を示すのかよくわからんけど単体テストコード無しでリファクタリングする勇気は俺にはないわ

296:デフォルトの名無しさん
21/02/17 12:31:42.99 H55Rd51D.net
俺もテストコードが無い上、手遅れなソースは直せる自身がないや
ほぼ作り直しになる未来しか見えない
テストコードを作れば済む話なら直せるけど、手遅れコードは無理

297:デフォルトの名無しさん
21/02/17 12:50:38.83 FZd5objq.net
具体性皆無
どうやって浄化(リファクタリング?)するのだか
たったの2行から嫌な予感しかしないけど、一応聞いてやろう

298:デフォルトの名無しさん
21/02/17 13:00:59.13 pFFqlpSR.net
テストコードが無いなら書けばいいじゃん
クソコードを放置して新たなクソを付け足すのもクソプログラマーだな

299:デフォルトの名無しさん
21/02/17 13:50:01.10 FZd5objq.net
>>295
クソコード呼ばわりするレベルに至る時点で、テストコードを追加して直せばいいじゃんで済むレベルじゃないと思うのだが
まぁ、俺の想像するクソコードと貴方の想像するクソコードが乖離している可能性はあるけど

300:デフォルトの名無しさん
21/02/17 14:04:39.81 DzAxBoaP.net
テストコードって学校で習わなかったなぁ

301:デフォルトの名無しさん
21/02/17 14:15:56.78 bkC92bnI.net
頭の悪いマウント合戦やってるクソスレ上げんなカス

302:デフォルトの名無しさん
21/02/17 14:24:26.00 8PenPzn3.net
晒し上げ

303:デフォルトの名無しさん
21/02/17 14:27:57.95 ty0uudwM.net
>>295
テストコードがないのに、どうやって正しいテストがわかるのかね?
テストが本当に正しいという担保はどうやって取るのかずっと聞いてる

304:デフォルトの名無しさん
21/02/17 14:35:24.50 7XrGtYbS.net
>>300
仕様があればテストコードがなくても何が正しいかわかるよね?
仕様がないなら仕様を作ればいいよね?
何が正しいかを決めればいいだけ
できない言い訳ばかりしてクソにクソを積み重ねる君たちがクソコードの現況だから

305:デフォルトの名無しさん
21/02/17 14:37:56.30 ty0uudwM.net
>>301
> 仕様があればテストコードがなくても何が正しいかわかるよね?
その仕様が正しいという担保は?
仕様が間違ってるなんてよくある話

306:デフォルトの名無しさん
21/02/17 14:47:15.95 csyh4HrV.net
はいはい、この話はやめやめ
頼むから【隔離】文字を入れた隔離スレで議論してくれ

307:デフォルトの名無しさん
21/02/17 15:11:11.02 4I2sE0QP.net
>>302
それは仕様書が間違ってるんであって仕様が間違ってるのとは違う
仕様書が間違ってると判断できる術があるなら何が正しいかわかるということ
結局テストと同じ話なんだけどあれこれ言い訳してクソを放置してるだけだよね

308:デフォルトの名無しさん
21/02/17 18:21:56.56 k81iZNBk.net
継続的イ...継続的な品質維持を破壊するようなコードを列挙していこうぜ
スレの趣旨的にはアンチパターンの研究が本来の目的だろうし
「構造が理解できないコード」とか
「責務を見失ったクラス」とか
「コピペしたような共通のコードが複数箇所あって、一部のソースを変更したら114,519箇所のコード書き直しが要求されるコード」とか

309:デフォルトの名無しさん
21/02/17 18:27:10.12 ar54zOTy.net
TDD知らんの?

310:デフォルトの名無しさん
21/02/17 18:30:50.13 k81iZNBk.net
>>306
知ってるけど流れ察しろ

311:デフォルトの名無しさん
21/02/17 18:32:30.85 8Df3qLX7.net
馬鹿が文章を書くとこうなりますの見本スレ

312:デフォルトの名無しさん
21/02/17 18:44:03.73 ltamn3iy.net
クソコード:大概が自己満足のオナニーに起因する
自動テスト:出来ているやつはホトンド居ない、なぜなら自動テストで致命的な問題が
      出てこないで後から発見されるから、セキュリティ・ホールも右に同じ
      大概が自己満足のオナニー
だが自動テストは必要悪である。テスト原理主義者はカバレッジが100%で無ければ教義に反する異端者として
処分され、変数の代入さえテストを要求するが、致命的な問題が後から発見された場合にはテストすら破壊する
破壊的なリファクタリングを必要とし、テストコードの修正と二重苦の責めを負う

313:デフォルトの名無しさん
21/02/17 18:50:55.02 dlextU55.net
>>305
視野が狭すぎてちょっと引く・・・
君みたいなプログラマーが継続的な品質維持を破壊する1番の原因

314:デフォルトの名無しさん
21/02/17 18:55:30.33 UmDM7l2a.net
>>310が空気読んでなくて引く
どう考えても継続的イとか言いかけているあたりがで、荒らしを相手にすんなという意味なのにそれを解説しないと伝わらないことに引くわ
あっ言っちゃった

315:デフォルトの名無しさん
21/02/17 18:59:25.09 JcWwc4WJ.net
>>295
テストコードがない時点でろくな仕様書がない可能性が高いと思う
コードからテストコードを作るのはめっちゃ大変だし

316:デフォルトの名無しさん
21/02/17 19:10:33.57 UlO/vFMl.net
継続的淫夢ローション

317:デフォルトの名無しさん
21/02/17 19:19:20.02 DzAxBoaP.net
>>298
1番馬鹿なのはお前

318:デフォルトの名無しさん
21/02/17 19:29:15.15 p8cob7ED.net
テストコードはあって当たり前の前提でスレタイの話がしたかった...

319:デフォルトの名無しさん
21/02/17 19:40:45.14 p8cob7ED.net
まぁ、意味のあるテストコードがあればクソコードと言われるレベルのものはなくなるけどさ、そうじゃなくて
クソコードと良いコードを知った上でテスト駆動やるべきだからこそ、クソコードの分析がしたかったよ...

320:デフォルトの名無しさん
21/02/17 20:38:23.05 ltamn3iy.net
むしろ時代の流れは既にテストコードを「書く」という流れではなく、既に外部ソフトウェアを利用して
テストする段階に来ている。これは日本では「単体」しないのですか?と受け止めれれるがそうではない。
例えばテストしづらいソフトウェアにはLinux-KernelがあるがリリースはTorvaldsが十分に安定していると
「感じ」たときにリリースされる。ではLinuxは全くテストしていないですか?と思うがそうではない。
Kernelはテストコードが書きづらいため、様々な工夫がされる。外部ツールとして静的コード分析、
継続的インテグレーションツール、テスト自動化など様々なツールが使われる。もちろん単体テストもある。
現在のソフトウェアの主流において(ランダムな引数を渡す)ファジングテストツール(Fuzzer)なども
使われる。日本では一向に使われる気配は無い(誰も使わない・知らない企業独自のプロダクトのような
自動ツールが使われるのみである)ストレステストツールは何も知らない営業のアホが書いた根拠不明の
性能要件を満たすためのツールではないのである。フェイクデータを用意してテストするのが一部では
流行っているがそれでは網羅性はない。
例えば、1ファンクション/メソッド/スコープの変数の数、分岐の数、ループ、演算子の数の増えれば
増えるほど複雑度は増大しバグが発生しやすくなるはずである。そう言った統計的な手法を見ないで
宗教のようにテストコードばかりに注目するのは悪である。

321:デフォルトの名無しさん
21/02/17 20:56:14.06 3Rkqt+9c.net
>>312
むしろテストコードがないからこそ仕様書をきっちり更新してる可能性のほうが高いやろ
それにコードからテストコードを作るのはアンチパターンだぞ

322:デフォルトの名無しさん
21/02/17 21:16:09.34 3Rkqt+9c.net
>>316
自分がクソコードだと思う例をあげて解説してみればいいんでない?
クソだと思ったものが意外とそうでもない場合もあればその逆もあるから

323:デフォルトの名無しさん
21/02/17 21:24:29.62 v0/tbLAB.net
再利用性の無いクラスは糞
お前らもあるやろ?
アプリ全体で一箇所でしかインスタンス化されないようなクラス
邪魔だなぁと思いつつも
それを書く事で若干の整理と局所化が得られるから作っちゃうようなクラス

324:デフォルトの名無しさん
21/02/17 21:48:55.78 FwS3TBTC.net
>>317
嘘つくな(笑)
オープンソースでなんか証拠持ってきてみ

325:デフォルトの名無しさん
21/02/17 22:15:44.97 ltamn3iy.net
>>321
いろいろ書いてますが、どの辺が嘘だと言っていますか?全て?

326:デフォルトの名無しさん
21/02/17 22:36:40.80 JcWwc4WJ.net
>>318
> むしろテストコードがないからこそ仕様書をきっちり更新してる可能性のほうが高いやろ
ないない、世の中にはテストコードも仕様書もちゃんとしてる組織とテストコードもないし仕様書もちゃんとしてないクズ組織しかないと思っていい
> それにコードからテストコードを作るのはアンチパターンだぞ
そんなことはみんなわかってる
やむを得ずのケースな

327:デフォルトの名無しさん
21/02/17 22:43:42.98 FwS3TBTC.net
仕様書をきっちり更新しているとして、
ちゃんとその通りにテストしたことを担保するのはどうすればいいの?
なんでこの質問に答えられないの?

328:デフォルトの名無しさん
21/02/17 22:44:31.47 FwS3TBTC.net
>>322
ソースを持ってきてない所全て


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch