X



クソコードとは何か
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
垢版 |
2021/01/30(土) 17:33:05.78ID:BjNTZWUI
このスレはクソコードとは何かを考えるスレです。

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

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

等、クソコードを見た時に「あっ、これクソコードだ」って認識する根拠を挙げていきましょう。
0004デフォルトの名無しさん
垢版 |
2021/01/31(日) 11:28:04.42ID:X7lGC0go
iostream ωωω
0007デフォルトの名無しさん
垢版 |
2021/01/31(日) 12:46:25.58ID:I1+jaQmy
. /⌒ヽ
  ∩ ^ω^) な ん だ
  |   ⊂ノ
 |   _⊃
  し ⌒.   ___
   _/ ⌒ ⌒ \ うん、うん、
  /)) (●) (●)  ヽ それで?
  |∩ (_人_)  |
  / ノ、_ヽノ_ノ ̄)
 / /      /フ_/
 L_/\    \(
0010デフォルトの名無しさん
垢版 |
2021/01/31(日) 16:33:43.28ID:Kwx3DUOx
コードとコードつなぎ合わせて一つのプログラム作ったけどごちゃごちゃでクソコードになってたw
0011デフォルトの名無しさん
垢版 |
2021/01/31(日) 16:59:37.31ID:Ti7TRi+9
function getPrice(id) {
const price = clothPrice.filter({ id }).first()
return price
}

はい、どこがクソか指摘してみて
0015デフォルトの名無しさん
垢版 |
2021/01/31(日) 17:33:42.78ID:TZSorCef
まず、このコードを見てクソだと気がつけない人相手だと、言い方が重要。
だから、説明に困ってる。
なぜ、気が付かないのかとか。
考えてるだけだよ。気がついた人は先に理由を述べてほしいが。
0016デフォルトの名無しさん
垢版 |
2021/01/31(日) 17:35:04.85ID:JUmaLjMc
>>15
相手のことはまず忘れろ。
理由を言え。

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

だから、クソ...だと思った。
0019デフォルトの名無しさん
垢版 |
2021/01/31(日) 17:46:41.31ID:JUmaLjMc
> getPrice(id) 関数とclothPrice.filter({ id }).first()
> ってやってる事は一緒だよね?

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

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

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

という会話がコードレビューであるだろうなと少しでも思ったら
それは関数にすることで可読性が上がっているということです。
0020デフォルトの名無しさん
垢版 |
2021/01/31(日) 17:57:42.08ID:TZSorCef
>>19

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

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

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

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

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

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

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

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

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

あなたに問いますけど、getPriceって誰に何の為に呼んでもらう関数だと思いますか?
0026デフォルトの名無しさん
垢版 |
2021/01/31(日) 18:06:51.44ID:JUmaLjMc
> あなたに問いますけど、getPriceって誰に何の為に呼んでもらう関数だと思いますか?

このコードではそれは書いてないのだから、そこを勝手に想像して
自分の都合の良い解釈をするのは、それ自体が間違い
0028デフォルトの名無しさん
垢版 |
2021/01/31(日) 18:13:16.87ID:TZSorCef
>>26
> このコードではそれは書いてないのだから、そこを勝手に想像して
> 自分の都合の良い解釈をするのは、それ自体が間違い

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

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

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

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

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

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

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

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

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

逆に出題に「これは商品オブジェクトです」と書いてあれば
getPriceが必要な場面を想像できます。
0042デフォルトの名無しさん
垢版 |
2021/01/31(日) 18:41:32.55ID:JUmaLjMc
>>41
わかってるから"実装を取り除いて"、実装"以外"を書いたんですが?
その質問の意図はなんですか?
0043デフォルトの名無しさん
垢版 |
2021/01/31(日) 18:43:52.76ID:TZSorCef
じゃあ、もしもですよ?出題内容が
sin関数だったらどうですか?
>>40と同じノリで答えてください。
0046デフォルトの名無しさん
垢版 |
2021/01/31(日) 18:47:29.69ID:JUmaLjMc
>>45
同じノリで答えろと言われたから、同じノリで答えただけですが?

出題に、何オブジェクトのsinか書いてないから想像できない。
数学オブジェクトのsinと出題に書いてあれば想像できます。
>>40と全く同じノリで答えましたが?
0048デフォルトの名無しさん
垢版 |
2021/01/31(日) 18:49:45.66ID:JUmaLjMc
>>47
sinという言葉には色んな意味があります。
出題に書いてないことを勝手に想像しないように
同じノリで答えてますw
0050デフォルトの名無しさん
垢版 |
2021/01/31(日) 18:54:20.45ID:uAw68cw/
面白すぎるだろこのやり取りw
最初から相手の話を聞く気がない人に説明をしても無駄無駄
0053デフォルトの名無しさん
垢版 |
2021/01/31(日) 18:59:23.14ID:uAw68cw/
sin関数は一目で具体的な用途が判るが、getPriceはそうじゃないし使い勝手もイマイチだって言いたいんだろ
察してやれ
0054デフォルトの名無しさん
垢版 |
2021/01/31(日) 19:00:26.13ID:JUmaLjMc
>>50
ずっと答えてますが?

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

厳密な定義ができるのはプログラマの能力の一つでしょう
0055デフォルトの名無しさん
垢版 |
2021/01/31(日) 19:01:36.35ID:JUmaLjMc
>>53
だから、getPriceには出題に書いてないからわからない。
これが商品オブジェクト、 product.getPrice() と
出題に書いてあればわかると答えたんですが?
0058デフォルトの名無しさん
垢版 |
2021/01/31(日) 19:05:57.07ID:JUmaLjMc
>>56
俺の答えが正解っていいたいのか?w

俺が答えを言ってから、後出しで同じだって言うなよwww
0059デフォルトの名無しさん
垢版 |
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()は何やってるの?」という質問が出るのであれば
それを関数にすることで可読性が上がるのです。中で何をやってるかは
意識させないようにするのが正しい設計です。
0061デフォルトの名無しさん
垢版 |
2021/01/31(日) 19:24:32.72ID:JUmaLjMc
コードはクソじゃないですが?
出題に書いてないって言うのは、出題がクソという意味ですが?

いい加減諦めたら?w
0065デフォルトの名無しさん
垢版 |
2021/01/31(日) 19:28:30.31ID:TZSorCef
おかえり
もう、疲れたよパトラッシュ...

ところで、パトラッシュ、答えが知りたいな
0070デフォルトの名無しさん
垢版 |
2021/01/31(日) 19:35:18.81ID:Ti7TRi+9
一応俺の想定では>>22が正解
ただ俺はデメテルの法則違反とか知らんから色々勉強になった
一概にこれが正解とは言えないんだなーと
0072デフォルトの名無しさん
垢版 |
2021/01/31(日) 19:37:21.40ID:JUmaLjMc
>>71
それはgetPriceが属するオブジェクトによる
一概にそう言えないし、それは出題に書いてない
0076デフォルトの名無しさん
垢版 |
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;
}

}

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

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

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

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

オブジェクト指向(キリッ)とか言いつつ、完全にオブジェクト指向の本質を無視したプログラムでした。
0088デフォルトの名無しさん
垢版 |
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() ){}

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

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

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

言われてコードを書いてるだけで、その理由を知らないんだな
0092デフォルトの名無しさん
垢版 |
2021/01/31(日) 23:37:56.79ID:JUmaLjMc
自分か継承をしたことがないからって
クソコードというのはコードの話をしてない
自分の経験の話になっている
0099デフォルトの名無しさん
垢版 |
2021/02/02(火) 15:18:13.00ID:mk8gJgM8
>>11
コードの良し悪しは用途と仕様が不明確ならまともな判断はできないから
どちらもわからない状態じゃコーディングプラクティスの指摘だけになる

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

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

なんなんだこのスレは
0102デフォルトの名無しさん
垢版 |
2021/02/02(火) 18:53:57.65ID:7of77oce
>>101
国語の問題と科学の問題は分けて考えないといけない
実際、顔を赤らめた理由は風邪だったかもしれないわけだ
0108デフォルトの名無しさん
垢版 |
2021/02/02(火) 20:57:02.78ID:LnwudBv/
脳にコロナが沢山います
0109デフォルトの名無しさん
垢版 |
2021/02/02(火) 21:30:20.78ID:IyiGSAGP
>>11はせっかくお題を出してくれたんだから建設的に行こうや
あら探ししてても成長が無いぞ

> getPrice(id)

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

> clothPrice

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

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

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

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

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

このスレみてたら、こんなのが思い浮かんだ
議論をもとに戻す前に、二度とこんな書き込みすんなと警告しとく
0124デフォルトの名無しさん
垢版 |
2021/02/04(木) 18:32:23.89ID:DKUfS2zw
>>120
俺も理解できん
0128デフォルトの名無しさん
垢版 |
2021/02/04(木) 19:04:30.45ID:7BpvnZAj
sin関数のくだりは、明らかにMathオブジェクトだとわかるものを持ってきて
それと同一視させようとしてるから、>>43がアホなだけ
0129デフォルトの名無しさん
垢版 |
2021/02/04(木) 19:56:09.47ID:plfmR7iV
ム板拡張版ってw
まぁ、時々、該当しそうな人を見かけるけどさw

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

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

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

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

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

