リファクタリングすると全部テストしろと言ってくる奴の矛盾3

■ このスレッドは過去ログ倉庫に格納されています
2018/10/29(月) 19:39:29.27
機能追加や変更した時に、全部テストしてるでしょ?
いつもやってることじゃん

よくある応答のパターン

1. 必要もないのにリファクタリングを勝手にやるな
⇒ 客などから修正を要求するときに行うので、勝手にやることはありません

2. 修正の指示は出したがリファクタリングの指示は出してない
⇒ 修正工程の一つに含まれる作業なので修正と分離することは不可能です

3. リファクタリングすると動きが変わるだろ
⇒ 動きを変えないのがリファクタリングです

4. リファクタリングしたら全部テストしなきゃならないだろ
⇒ 修正しろと客などから言われたんだから修正するしか無い
どちらにしろ全部テストするんだろう?


前スレ
リファクタリングすると全部テストしろと言ってくる奴の矛盾2
https://medaka.5ch.net/test/read.cgi/prog/1526720757/
2018/10/30(火) 00:34:02.46
え?でもやっぱり今回の改修で他の機能までバグるのはおかしいですよね?

共通ルーチン?
なんで分けて改修しないんですか?
テスト全部やり直してくださいよ

もう一回やったら訴えますよ

これが現実
震えて眠れ
2018/10/30(火) 01:30:02.07
> 共通ルーチン?
> なんで分けて改修しないんですか?

分けて二箇所改修する意味は?
2018/10/30(火) 01:31:48.92
え?でもやっぱり今回の改修でバグは治ったんじゃないんですか?テストしたんですよね?

テストはした箇所は治っていました。ですが似たような箇所で同じような計算をしていて
そちらは治っていませんでした。軽く検査した所、同じような計算が10箇所ありましたので
その改修とテストに今回の10倍の時間と費用がかります。
2018/10/30(火) 01:31:54.29
>>3
片方は問題ねーから
2018/10/30(火) 01:34:55.63
なんで共通化しないんですか?


それはね。あなたから開発費をせしめるためですよ


 
2018/10/30(火) 01:35:30.51
>>5
共通ルーチン使っていて、片方は問題ないなんてありえないよ
どういう場合にそうなるんだよw
2018/10/30(火) 01:57:05.61
片方問題がなかったら、それはもう設計時点の問題だな
違う処理であるべきなのに、同じ処理にしてしまったんだから
2018/10/30(火) 06:54:44.63
>>7
え?想像力がたりなさすぎない?

一つは精度が必要なときとかfloatで十分、doubleでないとダメ
条件が特定のルーチンしか通らないとか

いくらでもあるぜ
お前一つも浮かばなかったの?
プログラマやめちゃえよ
設計なんか語るレベルにないじゃん
2018/10/30(火) 07:38:48.78
> 一つは精度が必要なときとかfloatで十分、doubleでないとダメ

修正内容が「精度を上げたい」なら共通関数を変更するべきだが、
「一箇所だけ精度を上げたい」ならば、そのときに分ければいいの

おかしいでしょ?精度を上げたい箇所を明確にしないまま作業するなんて
まず先に精度を上げたい場所がどこかが決まる。

そしてそれはリファクタリングではなくて単なる仕様変更
一箇所だけ精度をえるという仕様変更

その違いもわからないなら、プログラマやめたほうがいいよ
2018/10/30(火) 07:43:42.21
>>9
> 条件が特定のルーチンしか通らないとか

設計が破綻してる

func() { A処理 and B処理 } があって?
一つは、A処理 B処理 両方通って
もう一つが A処理 のみしか通らないなら

func 内部で条件フラグとかで分けるんじゃなくて
呼び出し側で、A処理を行うA() と B処理を行うB() を呼び出す
もう一つは、A処理を行うA() のみを呼び出すの

クソコードによくある。長い関数でグダグダやっていて
特定の場合だけ処理を分けたいから、フラグを追加してフラグみて
片方だけ実行とかね。ほんとコレ、クソコード
2018/10/30(火) 08:00:14.00
>>9
> 条件が特定のルーチンしか通らないとか
そもそも言ってることがおかしくない?

func() { Aルーチン and Bルーチン } があって条件が特定のルーチンしか通らないんでしょ?
片方は Aルーチン と Bルーチンの 両方を通る。もう片方はAルーチンのみを通るということだ

修正箇所がBルーチンなら片方は修正されるし、もう片方はそもそも通らないのだから関係ない話

だからAルーチンが修正箇所ということになるが、
「条件が特定のルーチンしか通らない」とはどういうことだ?
両方共、修正箇所のAルーチンを通ってるではないか?
2018/10/30(火) 08:02:02.33
一言で言うならば共通関数の中に、
AルーチンとかBルーチンのようなエリアができてる時点でクソ
2018/10/30(火) 08:15:30.49
「精度上げてっていったのに上がってないんだけど?」

この関数は上げましたよ?でも他の部分がfloatのままなので
他に渡すときにfloatに変換されますねぇ
他の部分を変更しろとは言われてないしーwww
2018/10/30(火) 08:15:55.30
>>13
それな
2018/10/30(火) 21:26:03.00
たいていけんか腰のやつって中身のない議論するんだよなあ
2018/10/31(水) 00:33:03.79
>>13
これに尽きる
2018/10/31(水) 05:16:08.64
共通関数があるとしてfloatかdoubleにコードを統一できないなら
単にfloat版とdouble版の関数を作るだけだろ

例えばこんな感じに

https://linuxjm.osdn.jp/html/LDP_man-pages/man3/clog10.3.html
> double complex clog10(double complex z);
> float complex clog10f(float complex z);
> long double complex clog10l(long double complex z);
>
> 他の関数は同じ機能を持つ float 版と long double 版である。

何かを修正するのと、新しく精度違う版が必要になった(機能追加)のを
ごっちゃにするんじゃねーよ
2018/10/31(水) 07:15:32.13
>>18
じゃあ、そういう修正が入っても既存は一切いじらないって主張でいいんだよね?
2018/10/31(水) 17:14:17.74
>>19
まず「そういう修正」の中身を明らかにしようか?

floatをdoubleに変えるのは"仕様変更"である
リファクタリングは仕様を変えないものなのだから
仕様を変えると言っている以上、これはリファクタリングではない

リファクタリングなら当然既存を修正する
繰り返すが、既存を修正する

お前が言ってる「そういう修正」の中身は
「他の処理は変えずに一部分だけ精度を上げるという仕様変更のための修正」だ
2018/10/31(水) 17:20:06.36
え?でもやっぱり今回の改修で他の機能までバグるのはおかしいですよね?

リファクタリングもしたからバグったって?

いやいや、リファクタリングをは動きを変えないものだから
それでバグるわけ無いでしょ?

改修内容を間違えたんですよね。一部分だけ修正しろと言ったのに
全部修正したんですよね?リファクタリングのせいにしないでください

もう一回うそついたら訴えますよ

これが現実
震えて眠れ
2018/10/31(水) 17:25:09.87
>>21
まあ、人間である以上いじったらバグる可能性は残るんだよ
君は信用できない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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