どういう関係なの? 後者は前者に渡されるコールバック関数?
0132デフォルトの名無しさん
垢版 |
2021/02/05(金) 20:30:02.05ID:sQbQrry7
位置情報とか必要な時だけは渡すが、終わったら絶対にアプリを落とすようにしてる
0134130
垢版 |
2021/02/06(土) 00:28:38.26ID:rZdEmaWa
>>131
後者は前者を呼んだ後、HTTPレスポンスが返ると引数に渡された関数型が呼ばれる

前者の結果を非同期で受け取るイメージ
0137デフォルトの名無しさん
垢版 |
2021/02/09(火) 17:43:42.15ID:oXbJA4gd
httpレスポンス(Json)に1個、新しい項目を追加したらプログラムの書き直しが20箇所近くで発生してワロタ
無駄なラッパーによる地獄の変更作業
0139デフォルトの名無しさん
垢版 |
2021/02/10(水) 23:05:34.63ID:PXY5WDG2
1万行のメソッド
巻物のような一本モノシーケンスで途中の幾多のエラーチェックの度にいろんなフラグを立てまくり、最終的に最後の行まで到達してから関数冒頭で行なったエラーチェック結果を参照、結局エラーでしたで終了
しかもユーティリティクラスのメソッド
0142デフォルトの名無しさん
垢版 |
2021/02/12(金) 00:11:29.55ID:jyO5hUn0
テストコードって必要?
0143デフォルトの名無しさん
垢版 |
2021/02/12(金) 00:17:10.35ID:tz+82o+A
テストコードがないプロジェクトなんて見たことないレベル
まともにメンテナンスが続いてるソフトで探してみ
0145デフォルトの名無しさん
垢版 |
2021/02/12(金) 07:51:11.85ID:kUMRCn77
自社開発のパッケージ製品作ってんだけどテストコードって書いたことないんだよね
自分自身の学習コストはともかくメンバーの学習コストが怖くてね
0147デフォルトの名無しさん
垢版 |
2021/02/12(金) 12:30:09.75ID:qfo2XcRz
>>142
ちょっと前までテストコードの無い会社で働いてたけど、地獄だったよ

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

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

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


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

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

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

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

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

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

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

コードを修正するたびに全テストを実行できる
それと同じことをやってみ?できるんか?
0163デフォルトの名無しさん
垢版 |
2021/02/12(金) 23:26:11.51ID:0z7QwFq3
>>162
エクセルに貼り付ける時にミスする可能性がある
エクセルに記録されるのは結果だけで
その手順が記録されない
0164デフォルトの名無しさん
垢版 |
2021/02/12(金) 23:26:33.56ID:0z7QwFq3
>>161
> 対象コードよりヤバイときのが大半やん
当たり前だろ。なんでその事がわからないのさ?
0165デフォルトの名無しさん
垢版 |
2021/02/12(金) 23:31:57.56ID:P801lvm7
てか、君が思ってるほど
無駄にコストかけられないんだよw

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

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

お前が言うようにコードよりもテストのほうが多くなるぐらいなのに
そのテストに時間がかかる方法を使っていたら
何度もテストできねーだろ
0172デフォルトの名無しさん
垢版 |
2021/02/13(土) 00:03:54.30ID:xw8mV6Gs
>>170
うーん、お前馬鹿なのかな?

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

手動でやるのが大変だからそれを減らすって話を
してるってその時点で理解できてないの?
0173デフォルトの名無しさん
垢版 |
2021/02/13(土) 00:04:38.64ID:xw8mV6Gs
>>171
じゃあもうお前の仕事なくなるじゃんw
自分でお金にならないような仕組みにしておいて
仕事なくすとかアホだなぁ
0175デフォルトの名無しさん
垢版 |
2021/02/13(土) 00:18:40.61ID:xw8mV6Gs
>>174
本気で頭が悪そうw

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

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

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

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

どっちが速いかって、明らかにテストコードじゃんw
0190デフォルトの名無しさん
垢版 |
2021/02/13(土) 00:32:35.09ID:xw8mV6Gs
テストコード不要って言ってるやつは
手動のテストにかかる時間を考慮してないってのがわかったなw
0192デフォルトの名無しさん
垢版 |
2021/02/13(土) 00:33:38.50ID:xw8mV6Gs
テスト作業の時間を減らすためにテストコードを書くってことを
理解してないってのが驚きだったわw
0193デフォルトの名無しさん
垢版 |
2021/02/13(土) 00:35:20.12ID:xw8mV6Gs
>>191
手動のテストは時間がかかるよ

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

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

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

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

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

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

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

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

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

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

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

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

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

テストコードがないと何千回(例 1日15回×3ヶ月)とかテストやってられない
テストコード書いて90%のバグを修正していれば
何日もかかるような手動テストは10%だけでよくなる
バグ修正時のエンバグも防げる
0228デフォルトの名無しさん
垢版 |
2021/02/15(月) 01:20:08.98ID:89MhGAsi
>>226
でそのテストコードは何故必ず正しいと言えるの?
そもそもまともなコード書ける人は単体なんかやる必要無いんだよね
その後のテストは結局手動やろ
0230デフォルトの名無しさん
垢版 |
2021/02/15(月) 04:33:13.60ID:uhj1tPkS
>>228
正しいと言えるかどうかじゃなくて、
やったテストがちゃんと再現できるのが重要

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

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

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

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

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

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

> その程度の脳だから底辺プログラマーから抜け出せないのだよw
→お前だろ
0242デフォルトの名無しさん
垢版 |
2021/02/15(月) 17:45:20.19ID:PMcPEWsf
>>231
> エビデンス(エクセルにスクショ貼り付け)とってその後Gitに更新がなければそれで終わりや

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

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

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

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

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

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

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

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

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

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

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

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

もし、これでテスト済みのフレームワークであるRailsやAndroid SDK、Django、Electron等を使ってたら嗤う
まぁ、フレームワークを一切使わない上、単体テストもしないとかだったらもっと嘲笑ってやるが
0277デフォルトの名無しさん
垢版 |
2021/02/16(火) 17:52:58.50ID:+kNhNUJJ
>>270

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

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

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

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

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

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

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

手動テストの欠点は

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

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

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

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

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

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

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

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

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

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

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

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

あっ言っちゃった
0312デフォルトの名無しさん
垢版 |
2021/02/17(水) 18:59:25.09ID:JcWwc4WJ
>>295
テストコードがない時点でろくな仕様書がない可能性が高いと思う
コードからテストコードを作るのはめっちゃ大変だし
0316デフォルトの名無しさん
垢版 |
2021/02/17(水) 19:40:45.14ID:p8cob7ED
まぁ、意味のあるテストコードがあればクソコードと言われるレベルのものはなくなるけどさ、そうじゃなくて

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

> それにコードからテストコードを作るのはアンチパターンだぞ
そんなことはみんなわかってる
やむを得ずのケースな
0324デフォルトの名無しさん
垢版 |
2021/02/17(水) 22:43:42.98ID:FwS3TBTC
仕様書をきっちり更新しているとして、
ちゃんとその通りにテストしたことを担保するのはどうすればいいの?
なんでこの質問に答えられないの?
0326デフォルトの名無しさん
垢版 |
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 する
0327デフォルトの名無しさん
垢版 |
2021/02/17(水) 23:03:43.66ID:3Rkqt+9c
>>323
>そんなことはみんなわかってる
>やむを得ずのケースな

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

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

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

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

これをどうやって防ぐの?
0332デフォルトの名無しさん
垢版 |
2021/02/17(水) 23:19:39.55ID:FwS3TBTC
>>330
論点をすり替えて答えた気になるなって言ってるだけ

「手動テストでどうやってちゃんと書いてあるとおりにテストしたと担保するの?」
0333デフォルトの名無しさん
垢版 |
2021/02/17(水) 23:24:26.28ID:ltamn3iy
こいつは相手にしちゃダメな人だったか、テスラでもトヨタでも自動運転のテストを公道でやってますが
担保するために何をやっているかと言えば色々な現実的な状況や環境、人の動きなど特殊な例外パターンを
実地でチェックシートを用意してテストしてます。コードを書いて自己満足しているわけではありません。
そもそも自動運転というか自動学習のようなモデルでは何が正しいのかを定義することさえ困難です
「論点をすり替えて答えた気」といっていますがあなたが何を「論点」としているのか、まったくもって
説明していません。とても残念な方だと思いますが同僚や仲間には迷惑をかけないようにしましょう
0334デフォルトの名無しさん
垢版 |
2021/02/17(水) 23:26:31.02ID:FwS3TBTC
>>333
だから論点すり替えるなって言ってるだろ
自動運転の話なんかしてないんだわ

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

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

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

「完璧に記録するにはどうすればいいですか?」という質問に対して
「結果を記録します」は答えになっていません。
それが質問です。
0339デフォルトの名無しさん
垢版 |
2021/02/18(木) 00:04:06.22ID:uiIjzHNM
>>336
> 自動テストだと手動テストでできない説明ができるって?

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

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

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

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

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

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

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

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

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

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

また頻繁に変更が入るコードで何度も同じテストを実行することはありますが、変更が入らないコードでは
同じテストを実行する事は無駄です。一部のツールはテスト結果で省略すらします。
自動vs手動という考えはあんたの頭の中にしかない初めて披露された考えです。この両者は対立構造では
ありませんし、ましてや勝つとか負けるとかどーでもいい事です。それがマウントと言っているのですよ
0354デフォルトの名無しさん
垢版 |
2021/02/18(木) 00:48:39.39ID:uiIjzHNM
>>353
それはシートベルトでは衝突事故は防げないだろ論法?w

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

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

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

後からテストコードが追加されたことがあるからといって、
それはテストファーストしてない理由にはならない
0363デフォルトの名無しさん
垢版 |
2021/02/18(木) 00:59:52.93ID:unHOG45Z
>>362
だってないもん
単体テストなんか仕様書ビルドしてできたわけでもねーのにそんな正しさがいきなり入る前提なのが気が狂ってる
0365デフォルトの名無しさん
垢版 |
2021/02/18(木) 01:01:59.98ID:uiIjzHNM
>>363
ああ「正しさ」だけ書いて論点をすり替えようとしてるのねw

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

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

一体何時間時間がかかると思ってるんだ
0370デフォルトの名無しさん
垢版 |
2021/02/18(木) 01:08:25.16ID:uiIjzHNM
だから手動テストでは
もう一回やったら再現できませんでしたとか
ちゃんとテストしたのに実際は動きませんでした
とか発生した時に、その原因の追求ができない

うごくからヨシっていう
適当な仕事をしてる
0371デフォルトの名無しさん
垢版 |
2021/02/18(木) 01:09:01.59ID:uiIjzHNM
>>369
その分るやり方を書けよw
お前議論できねーな

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

手動テストでは、何が書いてあっても
実際にどういうテストをやったかがわからない
人間が間違えたかもしれないって話をしてるのだが
ついてこれてる?
0376デフォルトの名無しさん
垢版 |
2021/02/18(木) 01:12:02.27ID:uiIjzHNM
>>373
> 自動テストだって同じでしょ?

なにが同じなんだよ?

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

なんでテストコード書く必要あったんだっけ?
0383デフォルトの名無しさん
垢版 |
2021/02/18(木) 01:16:06.06ID:uiIjzHNM
>>379
いい加減「正しい」の意味をすり替えるのやめろ

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

逃げてしまったのか
0393デフォルトの名無しさん
垢版 |
2021/02/18(木) 06:54:09.45ID:qR1rH4Mn
テストの内容(文章 or コード)が、仕様書通りかは、手動テストも自動テストもわからない
この勝負はドロー(引き分け)


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

この勝負は自動テストの勝ち
0395デフォルトの名無しさん
垢版 |
2021/02/18(木) 08:22:53.92ID:qR1rH4Mn
>>394
テストコードのテストというのは意味不明
お前の理屈だと、テストのテストが必要になるだろ
テストのテストのテストも必要になるだろ
アホらしい

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

この勝負はドロー

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

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

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

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

ルビきちパターン
0403デフォルトの名無しさん
垢版 |
2021/02/18(木) 12:21:36.18ID:2k7+F3J5
>>320の"再利用性の無いクラスは糞"でトライしてみたんだろうけどペラすぎて役に立たないから誰も反応しない
0404デフォルトの名無しさん
垢版 |
2021/02/18(木) 12:27:34.11ID:nrHJXjYu
そう?
むしろさり気なくanemic domainの話をしてる奴らがいたから、良スレの予感したのに一人の馬鹿が荒らした挙げ句に単体テストの必要性の有無とかいう低レベルスレになってがっかりしてる俺がここにいるけど?

内容がペラいってか、本当の経験者なら察せるし、一言二言から深堀すればいいのに
0406デフォルトの名無しさん
垢版 |
2021/02/18(木) 12:55:48.46ID:nrHJXjYu
ペラいとか言うけど、そもそも>>320の言ってることわかる?
他人を批判する前に貴方の実力チェックがしたいのだが、なんで再利用できないクラスがクソなのかわかる?
0407デフォルトの名無しさん
垢版 |
2021/02/18(木) 14:03:58.21ID:d72Uy3wC
>>406
>なんで再利用できないクラスがクソなのかわかる?

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

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

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

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

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

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

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

なんで、回路構成変わるたびにいちいちUSBのロジックを実装しなきゃなんねーんだよクソがって言いたい
0418デフォルトの名無しさん
垢版 |
2021/02/18(木) 18:40:52.03ID:uVIafMoc
>>417
なんで修正しないの?
staticなメソッドとメンバーのみを使うとしても必要なところを入れ替えるように作れるでしょ
0419デフォルトの名無しさん
垢版 |
2021/02/18(木) 18:56:01.13ID:z09WEaLy
トイレ行っていい?
0420デフォルトの名無しさん
垢版 |
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
ご自由に
0422デフォルトの名無しさん
垢版 |
2021/02/18(木) 20:13:35.08ID:qR1rH4Mn
>>421
何度も言ってるが
仕様書通りのテストコード(or テスト手順書)になってるかはレビューで確認する
その点ではテストコードも手動テストの手順書も差はない

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

>>421
なにか言い返す言葉があるならどうぞ
0423デフォルトの名無しさん
垢版 |
2021/02/18(木) 20:54:43.88ID:Tudb2iMs
>>420
インスタンス化しとるやーん

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

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

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

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

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

当たり前だろ
お前コードレビューをするのは当然として、
お前、テスト手順書のレビューしないのか?
だからお前がやったテストはいつも抜けがあるんだろうがw
すいません、テストが漏れてましたじゃねーよ、いっつもいっつも
0435デフォルトの名無しさん
垢版 |
2021/02/19(金) 02:59:07.17ID:lLyiEvh3
>>434
お前の真似をすると
テスト手順書のテストもいるよね?

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

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

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

途中からこのスレ来たから、流れがわかっていない
0443デフォルトの名無しさん
垢版 |
2021/02/19(金) 08:54:08.49ID:f7HYpZpv
>>438

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


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

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

え?なんで?

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

↑馬鹿じゃね?
0454デフォルトの名無しさん
垢版 |
2021/02/19(金) 12:30:35.44ID:F46jrkhY
敢えて皆と同じくらいテストコードの書き方を知ってる自分が弁護するけど

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

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

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

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

テストコード厨呼ばわりについては...うん(諦め)
0455デフォルトの名無しさん
垢版 |
2021/02/19(金) 12:34:28.76ID:RipgTCDE
>>454
テストコードが無駄なケースでは
手動テストも無駄になる

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

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

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

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

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

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

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

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

プロの仕事じゃねーよ

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

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

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

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

ああ、いや、エクセルに単体テスト報告書を書くとか
そういう意味でなら単体テストをやってるよw
テストコードを書かない手動テストのことをSIerは単体テストって言ってる
0476デフォルトの名無しさん
垢版 |
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には障害数も書くのでバグゼロは困るらしい
0477デフォルトの名無しさん
垢版 |
2021/02/19(金) 19:04:03.28ID:uscWUjsm
田中勇←口だけテストコード大好き変態老人
技術力はゼロwww
0478デフォルトの名無しさん
垢版 |
2021/02/19(金) 19:19:27.73ID:2/3+b4qC
>>476
まあそういうテストが必要なフェイズは確かにあるが、その前に自動テスト入れるべきではある。
0479デフォルトの名無しさん
垢版 |
2021/02/19(金) 19:33:50.76ID:RipgTCDE
>>478
どちらにしろ手動テストするなら
全部、手動テストでやっても同じ
テスト時間も変わらない

と思ってるらしいよw
0481デフォルトの名無しさん
垢版 |
2021/02/19(金) 20:45:17.65ID:B4GlCKY0
>>473
Ruby on Rails では、minitest/RSpec という2種類のテストフレームワークがある。
単体/システムテストの2つある

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

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

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

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

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

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

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

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

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

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

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

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

ってなるとやっぱり重要なのって結合なんだよね
デバイスと絡んだ値があるとこはすんなりいかないことが多い
0496デフォルトの名無しさん
垢版 |
2021/02/20(土) 02:33:03.30ID:56yjs2OO
>>494
それ実機でテストする段階にならないとわからないことなの?

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

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

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

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

テストダブル・・・上記の総称
0499デフォルトの名無しさん
垢版 |
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 の値を作り出すことができる

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

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

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

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

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

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

テストしてないんだろ?いくつ値あると思ってんねん(笑)
0508デフォルトの名無しさん
垢版 |
2021/02/20(土) 10:06:03.68ID:xSEyIqRP
>>506
だからお前はモックを使わないで
全部手動で膨大な時間をかけてやるんだって話してるんでしょ?

あ、テストしてないんだっけ?w
プロの仕事じゃないなぁ
0509デフォルトの名無しさん
垢版 |
2021/02/20(土) 10:07:47.77ID:xSEyIqRP
>>507
複雑なのはたくさん値があってその組み合わせが膨大だから
手動テストも、その組み合わせをテストしないといけない
時間がかかって現実的だからテストしないって言ってる?
手動テストはテストをしないこと・・・意味がわからんw
0510デフォルトの名無しさん
垢版 |
2021/02/20(土) 10:24:31.88ID:MdDLRkGY
>>498
ありがとうございます。だけどプロトコルバッファーなどgRPCで生成されるコードにもStubって使うので
もう全部Stubで広義的にはいいじゃんって思います。付加機能があったり、ライフサイクルが複雑であって
テストコードの話に限定できてメインソースじゃない単語だと「モック」と言われてるような気もします。
先輩が見てるといけないので、先輩が嫌いな訳じゃないです、モックモックモックいうのはイライラするので
やめてほしいです。ここで「手動テストは○○○(否定表現)」を連呼する人が先輩に似てます。
0512デフォルトの名無しさん
垢版 |
2021/02/20(土) 10:37:02.86ID:MdDLRkGY
もうこの際だからハッキリ言うと、先輩、それ誰も知ってるから鬼の首を取ったように言われても
ぼくらは困惑ばかりです。正直ウザいです。みんなから嫌われてます
0513デフォルトの名無しさん
垢版 |
2021/02/20(土) 10:49:31.96ID:EvFy/+SD
でもそこまで作って尚まだ単体テストなんだぜソレw
ぜってーねーよw
もう繋げてテストしようよw
無駄だよw
0514デフォルトの名無しさん
垢版 |
2021/02/20(土) 10:51:50.41ID:xSEyIqRP
なんだ?今まであれだけ言い返してたのに
今度は何も言い返してないではないかw
0516デフォルトの名無しさん
垢版 |
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クラスはワイ理論ではもっとも再利用性の有る優れたクラス
0517デフォルトの名無しさん
垢版 |
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
0519デフォルトの名無しさん
垢版 |
2021/02/21(日) 21:30:03.47ID:IppcSdfg
再利用できないコードの特徴
・凝集度が低い
・結合度が高い

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

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

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

>>507
複雑なのはたくさん値があってその組み合わせが膨大だから
手動テストも、その組み合わせをテストしないといけない
時間がかかって現実的だからテストしないって言ってる?
手動テストはテストをしないこと・・・意味がわからんw
0524デフォルトの名無しさん
垢版 |
2021/02/22(月) 02:33:01.98ID:ESOE+x1C
いや、流石にハードの動作知らんやつが設定値7に対して6.997で止まることを想定できんやろ
どんな組み合わせをやっても無理なはずやで
テキトーなことを言うな
0526デフォルトの名無しさん
垢版 |
2021/02/22(月) 03:09:12.22ID:PA6Gvk4i
ここまでをまとめると、自動テストは暇なら書く程度の価値
って事でおk?
0527デフォルトの名無しさん
垢版 |
2021/02/22(月) 05:42:49.54ID:Vv8+u1qd
手動テストに膨大な時間がかかるので
自動化してもっと価値が高いことに時間を使いましょうって話だよ
0528デフォルトの名無しさん
垢版 |
2021/02/22(月) 05:49:19.42ID:PA6Gvk4i
手動テストに膨大な時間なんかかからないと思うんだが
そもそも
その時間まで積んだうえの開発コストだと思うんだが
0529デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:03:54.54ID:2p9yrjmm
コロナウイルス→鳥インフルH5N8→人

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

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

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

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

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

ローカルでは一部のテストだけを行えばいいが
CIで自動的に全テストを行うのは普通の話だ
そこまでの高い信頼性を手動テストでやってるか?
0534デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:41:49.22ID:PA6Gvk4i
自動テストで完結しないのに、議論に値しないだろ
0535デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:42:47.10ID:Vv8+u1qd
>>534
論点はどれだけ時間を減らせるかだ
手動でしかできない部分だけ手動でやる
自動でできる部分も含めて全部手動でやる
どちらが時間がかかるか言うまでもないな
0536デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:42:57.10ID:PA6Gvk4i
自動テストはヒマなら書くレベルの価値しかない
0537デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:43:52.26ID:Vv8+u1qd
>>536
話し終わってねーだろw
手動テストが時間がかかるという話が出た途端
なぜそれまでの話をなかった事にするんだ?www
0538デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:45:01.26ID:PA6Gvk4i
自動テスト書くくらいなら他の仕事やれよ
単価テスターの6倍とかなんだから
0540デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:46:59.64ID:PA6Gvk4i
>>539
それはアリ、でもそんな現場は無い
0542デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:48:33.24ID:PA6Gvk4i
プログラム分からないほうがテスターとして価値ある
時々すごい操作するし
0543デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:49:22.93ID:PA6Gvk4i
メンテしなくなる自動テストのエレジー
0544デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:51:06.89ID:PA6Gvk4i
もう丸1年くらいテストコード見てない
0546デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:51:53.08ID:PA6Gvk4i
ヒマなら書いたほうが良いのは認めてる
0547デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:52:54.59ID:PA6Gvk4i
社員じゃないんで書きたくないというのもある
0548デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:53:42.35ID:wMwiRJvv
自動テスト書いた方が早いことは自動テスト書きながら開発してるやつなら分かると思うんだ
0549デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:54:15.04ID:PA6Gvk4i
エンドが書けば良いと思うんだが・・オナニーと大して変わらないんだから
0550デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:57:07.17ID:PA6Gvk4i
SwaggerとかでAPI自動生成される場合は書いたほうが良いな
0551デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:58:12.31ID:Vv8+u1qd
自動テストを書く時間まで積んだうえの開発コストだと思うんだが?w
手動でテストをすると、その開発コストが大きくかかる
0552デフォルトの名無しさん
垢版 |
2021/02/22(月) 06:59:23.38ID:PA6Gvk4i
手動テスト要らないプロジェクトを知らない
0553デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:00:39.66ID:Vv8+u1qd
手動テスト要らないなんて一言も言ってないよな
自動テストを書く時間まで積んだうえの開発コスト
全部手動でテストをすると、その開発コストが大きく跳ね上がる
0554デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:02:05.20ID:PA6Gvk4i
>>553
そんな事ない、テスト観点の洗い出しが変なだけ
0555デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:03:27.97ID:Vv8+u1qd
>>554
テスト観点の洗い出しが良くなれば
同じ件数のテストを手動で早く実行できるという
理由を言ってみて

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

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

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

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

事前準備の手順があって結果のデータを見比べて
画面を注意深く観察してスクショとって
チェック表にチェック入れるんだろ?
1分でも短いかな?
0563デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:08:56.10ID:PA6Gvk4i
暇ならテスト書いていいんじゃない
0564デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:10:09.10ID:Vv8+u1qd
暇だからという理由で手動テストをしてたのか?
手動テストをやめれば暇になるぞwww
0565デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:10:31.54ID:PA6Gvk4i
開発工数30日とかテストなんか書けるかハゲ
0567デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:11:58.72ID:PA6Gvk4i
巷には短納期かつトラブル案件だらけ
0569デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:12:50.79ID:PA6Gvk4i
悠々とテストコード書ける案件やりたいな
0570デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:13:46.16ID:Vv8+u1qd
テストコード書く時間がないなら
それよりももっと時間がかかる手動テストやれるわけがないので
テストサボってるだけなんだろうな
0571デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:14:21.10ID:PA6Gvk4i
テストコード工数を認めてもらえる案件やりたいな
もう単体テストはエンドでやる、みたいなのばっかり
0572デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:15:19.40ID:PA6Gvk4i
そして仕様変更が来る
0573デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:16:26.70ID:PA6Gvk4i
エージェントが20%とか抜いてるからエンドがコストにシビアすぎる
0575デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:18:22.62ID:PA6Gvk4i
もう60日以上の案件久しくやってないな
0576デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:18:33.25ID:Vv8+u1qd
プロジェクトの炎上具合を測れるな
自動テストがないプロジェクトは短納期かつトラブル案件
0577デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:19:07.55ID:PA6Gvk4i
自動テストとか暇な案件が羨ましいわ
0578デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:19:23.92ID:Vv8+u1qd
自動テストを書いてないやつは、60日以上の案件をやらせてもらえないらしい
0579デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:20:34.85ID:PA6Gvk4i
自動テストあるのにメンテしてなくて炎上するケースが50%くらいある
ずっと自動テスト工数割いてくれよ
0580デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:21:38.82ID:PA6Gvk4i
60日以上の案件がほぼ無い
0581デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:22:34.66ID:PA6Gvk4i
120日半年くらいあればなぁ
0582デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:22:48.08ID:IPejWs3O
>>533
最近の単体テストツールは影響がないテストコードを実行しないものが多くある
0583デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:23:43.26ID:PA6Gvk4i
他人の書いたテストコードのメンテが辛いのは分かる
0584デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:27:46.33ID:PA6Gvk4i
メソッドを今流にメンテしたらテストコード通らないからギリギリまでママにされていて大規模改修とかやめてくれ
0585デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:29:23.41ID:PA6Gvk4i
テストを直すのがめんどくさい時が多々ある
やめてくれ
0586デフォルトの名無しさん
垢版 |
2021/02/22(月) 07:52:25.48ID:PA6Gvk4i
テストコードとか書かないに限るな
0587デフォルトの名無しさん
垢版 |
2021/02/22(月) 08:29:30.69ID:UqVKWzXS
平日にID真っ赤にする手動テストおじさんはNGしとけ
無視して俺らと会話しようぜ
仕事してるからレスは少なくなるけど
0588デフォルトの名無しさん
垢版 |
2021/02/22(月) 18:49:35.65ID:/OsI7R0n
本日の職場で見たクソコード

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

}

なんで12個のインタフェース継承してるの?
円卓の騎士かな?
Androidで発生するイベント全部、1個のアクティビティに継承して実装するのやめてください実装者が死んでしまいます
0592デフォルトの名無しさん
垢版 |
2021/02/23(火) 13:39:35.37ID:q1iKZVvs
>>559
そのテストコード書くのにかかった時間は仕様変更によりすべて無駄になる世界があるんよ、君はまだ世界の広さを知らない
0594デフォルトの名無しさん
垢版 |
2021/02/23(火) 16:14:44.38ID:5BmsWjYf
こいついっつもテストする時間のことを無視するよなw

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

バグ5個見つかったらそれで終わりじゃん
0605デフォルトの名無しさん
垢版 |
2021/02/23(火) 18:33:09.14ID:0iI/BmGY
flutterとかJITでガンガン テスト→修正→リファクタリング を繰り返すからテストコード要らないんだよね。
0606デフォルトの名無しさん
垢版 |
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.
0607デフォルトの名無しさん
垢版 |
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


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

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

統合テストはメンテナンスコストが悪くて遅いんだよね
0609デフォルトの名無しさん
垢版 |
2021/02/23(火) 20:57:27.28ID:0iI/BmGY
テストコードは暇なら書くレベルの価値しかない
AppleもGoogleも特に推奨してないし
0611デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:03:22.33ID:0iI/BmGY
>>610
それ言うなら「議論に」かな?
日本語を勉強しよう!
0613デフォルトの名無しさん
垢版 |
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.
0614デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:05:55.00ID:0iI/BmGY
テストコード自動生成ツールとかあったな・・
今どこいったんだろ・・
0615デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:07:29.73ID:5BmsWjYf
>>614
使えないものは消えるだけの話
自動テストに、テストコード自動生成とかいう眉唾ものは必要ない
0616デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:08:51.50ID:0iI/BmGY
>>613
どこで推奨してる?五万とあるプラグインのほとんどにテストコード無いけど。
0618デフォルトの名無しさん
垢版 |
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.
0619デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:11:47.89ID:0iI/BmGY
>>617
推奨はしてないね。
0621デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:13:16.46ID:0iI/BmGY
テストコード書け、ってwarningでも見たことないし
0623デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:15:40.93ID:0iI/BmGY
つまり暇なら書くレベルなんだよ。
「テストコード工数が嵩んで納期を守れません」
なんてPJ無いし。
0625デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:16:58.40ID:H7g3tUGv
>>623
根拠は?
俺はURL示したけど
あと、Developerサイトに書いてあることが推奨じゃなかったらなんなの?必須?
0626デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:18:00.51ID:0iI/BmGY
Xcodeとかでもテストコードカバレージ出るけどエラーになるかな・・
0627デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:20:06.97ID:0iI/BmGY
>>625
そのURLは自動テストはこうやったら良いですよ。っていう紹介ページだよ。
秋葉原のテスト専門会社に出したほうがトラブル少ないし安いし。
0628デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:21:23.76ID:0iI/BmGY
自動テストは暇ならやればいいよ。
0629デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:23:33.72ID:5BmsWjYf
>>627
手動テストはこうやったらいいよっていう紹介はないんですね
やっぱり紹介するに値しないものだからなんでしょうね
0630デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:24:44.69ID:0iI/BmGY
>>629
その意見はなんかズレてる気がするけど・・ジジイ?
0631デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:26:29.19ID:luu761LB
>>630
そいつ田中勇だよ、相手にするな
0632デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:26:51.74ID:H7g3tUGv
> そのURLは自動テストはこうやったら良いですよ。っていう紹介ページだよ。
> 秋葉原のテスト専門会社に出したほうがトラブル少ないし安いし。

TDD知らないの?
0634デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:28:52.26ID:zrvRgTjD
>>632
あ、もういいです。テストコードは基本書きません。
暇なら適宜書きます。
0636デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:37:27.80ID:ruTDgDI5
ほんとこいつまじうぜぇ
0637デフォルトの名無しさん
垢版 |
2021/02/23(火) 21:55:00.29ID:zrvRgTjD
>>602
で、結論が出てるので自動テストの話は終了するか自動テストスレを立てて下さい。
0638デフォルトの名無しさん
垢版 |
2021/02/24(水) 01:17:48.29ID:edAGB3A3
モジュール仕様書って作る?javadocみたいな
cだから開発環境では作ってくれなくて、自前で用意するしかなさそうな雰囲気なんだけど自動生成してくれるツールとかない?
0640デフォルトの名無しさん
垢版 |
2021/02/24(水) 05:41:22.24ID:IL+ryHZw
>>634
テストコードを書いてないあんたが忙しいというのはよくわかった
自動テストをしてないプロジェクトが炎上するのはよく聞く話だ
やっぱり忙しくなるんだね
0643デフォルトの名無しさん
垢版 |
2021/02/24(水) 07:50:22.37ID:cUgjNbyW
>>640
おまえ死ねよ、しつこいよ
0646デフォルトの名無しさん
垢版 |
2021/02/24(水) 18:26:31.18ID:FKCMCStr
職場のクソコード

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

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

上司が勝手に外注に丸投げして作らせたコードが、プロジェクトメンバーでもない筈の俺の手元に何故か回ってきて発狂中
0649デフォルトの名無しさん
垢版 |
2021/02/25(木) 06:46:12.65ID:zWIoETxB
コメントを無駄に装飾するのやめてほしいわ
2行以上の全コメントが枠で囲ってあんの
0650デフォルトの名無しさん
垢版 |
2021/02/25(木) 07:39:27.32ID:tKZpxD44
ポインタで挫折するってよく言われてるけど
アドレスの意味がわかってないだけ
int a = 1;
int* b= a;
a = 2;
int c = *b;
これでcに2が入ってないことがわからないとか論外だろ
0654デフォルトの名無しさん
垢版 |
2021/02/25(木) 09:18:01.68ID:2DtRWZ66
>>653
何か知らなくても仮定することできるよ
ブラックホールがあるとしても僕たちが吸い込まれることを恐れることはない、のように
0655デフォルトの名無しさん
垢版 |
2021/02/25(木) 09:18:59.00ID:2DtRWZ66
知ってるってことだけでマウンティングしようとしてるアホが君だよ、浅はかなのだよ
0657デフォルトの名無しさん
垢版 |
2021/02/25(木) 09:22:15.80ID:2DtRWZ66
テスト手順書という言葉は君の造語だと僕は思ってるけどね、一般的なものだとは思えない
0661デフォルトの名無しさん
垢版 |
2021/02/25(木) 09:37:40.49ID:2DtRWZ66
君は手順書wを知っていると言ってるだけの虚ろなテープレコーダーとなり下がった
0662デフォルトの名無しさん
垢版 |
2021/02/25(木) 09:40:12.87ID:2DtRWZ66
テスト手順書という言葉自体一般社会では通用しない代物だから知らなくていいものだとは思ってるが仮にそのような下賤なものがあるとしても問題ないと言ってるのだよ、ここまで噛み砕かないとわからないかな
0663デフォルトの名無しさん
垢版 |
2021/02/25(木) 09:42:43.67ID:bxBNuN1v
相変わらずキチのままだな
存在の仮定には反論してないぞ
そんなことも分かってないだろw
0664デフォルトの名無しさん
垢版 |
2021/02/25(木) 10:09:07.67ID:R7WVwVFS
誰か>>650の相手してやれよ(2行目
0668デフォルトの名無しさん
垢版 |
2021/02/25(木) 11:31:45.02ID:R7WVwVFS
>>667
もちろんそうなんだけど、そもそもexceptionじゃね?
とかw
0673デフォルトの名無しさん
垢版 |
2021/02/25(木) 12:14:48.54ID:2DtRWZ66
なんだ反論してなかったのか
僕の主張が全面的に正しくて反論の余地が一切なかったということか
0674デフォルトの名無しさん
垢版 |
2021/02/25(木) 12:16:12.07ID:2DtRWZ66
2であることは保証されないよねって論旨だからOSによる動作の違いは些末なものさ
0675デフォルトの名無しさん
垢版 |
2021/02/25(木) 12:18:43.21ID:2DtRWZ66
自動テストは底辺コーダの自己満です、システムの品質は一切上がりません、自動テストは80年代の手法
0676デフォルトの名無しさん
垢版 |
2021/02/25(木) 12:46:09.79ID:R7WVwVFS
環境によるって話なら2が入る可能性もあるよw
0679デフォルトの名無しさん
垢版 |
2021/02/25(木) 14:37:56.27ID:LJq279gj
int a = 1;
int* b= a;

2行目の暗黙的変換がエラーにならないのって相当古い実装だよね。今でもあるのかな?
0689デフォルトの名無しさん
垢版 |
2021/02/25(木) 16:53:27.63ID:bxBNuN1v
>>686
返してどうするw
指摘に対してなにも言えないのは君ね
ちなみに反論はできないんじゃなくてする必要がないからしてないだけだから
>>663にその理由も書いてあるけど理解できてないでしょ?
0690デフォルトの名無しさん
垢版 |
2021/02/25(木) 16:53:58.85ID:R7WVwVFS
>>680
int c = *b; の時、b = 1だから、1番他のint型の内容をcに入れてるよ
0692デフォルトの名無しさん
垢版 |
2021/02/25(木) 17:01:11.50ID:2DtRWZ66
僕の鉄のような正論の前で反論できなさすぎて悔しくて僕の人格を貶めようと頑張っておられるところ恐縮ですが反論ないのな
0693デフォルトの名無しさん
垢版 |
2021/02/25(木) 17:05:53.09ID:0Aa2beUH
あわしろ氏は、 >>692 は勉強しなおすべきと言ってたな。
0697デフォルトの名無しさん
垢版 |
2021/02/25(木) 18:59:36.92ID:bxBNuN1v
>>695
バカはレスできなくなると同じ内容をひたすら繰り返すようになるのな
もちろん反論は(必要ないから)ないし、アホと言う指摘に触れられたくない必死のアホがいるという事実も変えられないw
0698デフォルトの名無しさん
垢版 |
2021/02/25(木) 19:03:00.55ID:d2pfH4ce
>>697
> バカはレスできなくなると同じ内容をひたすら繰り返すようになるのな

↓これなw

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

「自動テストサイクルが回ってるの見たことない。テストする時間がない。」
0704デフォルトの名無しさん
垢版 |
2021/02/25(木) 20:20:05.02ID:2DtRWZ66
>>702
僕はテストコードにこだわって破綻したプロジェクトを経験したことある、手段にこだわって目的を見失ったパターンですわ、それ以来僕はテストコードはにわかコーダの自己満だと思うようになったのだねえ
0705デフォルトの名無しさん
垢版 |
2021/02/25(木) 20:22:11.13ID:d2pfH4ce
>>704
そのプロジェクトは権威がある所のプロジェクトですか?
それとも権威がない所のプロジェクトですか?
0706デフォルトの名無しさん
垢版 |
2021/02/25(木) 20:25:43.66ID:GSBW3E39
一回のテストで確認してるものが多すぎるのだ
ひとつの結果をチェックって
DB更新するのにレコード全体がチェック対象になんねん
0707デフォルトの名無しさん
垢版 |
2021/02/25(木) 20:27:32.84ID:d2pfH4ce
手動テストなら、レコード全体をチェックしなくても
動いてるからヨシでリリースできるのだ
0713デフォルトの名無しさん
垢版 |
2021/02/26(金) 03:47:36.47ID:5d4w5oMJ
テストコードなんか書かせてくれるエンドなんか
もう無いだろ、・・・
0714デフォルトの名無しさん
垢版 |
2021/02/26(金) 03:49:44.09ID:lNpcN0RJ
リクルートで10年アプリ作ってたけどテスト書いたことない
0716デフォルトの名無しさん
垢版 |
2021/02/26(金) 07:05:56.03ID:nwGfe0iv
>>715
見てるところか小さすぎる
製品の使い勝手をねじを眺めることで見極めようとするようなものマイクロテストは時代遅れの遺物
大事なのは全体品質ということ
0717デフォルトの名無しさん
垢版 |
2021/02/26(金) 07:13:20.98ID:nwGfe0iv
システムを使うのは人間なんだから人間が最初から最後まで使ってみて品質を研ぎ澄ましていくんだよネジの造形を眺めて悦に入ってるようじゃダメだね

現代の開発環境では実装ミスなんて起こらないからそこを一生懸命テストしてどうするのってこと
0721デフォルトの名無しさん
垢版 |
2021/02/26(金) 09:18:10.55ID:5d4w5oMJ
もう外食を禁止しちゃえばよくね?
0723デフォルトの名無しさん
垢版 |
2021/02/26(金) 12:12:42.54ID:xnYLStfr
>>709
頼むから、お前のレベルの低い職場を基準に語るのやめろ
あと、いい加減に隔離スレ行け、池沼
0732デフォルトの名無しさん
垢版 |
2021/02/26(金) 18:19:35.79ID:KTQPKhRG
クソスレから派生スレ立てた上にその重複スレまで立てるとかマジ頭おかしい
0734デフォルトの名無しさん
垢版 |
2021/02/26(金) 19:00:59.16ID:iQO5Z3xR
あわしろ氏は、重複大いに結構と言ってたけどな。
0738デフォルトの名無しさん
垢版 |
2021/02/26(金) 21:22:05.56ID:9y4w8ED+
前にいた自称(手動)テストのプロが
バグがあるバグがある!エビデンスもある!って
叫んでいてトラブルになったんだが
結局そいつがテスト手順を間違えていただけというオチだった
テスト手順書にしっかり書いてありますよねって問い詰めたらそいつやめたわwww
データを削除するって書いてるんだから、全部のデータを消すに決まってるだろと
購入データだけ消すなよアホかってな
0741デフォルトの名無しさん
垢版 |
2021/02/26(金) 21:28:31.08ID:sPHbC1so
テスト毎にぜんぶDBデータ消すこと。ただしDBはチーム共通。規約違反はテストと認めない。
チーム20人もいれば簡単ですよね
0743デフォルトの名無しさん
垢版 |
2021/02/27(土) 08:48:42.05ID:ZW3ZqwOa
テストコードを書かないとクソコードになるという話題でもする?

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

目的と手段の2つをお答えください(笑)
0747デフォルトの名無しさん
垢版 |
2021/02/27(土) 10:07:23.47ID:OfxFNKjU
>>745
プログラムの目的とはユーザを満足させること
そのための手段として実際に人間が使ってみること
こんなこと聞いてる時点でダメだよね
0749デフォルトの名無しさん
垢版 |
2021/02/27(土) 10:09:22.56ID:hpJz9JUm
>>747
料理の目的は、客を満足させること
料理の手段は、実際に人間が食べてみるとと

さて?料理はどうやって作るんですか?w
0751デフォルトの名無しさん
垢版 |
2021/02/27(土) 10:11:27.64ID:ZW3ZqwOa
>>709
>>748
あんた、オブジェクト指向はクソとか言いまわってた挙げ句に厶板住民から総攻撃を食らって知的障害を起こしながらID真っ赤にして人が罵倒してた人でしょ?
文章がソックリだし、知的障害者を起こして人の話を聞かなくなるところもそっくりだわ

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

ではきこう。試行錯誤を1日に1000回やるにはどうしたら良いか?
0757デフォルトの名無しさん
垢版 |
2021/02/27(土) 10:18:22.80ID:OfxFNKjU
>>756
よく読んでください、1000回という数字に根拠がないと言ってます、また手段と目的を見誤ってますね
0759デフォルトの名無しさん
垢版 |
2021/02/27(土) 10:19:40.92ID:hpJz9JUm
>>757
1000回という回数にこだわってるのはお前
試行錯誤の回数は多いほうが良いと言っている
より多く試行錯誤をするにはどうすればいいか
実食を重ねて試行錯誤していくに決まってる(笑)
0761デフォルトの名無しさん
垢版 |
2021/02/27(土) 10:21:58.68ID:OfxFNKjU
>>759
おやおやそれは無理がありすぎでしょうw
1000回という数字を出してそれを達成するにはどうすればよいかを聞いたのはあなたでしょう、他人のせいにしないでください
0763デフォルトの名無しさん
垢版 |
2021/02/27(土) 10:24:17.05ID:b2AUxonB
反論できなくなったらこれだから日本は〜ってださすぎるだろ
そもそもIT先進国の方がテスト文化進んでるだろうに
0764デフォルトの名無しさん
垢版 |
2021/02/27(土) 10:24:31.17ID:OfxFNKjU
日本からユーチューブやツイッターが生まれないのはユーザを見ずにコードを見てるからです
0765デフォルトの名無しさん
垢版 |
2021/02/27(土) 10:25:42.78ID:ZW3ZqwOa
>>761
単体テストってビルドする度に実行するものだけど、理解できてます?
まさか、そんなことも理解せずに単体テスト批判してたの?
あと、クソコードスレなんで、是非、クソコード事例書いてみて
生産性のないお前の愚痴とか相手を挑発するだけで中身のない批判とかどうでもいいから
0766デフォルトの名無しさん
垢版 |
2021/02/27(土) 10:26:12.15ID:ZW3ZqwOa
あと、クソコードの話と絡めることができないのなら、隔離スレ行ってくれませんか?
0767デフォルトの名無しさん
垢版 |
2021/02/27(土) 10:28:16.32ID:OfxFNKjU
>>765
いつ実行するかをあなたは話してますね、ふーんって思いました、なんでそんな話をしてくるんだろう
0770デフォルトの名無しさん
垢版 |
2021/02/27(土) 10:30:45.78ID:OfxFNKjU
あれを知ってるかこれを知ってるか、そんなことも知らないのか、民主党の国会質疑みたいですね
0771デフォルトの名無しさん
垢版 |
2021/02/27(土) 10:32:30.36ID:OfxFNKjU
>>769
テストコードを書くとテストコードを実行することやテストコードをきれいに書くことが目的なってしまうからです、このスレの議論を見ればよくわかりますね
0773デフォルトの名無しさん
垢版 |
2021/02/27(土) 10:35:35.35ID:OfxFNKjU
言うに事欠いて僕の真似をするとは、良いでしょう、あなたがその言葉を発言することを許諾します
0775デフォルトの名無しさん
垢版 |
2021/02/27(土) 10:54:25.52ID:Yt5NHAzi
NG推奨:テスト
0776デフォルトの名無しさん
垢版 |
2021/02/27(土) 13:00:30.28ID:NhoBp4qK
>>742
クソコーダーはクソスレ建てるのがお上手ですね!
0777デフォルトの名無しさん
垢版 |
2021/02/27(土) 14:21:58.44ID:o6FTnlQR
まずこのスレがクソスレじゃん
どんなジャンルで悪いお手本をあげつらって技術磨くってのが成り立つんだよ
状況によって対応が細かく変わりうるプログラムってジャンルだと尚更ねーよ
0789デフォルトの名無しさん
垢版 |
2021/02/27(土) 16:55:56.55ID:lzDnqtNz
俺は、あわしろ氏を信じる。

お前の言うことは信用しない。
0790デフォルトの名無しさん
垢版 |
2021/02/28(日) 03:55:51.43ID:BRDX8bQ+
天ぷらだとうどんと蕎麦のどっちが好き?
0792デフォルトの名無しさん
垢版 |
2021/02/28(日) 03:59:46.09ID:BRDX8bQ+
>>791
天ぷら前提なんだが、レスがハエーから許す
0794デフォルトの名無しさん
垢版 |
2021/02/28(日) 04:07:35.88ID:BRDX8bQ+
>>793
うどんか蕎麦で
0798デフォルトの名無しさん
垢版 |
2021/02/28(日) 17:44:13.70ID:VO7rpKqD
>>797
そう思ってたのはスレ主だけだろw
スレタイ & 1スレでどっちみちクソスレになるのは確定してた
0802デフォルトの名無しさん
垢版 |
2021/02/28(日) 23:55:31.04ID:VPMHnl/e
>>798
いや、スレ主じゃないけどアンチパターン研究スレは厶板に必要だとは思うよ
文脈から察せない人が暴れただけで
0803デフォルトの名無しさん
垢版 |
2021/03/01(月) 00:40:02.48ID:p4pc8RdJ
>>802
アンチパターンを集めたかったんなら
スレタイと1スレをそうなるよう書けって話だろ
アンチパターンとクソコードは全く別物なんだよ
コンテキストを理解してないと言われてる理由と合わせて最低限パターン・ランゲージくらいは学んでこい


ちなみに「いや」から書き始めるレスはクソレス・パターンだからな
0806デフォルトの名無しさん
垢版 |
2021/03/01(月) 02:51:31.50ID:g6QBZhEL
アンチパターンを取り上げてる本でオススメある?
SQLアンチパターンを読んで得るものが多かったので
0809デフォルトの名無しさん
垢版 |
2021/03/01(月) 06:52:02.27ID:6wDZP3ri
>>805
おいお前話を広げろ、今のお前は他人のヘイトやってるだけのクソ野郎だからそうじゃないところを見せろ
0810デフォルトの名無しさん
垢版 |
2021/03/01(月) 06:56:37.18ID:6wDZP3ri
あ、間違ってたも
>>805は僕に同意してたわけね
でも僕は敏感な人間だから僕に言われてることだと思った、だけれども紛らわしい言い方した君が悪い、僕は絶対に悪くないからこの件は以後言及することを禁止します、以上
0811デフォルトの名無しさん
垢版 |
2021/03/01(月) 07:06:26.34ID:6wDZP3ri
上に出てるパターン・ランゲージってアレクザンダーの都市計画理論だろ、プログラミングの本じゃない、そんなたとえ話のようなものでわかった気になるのは危ない

Twitterでも建築の本読んでオブジェクト指向がどうとか言ってる人いるけどポストモダンなソーカル野郎としか思えないんだよなあ、関係のないことを関係づけてそこに気づいた自分が賢いと思いこんでしまうクルクルパー、地頭の良い人が陥りやすい穴のように見える
0815802
垢版 |
2021/03/01(月) 12:23:46.76ID:sbiXUVTE
コミュ症の自覚がない>>803
0816デフォルトの名無しさん
垢版 |
2021/03/01(月) 17:40:20.81ID:scPLhEmU
>>803
まーた、詭弁デメテルバカが発狂してるよ
一番勉強が足りてないお前が勉強してないっていうねw
頼むから、一生ROMってろ
0817デフォルトの名無しさん
垢版 |
2021/03/01(月) 20:15:47.54ID:XEpCIBIH
コードとはまた違うけど
javaのインターフェースとインプリメントはクソだなと思う
無駄にファイル数増えてクソうざい
0819デフォルトの名無しさん
垢版 |
2021/03/01(月) 21:16:55.91ID:4ocrwkuw
これだからJava脳はw
言語周りで幼稚な愚痴垂れ流してるやつのJava率の高さったらない
0820デフォルトの名無しさん
垢版 |
2021/03/01(月) 22:39:30.52ID:o/aEg2l/
>>811
GoFのデザインパターンも、ファウラーのリファクタリングも、エリックエバンスのDDDもみんなパターン・ランゲージ

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

アンチパターンの意味を理解せずにアンチパターンの研究とかまあ無理よね
0822デフォルトの名無しさん
垢版 |
2021/03/01(月) 23:16:44.33ID:vk4XQtG7
>>818
abstractだけでいいって事では?
0825デフォルトの名無しさん
垢版 |
2021/03/02(火) 03:20:46.99ID:9w2EW+ai
いちいち2chで教えなくていいから
0827デフォルトの名無しさん
垢版 |
2021/03/02(火) 11:43:32.18ID:sTNRmcJa
>>818
そのインターフェース本当に必要?ってのが大半
他クラスとは何も関係無い孤立したクラスなのにインターフェース実装されてるの見たことある?
javaやってる感出すためだけにファイル数が2倍になるゴミ
0828デフォルトの名無しさん
垢版 |
2021/03/02(火) 12:24:38.24ID:08kau52M
肛門コード
0829デフォルトの名無しさん
垢版 |
2021/03/02(火) 12:31:08.45ID:MXVQCo9F
>>827
ポリモーフィズム

Storage storage

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

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

storage.read()

これができなくなるとか論外
0830デフォルトの名無しさん
垢版 |
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();
}
0831デフォルトの名無しさん
垢版 |
2021/03/02(火) 16:18:47.07ID:sTNRmcJa
>>829
そうやって複数クラスで使う前提じゃなくて
自身にしか提供しないくせにインターフェースにするクソコード見ても同じこと言えんの?

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

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

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

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

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

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

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

こんなのが爆誕してるというかほぼ全クラスこんなので統一されてる絶望感分かる?
0847デフォルトの名無しさん
垢版 |
2021/03/02(火) 20:12:52.16ID:sTNRmcJa
>>833
まあ仕様が悪いというより簡単に悪用される実態が問題なんだよね
そのパターンもあるあるやと思ってる
だけどもし仮に2に乗り換えたところで、何かあった時に戻れるようにって無印が残されて結局ファイル数は増える地獄なんだなぁw
0849デフォルトの名無しさん
垢版 |
2021/03/03(水) 10:51:02.42ID:xzgw1tFV
ワクチン効かなくて人類オワタ
0852デフォルトの名無しさん
垢版 |
2021/03/04(木) 09:49:55.40ID:OjWW0m8I
普通にクソってことでいいんじゃね?
クソだけど処理が小さく、まともにするには
過剰気味な設計が必要になるならそのままにするけど
良いとは思わないけど必要十分
0853デフォルトの名無しさん
垢版 |
2021/03/05(金) 11:07:38.15ID:zIBx0bjD
短絡的にクソコード認定したがるやつの脳みそがクソってことだよ
>>1のようなプログラマーは自分の見方がクソなのかもしれないと考えられるようにならない限り
いつまでたってもクソプログラマーのまま
0854デフォルトの名無しさん
垢版 |
2021/03/05(金) 16:16:51.44ID:rOFa7Oz2
短絡的にクソプログラマー認定したがるやつの脳みそがクソってことだよ
>>853のようなプログラマーは自分の見方がクソなのかもしれないと考えられるようにならない限り
いつまでたってもクソコードのまま
0855デフォルトの名無しさん
垢版 |
2021/03/05(金) 17:34:44.54ID:5bhxQzE4
>>854
クソプログラマー認定も含めて自分の見方がクソかもしれないと考えてないようなら
そいつ自身がクソプログラマーの可能性はそれなりに高いだろうね

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

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

クソプログラマーの定義とかスレ違いだし、どうでもいいわ
0859デフォルトの名無しさん
垢版 |
2021/03/06(土) 09:14:58.43ID:6IalgJ8T
根本的な原理が分かってない人が意外なぐらい多い
情報の多重化、DRY原則からの逸脱を誘発するものがとにかく駄目
突き詰めればダメなものは間接的でもそこにつながっているから被害を受けるのだと分かる
いろんなデザインパターンなんて結局は
いろんな状況でDRYを遵守する手練手管が99%だろう
重複実装も必要な時があるが
どんなものをどんな風に重複させるかで
状況はかなり異なるので短絡的な判断は禁物

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

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

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

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

最低でもこの2点の判断が必要
0871デフォルトの名無しさん
垢版 |
2021/03/07(日) 00:51:19.68ID:1+EXA2lk
片方だけの変更が妥当なら良性、両方に変更を入れないとダメなら悪性、ぐらいでだいたい見分けられるんじゃね?
0875デフォルトの名無しさん
垢版 |
2021/03/07(日) 20:58:32.09ID:FZPehcc/
>>872
3行3回程度ならそのままにするかな
breakしないとダメなので関数化しても条件判断が要るし
行数が増えるなら関数化する
回数が増えるなら関数をテーブルにしてforで回すかな
0876デフォルトの名無しさん
垢版 |
2021/03/08(月) 08:06:44.01ID:Q93ekmxF
それは要件次第って言えてしまうからなあ
関数作れない時もあるし、仮に1回でも要件で拡張の余地をとか言われたら関数にしなきゃだし
クソコードって分かってもそうしなきゃいけないときもある
0877デフォルトの名無しさん
垢版 |
2021/03/08(月) 09:04:47.24ID:ca4xsibi
関数化すらしないやつがいるのはちょっと驚き

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

ループにするかどうかは処理順序やcssをコードに固定化すべき状況なのかどうかによる
これも形じゃなく意味
使い捨てじゃなく長期的にメンテするコードで
hrml要素の検索順や検索条件をコードに固定化したほうが望ましい状況は少ない
0879デフォルトの名無しさん
垢版 |
2021/03/08(月) 10:14:50.71ID:1B2qwCXx
>>878
そういうのが特殊な理由

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

コーディング規約と同様に指針を決めておくのが普通
0885デフォルトの名無しさん
垢版 |
2021/03/08(月) 20:20:53.39ID:C8XgJIOz
ドキュメント間違えるし、イラネ
0888デフォルトの名無しさん
垢版 |
2021/03/09(火) 09:22:23.90ID:1va3W7Si
メンテと言ってる時点でおかしいんだよね
本来はドキュメント変更してからコード直すべき
まあ不具合対策とかでいちいちドキュメントまで直してられっかって言うのはよくあるけど…
0890デフォルトの名無しさん
垢版 |
2021/03/09(火) 10:35:41.16ID:B9Z9HiJ8
関数化すべき
→勝手に関数作れないもん
→関数作ったらドキュメントが必要になるもん
→作ったドキュメント維持できないもん


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

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

マルチコア用の並列処理は、まだ数年は掛かりそう
0903デフォルトの名無しさん
垢版 |
2021/03/10(水) 15:29:31.30ID:eQWG2ihY
>>900
竹内関数は関数の仕様を定義したものなので
コードではなく仕様がクソかどうかという話になる
それはクソコードかどうかという話とは少し種類が違う
0904デフォルトの名無しさん
垢版 |
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
0905デフォルトの名無しさん
垢版 |
2021/03/11(木) 16:00:27.63ID:2k6w0W90
とくぎ「パニパニハニー」を完全抹消コメント 1件

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

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

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

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

主張の中心となる用語をよく理解せず勝手な思い込みでオレオレ理論をふりかざすやつがクソプログラマーでなくなんなのだろうか?
自分の認識が間違ってるかもしれないとは考えないクソプログラマーの特徴がよく表れている
0916デフォルトの名無しさん
垢版 |
2021/03/11(木) 23:23:42.46ID:wuP7cLri
関数呼び出しは遅いから関数しか無いCは使えないという恐ろしいFortran使いが結構たりするけどな…
0917デフォルトの名無しさん
垢版 |
2021/03/11(木) 23:38:43.29ID:wuP7cLri
まあインライン化やマクロ駆使してオーバーヘッド削ったCよりは絶対読みやすいので、一理ないこともない
0923デフォルトの名無しさん
垢版 |
2021/03/12(金) 11:45:41.06ID:zHGwFDvl
サブルーチン・副作用は、状態を持つから、ややこしい。
Ruby 3 のマルチコア並列処理・Ractor でも問題になっている

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

元のデッドコードの話自体は初心者の話だし、コードの書き換えに躊躇がなく、バグだらけにするのは外国人に多いわけで、有名な製品をアップデートするとおかしくなる最大の理由。
0934デフォルトの名無しさん
垢版 |
2021/03/12(金) 18:44:33.92ID:Jts8n3aI
クソコードとは俺が書いたコード
0935デフォルトの名無しさん
垢版 |
2021/03/12(金) 18:52:31.32ID:0g8W4jPs
またまたご謙遜を。
0936デフォルトの名無しさん
垢版 |
2021/03/12(金) 19:22:54.23ID:7Crflr6r
オープンソースはかなりの確率でクソコード
0937デフォルトの名無しさん
垢版 |
2021/03/12(金) 19:44:02.10ID:HsBsGhC6
YAGNI (You Ain’t Gonna Need It) 直訳は「そんなモン要らんって!」
YAGNIの原則は「機能は実際に必要となるまでは追加しないのがよい」とすること。後で使うだろうという
予測の元に作っても、実際に使われるのはほんの一部。ソフトウェア実装において「予期しない変更」は常
についてまわり、できるだけ設計をシンプルにするべき。現実の問題に集中して余計なモノを足さない。
それがヤーグニ。
https://www.jabba.cloud/20180119204314/
0938デフォルトの名無しさん
垢版 |
2021/03/12(金) 19:56:22.98ID:b9Kr93A5
業務システムにはあてはまらない。
0939デフォルトの名無しさん
垢版 |
2021/03/12(金) 19:58:56.77ID:b9Kr93A5
>>937
仕様変更を想定しないといけないとわかっていながら、そのときの仕様で最適化するのは、その方が周囲から理解をえやすいから。
0941デフォルトの名無しさん
垢版 |
2021/03/12(金) 21:37:32.87ID:b9Kr93A5
外国人の言うことをありがたがっているようでは話にならない。
0942デフォルトの名無しさん
垢版 |
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/
0943デフォルトの名無しさん
垢版 |
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
0944デフォルトの名無しさん
垢版 |
2021/03/13(土) 09:18:08.62ID:tBGlpruK
キチガイだなw
0946デフォルトの名無しさん
垢版 |
2021/03/14(日) 09:42:47.84ID:BsjTGNRz
ここに書かれた罵詈雑言と不要な議論の文字列
これがまさにクソコードだ
0947デフォルトの名無しさん
垢版 |
2021/03/14(日) 10:12:49.00ID:nT6f8vWc
>>921
2008以降になるとまともな和書殆ど無いよな、Amazonで見たら★2でわろた
英語なら20冊くらい引っかかって高評価だけど学術系出版社だから¥10000〜
俺もコンパイラマニュアルしか読んでないわ
0948デフォルトの名無しさん
垢版 |
2021/03/14(日) 10:29:30.32ID:u05Cu7nI
クソコードの例

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

値を取り違えて設定してることや
本来の値を設定し直してることが分かるようなら
たいしたクソではなさそう
0950デフォルトの名無しさん
垢版 |
2021/03/14(日) 12:25:06.62ID:mqW1umpN
フォートラン並みの配列演算記述ができるJuliaやPython/scipyが出てきたから、ガチる人以外はそっちに流れたんだろ
Matlabもフォートラン並みに高級だけどかなり高いし、プラットフォームが限られる
特にJuliaはCじゃなくフォートランの慣習に合わせてるし移行の敷居が低い
0952デフォルトの名無しさん
垢版 |
2021/03/14(日) 19:53:13.79ID:u05Cu7nI
>>949
10万行のコードを解析してわかったことだけどね。
0954デフォルトの名無しさん
垢版 |
2021/03/14(日) 22:59:16.59ID:SWD4O/qm
>>952
それがほんとなら根本の問題は別の所にあるよね

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


再テストに時間がかかるがテストは手動でやる・・・アホな現場の方針でしかない
というだけだよ
0967デフォルトの名無しさん
垢版 |
2021/03/15(月) 13:50:21.56ID:QmxS+DUu
もう降参かな?テストをしないでデバッグだけしてると
時間が膨大にかかるからねw

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

テストはしないからテスト時間は0なのだ
やつはテストしないで製品をリリースしてるんだよ!
そしてバグが見つかったときに製品をリコールしてるんだよ
やつは組み込み系開発者だからな
0972デフォルトの名無しさん
垢版 |
2021/03/15(月) 19:12:39.86ID:m9WM8q4q
テストは甘えと、あわしろ氏が言ってたけどな。

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

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

甘えすぎだわ。
0977デフォルトの名無しさん
垢版 |
2021/03/15(月) 20:10:26.44ID:+SM2oHa/
それよりも手動の総合テストを頑張ったが良い、自動テストはコーダの自己満でしかない、ユーザと向き合ってないコミュ症の底辺がやること
0979デフォルトの名無しさん
垢版 |
2021/03/15(月) 20:12:57.03ID:QmxS+DUu
>>977
手動の総合テストにどれだけ時間がかかりますか?
まだこの質問に答えてもらってませんよ?
0983デフォルトの名無しさん
垢版 |
2021/03/15(月) 20:16:13.61ID:QmxS+DUu
>>981
スコープによるなら
○○の場合は、これぐらいとか
答えられるだろw

お前の実際の話をすればいいんだよ
手動テストしてないのか?
0986デフォルトの名無しさん
垢版 |
2021/03/15(月) 20:19:31.02ID:+SM2oHa/
>>985
スコープがなんなのかわかってないようだねwww
0987デフォルトの名無しさん
垢版 |
2021/03/15(月) 20:20:15.36ID:+SM2oHa/
スコープをまず説明してみwwwきちんと説明できたらなぜ○○に入れられないか自ずとわかるから
0988デフォルトの名無しさん
垢版 |
2021/03/15(月) 20:20:30.62ID:+SM2oHa/
ほれほれはよせいよw
0989デフォルトの名無しさん
垢版 |
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

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

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

実際の手動テストにどれくらい時間がかかってるんですか? 
0998デフォルトの名無しさん
垢版 |
2021/03/15(月) 20:24:50.46ID:sDtoJkVU
どうして実際の手動テストにどれくらい時間がかかってるか言えないんですか?
膨大な時間がかかってるからですよね
0999デフォルトの名無しさん
垢版 |
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を超えています。これ以上書き込みはできません。

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