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

■ このスレッドは過去ログ倉庫に格納されています
2018/04/15(日) 13:13:44.63
機能追加や変更した時に、全部テストしてるでしょ?
いつもやってることじゃん
2018/04/16(月) 13:26:59.58
>>27
数値にできる学がねぇんだろw
数値化しろよ
2018/04/16(月) 13:36:47.19
>>27
仕事を規定の時間内に許容できる品質のものを上げるのが実装者に求める要求で、それに付随する手段は手段でしかない。
で、手段は自由にやればいいし、基本介入しないし、結果しか見る気は無い。
だからやりたければやれば?としか自分は言わない
工数増えるのは論外
2018/04/16(月) 14:37:58.22
>>26
> そこまでしてないなら、その議論は語るに値しない
> んで、殆どの会社はそこを検証していない

検証しろっていうのはわかるが、それは世間一般には
すでに検証されていてすでに品質が上がったというデータは出てるんだよな

それも検証するコストも出せないような会社がやるような中途半端な
方法じゃなくて、もっと大規模で信頼できる方法で検証した結果がすでにある。

で、それを参考にすりゃいいのに、参考にしないんだろう。
つまり他人を信用してない。だから他人がなにやってもどんなデータを出しても
そういう会社は信用しないんだろう。
2018/04/16(月) 14:41:43.64
リファクタリングが有効かどうか?
検証してやるよ。コスト?そりゃ当然かかるよ

ここで嫌がる会社が多い

重要なのは、失敗するかもしれないがやってみよう
という考えが通じる会社かどうかなんだろうな
2018/04/16(月) 14:52:53.46
体力がなくて単純工すらできないごみクズがIT技術者(笑)になる日本では
コストメリットどころかリスクしかない。
33KAC
垢版 |
2018/04/16(月) 17:54:10.17
「リファクタリングしたら工数減ります」
「リファクタリングの為の工数ください」

うん。意味不明だね。
2018/04/16(月) 18:19:38.72
> 「リファクタリングの為の工数ください」

誰もそんなこと言ってないけど?

>>31が言ってること勘違いした?
リファクタリングが有効かどうかの検証の話だよ。
検証するには、同じことをリファクタリグをするのと
しないので2回やらないといけない。
検証にはコストがかかる。
2018/04/16(月) 19:00:22.44
>>28
俺の筋肉量でリファクタリングの効果を説明できる
2018/04/16(月) 19:33:16.67
>>34
いや、リファクタリングで総工数が減るなら勝手にやればいいだけじゃね?
リファクタリングで品質下がるなんて聞いた事無いわけだし。それとも単体テストレベルまでがっちり管理されてんの?
2018/04/16(月) 19:50:39.52
リファクタリングで増減する工数って、内部設計クラスレベル〜クラステストまででしょ
詳細設計省かずやる巨大案件でも無い限り、実装者に委ねられる部分やん。
ともすれば、やりたきゃやれって回答にしかならん。
2018/04/16(月) 20:03:20.01
>>36
> いや、リファクタリングで総工数が減るなら勝手にやればいいだけじゃね?

俺はやってるよ。リファクタリングで工数減るから
そもそも修正作業の中に自動的に組み込まれるものだから
あえて "リファクタリング単体で" 工数を取るなんてことはしない

だからリファクタリングのために工数くださいっていう発想が
そもそも間違ってるわけ。修正に伴う追加作業じゃない。
修正作業そのものなんだから
2018/04/16(月) 20:08:32.88
仕組みが悪いからって正常に動いてる箇所まで手を入れるってねーな
2018/04/16(月) 20:37:02.97
リファクタ自体は否定しないが、>>1は確実に技術に溺れて盲信してるアホだから許可出さない
2018/04/16(月) 21:02:09.30
>>39
正常に動いていると証明するテストをしてないってこと?

正常に動いていることを証明するテストを修正後にもやれば、
正常に動くと証明できるでしょう?
2018/04/16(月) 21:03:03.43
>>40
修正許可与えてるなら、どんな修正をしたとしても
許されるはずだけど?
2018/04/16(月) 21:22:15.99
>>38
修正が発生したときにしかリファクタしないの?
2018/04/16(月) 21:24:48.73
修正ってなんだよ、バグってんのか
機能追加だろうがなんでも修正って言う奴は素人でしょ
45仕様書無しさん
垢版 |
2018/04/16(月) 21:26:39.53
ただのレッテル張りじゃねえかw
46仕様書無しさん
垢版 |
2018/04/16(月) 21:27:14.47
素人というやつは童貞だ
イカ臭いプログラム書いてろ
と言ってるようなもの
2018/04/16(月) 21:30:14.08
>>43
なんどもリファクタリングは修正の一部だって言ってるじゃん
一部ってことはそれ以外も有るってことだよ

複雑なコードを読み解いて、リファクタリングしないで複雑なまま修正するのと
複雑なコードを読み解いて、リファクタリングしてから修正するのと
どっちがリスクが少ないかって話だ

前者だと、複雑なコードを読み解いた人(修正担当者)がいるにもかかわらず
別の人が、また大変な思いをして読み解いてレビューしなければいけない
そして、次同じところを修正する時、また複雑なコード読み解かなければいけない
2018/04/16(月) 21:32:16.33
みんな実装するだけで精一杯なんよ
2018/04/16(月) 21:33:31.81
リファクタリングは神の領域に達するものにのみ許される技。
素人はおとなしくExcel方眼紙でセル結合の練習でもしておけ。
2018/04/16(月) 21:36:56.37
>>47
そんな入門書の1章に書いてあるような話はいいよ、面白くないから
2018/04/16(月) 21:45:07.82
>>50
入門未満の人がいるんでね
2018/04/16(月) 21:48:55.54
入門レベルの奴でも上から目線になれるから張り切ってんのか
2018/04/16(月) 21:54:14.63
だから>>1にはやらせない
2018/04/16(月) 21:58:29.27
>>37
テストの品質が後工程に無関係ならな。
まあそんな現場が多いのは事実だが。
2018/04/16(月) 22:14:39.29
>>51
リファクタリングするときのレビューとかどうしてる?
設計レビューもだし、コードレビューもだけど
2018/04/16(月) 22:21:54.62
リファクタリングしてるのでNG
57KAC
垢版 |
2018/04/16(月) 22:42:11.58
>>47
お前さん、理想通りに開発が進めば
自動試験だけで完璧なものができるとか信じてる?
2018/04/16(月) 23:48:14.82
テストしづらいとか、クラスが肥大化しすぎて開発に支障があるとかならまだしも
見通しが悪いなんて理由でうごいてるもんをほいほい変えていいもんじゃろか
2018/04/17(火) 01:28:22.88
リファクタリングは超プロの領域
このスレには本当のリファクタリングが出来る奴はいない

elseなしに書き換えるのが精一杯のFラン説教野郎みたいなのがいるだけ
2018/04/17(火) 01:37:33.43
大規模リファクタリングの秘孔をついた
お前のプロジェクトはもう死んでいる
2018/04/17(火) 02:47:02.14
>>55
> リファクタリングするときのレビューとかどうしてる?
リファクタリングではないときはどうしてる?
それと同じなんだが。

まあそういう質問するってことはリファクタリングに限らず
そもそも設計もコードもレビューしてないってことなんだろうけど
まずはそこからやねw
2018/04/17(火) 02:49:20.05
>>57
> 自動試験だけで完璧なものができるとか信じてる?

だからレビューするんでしょ?

自動試験はバグがないことを証明する手段
その手段が正しいかどうかはレビューでみる。

人手でレビューして、テストした内容も記録されて
後なにがあれば完璧なものができると思います?
2018/04/17(火) 02:51:40.76
>>58
> テストしづらいとか、クラスが肥大化しすぎて開発に支障があるとかならまだしも
> 見通しが悪いなんて理由でうごいてるもんをほいほい変えていいもんじゃろか

機能追加とか修正するという前提なんだから、どちらにしろ変更するしかないでしょw
64KAC
垢版 |
2018/04/17(火) 08:07:55.30
>>62
自動試験してレビュー通ったらシステムインしてサービス開始すんの?
2018/04/17(火) 08:35:24.00
入門書第1章に書いてあることの受け売りなら長文で語るけど、具体的な話からは煽りで逃げるし、
体験から語ってると思えるような発言もないし、こいつ多分そんなにノウハウないよ
2018/04/17(火) 10:12:11.71
>>64
レビューもするし自動以外のテストもする
そこは普通の機能変更のときとなにも変わらない

ただその時のやり方が、複雑なコードを頑張って解析して
無理やりパッチを当てるような、あとから見た時に
なんでこんな面倒なことしてんの?と思われるような変更をするやり方から、

次回は複雑なコードを読まなくて良いように、複雑なコードを
シンプルに修正しつつ、まるで0からコードを書いた時のように
こういう機能を実現するなら、普通こう書くよねという
当たり前の形にするやり方に変わるだけ

変更するたびに複雑になっていくやり方をやめて
変更しても複雑にならない、むしろシンプルになるような
やり方をしましょうってこと

その後にやるテストうんぬんは、もともと機能変更でやる予定だったんだろ?
なら最初からやるって決まってることじゃないか
2018/04/17(火) 10:12:38.07
>>65
> 具体的な話からは煽りで逃げるし、
ん? どのレス?
2018/04/17(火) 10:13:52.53
レビューってさ
もう儀式になってない?
2018/04/17(火) 10:16:36.37
TDDってさ
組織的にガチガチにやるもんじゃなくて
設計者の間で守るべき密やかな秘密程度で
やったほうが良い気がすんのね。
2018/04/17(火) 11:00:00.11
>>68
それはどんなコード変更のときでもやるべきことだから
リファクタリングの話とは関係ないという注意だけしておくね
2018/04/17(火) 11:05:57.21
>>69
ようは、リファクタリング前に存在するテストコードが
リファクタリング後でも通ることで動きを変えてないことが
証明できれば良いのでTDDである必要はないよ。

具体的にはgit使えば歴史変えられるんで、
コード変更しつつテストコード書いて、
コード変更とテストコードでコミット分けて
あとでrebaseしてテストコードのコミットをコード変更の
コミットより前に持ってくれば良い
2018/04/17(火) 12:12:26.72
>>71
TDDは保護するためのテストじゃないから
2018/04/17(火) 12:23:08.56
>>68
レビューのつもりで儀式やってるだけのところが多いね。
2018/04/17(火) 12:26:04.15
>>72
> TDDは保護するためのテストじゃないから

TDDはテストではなく開発手法ですよ?

TDDという開発手法ではリファクタリングの前にテストを書き
書いたテストが、その後に行うリファクタリングが問題ないことを証明するんですよ

つまり
× TDD = 保護するためのテスト
○ TDD =「保護するためのテスト」を用いた開発手法

(あんたの言った「保護」がリファクタリングで壊さないように守るという意味である前提)

俺が>>71で言ったことは、TDDでやらなくてもテストで保護できると言ったんです。

https://postd.cc/test-driven-development/

> 簡単に言うと、TDDは機能を記述する前に自動テストを書く行為です。
> 例えば、Bobが素晴らしい新たなソーシャルネットワークのアイデアの
> ために新しい機能を開発する必要があるとしましょう。
>
> Bobは自動テストを書くことから始めますが、機能を正しく実装せずに、
> テストを失敗(赤色表示)させます。次に、Bobはテストを成功(緑色表示)
> させるための最小限のコードを記述します。緑色表示になったら、
> Bobはコードをきれいにし、テストを実行して機能が正しく
> 実装されたままであることを確認します(コードのリファクタリング)。
> 重複することなく、コードと自動テストは他の人も簡単に保守できます。
75KAC
垢版 |
2018/04/17(火) 13:27:11.82
>>66
えーと、まずはスレタイの
「リファクタリングすると全部テスト」については、
「全部テストするのは当たり前」という理解でOK?

それなら、大筋では意見に違いは無い。
2018/04/17(火) 13:49:22.47
>>75

before(リファクタリングしない場合)
 1. 機能追加やバグ修正などの変更依頼が来る
 2. 変更する
 3. 変更したので全部テストをする

after(リファクタリングする場合)
 1. 機能追加やバグ修正などの変更依頼が来る
 2. 変更する(リファクタリングもする)
 3. 変更したので全部テストをする


afterに対して、余計なことするな!
リファクタリングしたなら全部テストしろ!
と言われましても、beforeでも全部テストしてますよね?という話です。
2018/04/17(火) 15:18:23.57
リファクタリングしたら(その時点で、機能改修する前に)(単体)テストしろって要求なんじゃね?

まあ普通やるけど。
2018/04/17(火) 15:55:33.65
>>77
いやぁ、違うなぁ
リファクタリングさせないための方便として使ってるので
お前がリファクタリングするとテストする人が迷惑するんだぞ
だから余計なことするなという意味だろう。

だがもともとテストするわけで矛盾になるんだよな
2018/04/17(火) 16:16:34.63
>>74
そういうことじゃないんだよなぁ
2018/04/17(火) 16:19:52.69
>>78
違うよ
デグレしたときの徹底的なイジメがヤバイ
2018/04/17(火) 16:59:00.97
>>79
じゃあどういうことか書けよw

>>80
でもどっちみちコード変更するんでしょ?
リファクタリングしない方がデグレさせる可能性高いし
2018/04/17(火) 17:34:58.09
リリースしたらあとはそのシステムのことは知らん
だからリファクタリングする気もない
2018/04/17(火) 18:30:58.65
>>81
いやリファクタリングすると触らなくていいとこまで変更するじゃん
既存コードを変更するって時点でまずい
2018/04/17(火) 18:52:07.21
>>83
触らなくていいかどうかが重要なんですか?

重要なのはテストする所かどうかでしょう?
触った所でテストするなら、なにも問題ないはずですが?
2018/04/17(火) 18:54:58.04
>>84
そうはいかねぇだろ
文章化されてないけど
クリアしてるいろんな仕様があんだからよ
長い間運用してるとそういうのあるわけよ
2018/04/17(火) 19:09:26.69
>>84
触らなければテストもしなくていい
プロは余計なコードも書かないし、余計なテストもしない
87KAC
垢版 |
2018/04/17(火) 19:26:39.52
>>76
イメージはあってそう(スレ建てた奴とは違う意見)に読めたので、
具体的な内容を書いてみる。

大規模で難解なプロジェクトの一部機能で、
一カ所の編集バッファの数が足りず、
長い氏名の編集に失敗する仕様となっていた。
メモリの使用率なども調査済みで、編集文字数を増やすという仕様変更案件の場合。

バッファサイズを増やして関連箇所の試験して完了。

リファクタリングしたら、統べての試験をやり直し。

リファクタリングの有無でどちらが安いのか、
時と場合によるって認識はあってる?
2018/04/17(火) 20:51:10.01
WFとアジャイルとでも違うし
リファクタリングできる設計になってるの?
も大きな要素だが

動いているなら弄るなよは永遠の真理
2018/04/17(火) 21:08:17.92
>>88
そのレベルの現場が多いもんな。
2018/04/17(火) 22:21:50.39
バッファサイズの変更でなにをリファクタするというんだ

文字編集がややこしいから途中量の計算が難しいから処理変更とか?
2018/04/17(火) 23:28:38.99
>>85

リファクタリングの話は一旦おいておきましょう。


> そうはいかねぇだろ
> 文章化されてないけど
> クリアしてるいろんな仕様があんだからよ

それでどうやってコードを正しく変更できるんですか?
コードを変更する時に文書化されてない仕様を
間違って変えてしまうことがありますよね?

文書化されてない仕様をテストでどうやって
見つけるんですか?
2018/04/17(火) 23:36:25.31
>>87

> バッファサイズを増やして関連箇所の試験して完了。
>
> リファクタリングしたら、統べての試験をやり直し。

え?なんで?先に修正して試験するのがいけないんじゃん


1. リファクタリングをする
2. バッファサイズを増やす
3. 関連箇所の試験して完了

基本はこうですよ?
実際にはこんな大雑把作業じゃなくもう少し細かく
(ユニットテストと)リファクタリングと修正を何回か繰り返しますが

コードの変更とリファクタリングは切り離せません

コードの変更とリファクタリングの間に「関連箇所の試験して完了」
なんてものは入らないし入れたらダメです。
2018/04/17(火) 23:41:10.11
ちゃんと設計できてないから改修する度にいちいち事前のリファクタリングが必要になるんだろうな
2018/04/17(火) 23:41:50.05
>>91
まさにそのスレでその話してるんだからおいとくなよ…

現に存在するものに文句言ったってしょうがないだろ
あるんだから
非機能要件のないソフトなんてない

改修部分が少なければ少ないほど踏んじゃうリスクは減るだろう
2018/04/17(火) 23:48:58.45
> ちゃんと設計できてないから改修する度にいちいち事前のリファクタリングが必要になるんだろうな

そりゃリファクタリングの必要がない場合にはリファクタリングしませんよw

前提として、リファクタリングの必要があるコードだって
ちゃんと書きましょうか? そうすればもっとわかりやすくなりますね。

・リファクタリングをしない場合
1. ちゃんとした設計になっていない
2. そのままで無理やりバッファサイズを増やす
3. やってることが意味不明。変更に自信が持てない。コードレビューも大変。
4. 変更で問題が出やすい。そのたびに意味不明なコードと格闘する。
5. 関連箇所の試験して完了。


・リファクタリングをする場合
1. ちゃんとした設計になっていない
2. 設計を修正する(リファクタリング)
3. ちゃんとした設計に自然な形でバッファサイズを増やす
4. やってることが明確。変更に自信が持てる。コードレビューも簡単。
5. 変更に問題が出にくい。仮に出たとしてもちゃんとした設計になってるのですぐに修正できる
6. 関連箇所の試験して完了。

リファクタリングしたことで1工程増えたように見えますが、
ちゃんとした設計になってないものを無理やり修正した複雑なコードは
バグが出やすく、修正も大変になって時間がかかります。
それはわかるでしょう?
2018/04/17(火) 23:50:34.78
>>94
> 改修部分が少なければ少ないほど踏んじゃうリスクは減るだろう

改修部分をリファクタリングするんだから、
改修部分の量は同じですが?
2018/04/17(火) 23:55:28.57
>>96
具体的なイメージがわからない

本当に改修部分だけ改修だったらリファクタ部分消えちゃうじゃない
それってただの改修では
2018/04/18(水) 00:26:44.21
>>97
ちょっとなにかいいサンプルないか探したんだが
見つからなかったので、軽く例を書くわ


ある関数を改修部分することになった。これが100行を超える複雑なコード。
これをリファクタリングすると10行にできるとする
(ライブラリ使用の有無とかで、これぐらいざらにあるからw)

リファクタリングしない場合は無駄なコードで処理が入り組んでおり
入り組んだコードを時間をかけて頑張って解析し
そのまま修正するとなると数箇所を変更しなければいけなくなることが判明した
だが本当にその数箇所の変更で問題ないのか? コードが複雑なのでよくわからない
レビュー依頼した所で時間をかけて解析したものを他の人がすぐに分かるはずもない
多くの時間を費やすることになった。

リファクタリングして10行にまで減らすと、コードはシンプルになりなにやってるのか一目瞭然になった。
テストコードがあるのでリファクタリングの前後でコードが壊れてないことはわかる。
リファクタリングしたため修正箇所もたったの一行になった。
他の人も何の修正をしたのかすぐに分かる
99仕様書無しさん
垢版 |
2018/04/18(水) 01:15:38.23
>>98
おまいのレスが長すぎてリファクタリングしないと読めない
2018/04/18(水) 01:33:21.47
>>99
バイバイ
2018/04/18(水) 01:43:53.78
>>95
リファクタリングの必要性をそこまで感じないってことは、俺の設計ってちゃんとしてるんだろうなぁ
2018/04/18(水) 02:00:52.61
>>101
あと仕様変更がないってことだろうね。

仕様変更があれば、少なからず設計を変更することになるから
2018/04/18(水) 03:09:17.61
>>102
OCPができてないから仕様の変更がいろんなところに波及するんだよ
あとから直せばいいやじゃなくて、もう少し基本を身に付けよう
2018/04/18(水) 03:41:28.10
>>103
最初から何でも考慮した過剰な設計は止めましょう
こっちが基本ですよ?w
2018/04/18(水) 07:33:52.26
言語からスクリプト言語が呼べるようにしておけば汎用性は無限
バグも無限
2018/04/18(水) 07:50:27.25
>>98
リファクタの状況的にはありだけど

それって関数全体に手が入ってるわけだから改修量同じじゃないじゃん
テストで検出できない非機能要件を踏んじゃうリスクは明らかに増えてるよね?
2018/04/18(水) 10:52:23.05
数年経ってもリファクタバカは相変わらずだなw
未だに賛同者が現れないwwww
しかも、リファクタリングそのものではなく、リファクタバカに対する非賛同が増殖w

かたやリファクタすら許してもらえない信用と立場のリファクタバカが相変わらずの状態
かたや5年以上で完全に新規で作り直しの許可を与えられるようになった俺

技術書に溺れなくてよかった・・・。
108KAC
垢版 |
2018/04/18(水) 12:55:46.41
>>98
あぁ、そういう事か。
「リファクタリング」という範囲のイメージが合ってなかったんだな。

関数単位のリファクタリングならそのイメージでだいたい合ってる。

「外部インタフェース変えずに内部の設計から見直す」事を前提に話してたよ。


それはそうとして、
関数の処理削減などで処理速度が変わったのなら、同期など含めてその観点での試験はちゃんとやれよ?
2018/04/18(水) 18:26:19.09
>>107
意味がわからない
お前、どっち派?
2018/04/18(水) 19:52:23.21
関数レベルのリファクタリングしか語れないレベルだということはお察し
2018/04/18(水) 21:09:41.94
おれは何も察することができんのだが
2018/04/18(水) 22:40:51.02
>>106
> それって関数全体に手が入ってるわけだから改修量同じじゃないじゃん
> テストで検出できない非機能要件を踏んじゃうリスクは明らかに増えてるよね?

関数の中の1行を変えたとして、
その1行だけをテストして関数全体OKってできるんですか?

そもそも関数の中の1行だけをテストすることは不可能だと思います。

結局関数全体をテストするわけでしょう?
2018/04/18(水) 22:42:05.86
>>108
> 関数の処理削減などで処理速度が変わったのなら、同期など含めてその観点での試験はちゃんとやれよ?

もともと修正すべき関数なんだから、リファクタリングしなくても
テスト必須でしょう? なにを言ってるんでしょうか
2018/04/18(水) 22:50:36.63
>>112
でもさ
ソースで見たとき処理の下の方をちょっと修正すればいいところで
上の方の関係なさ気な箇所がバグったら言い訳できねぇよ
差分見て

何でここ弄ったの?今回の修正と関係ないじゃん

って言われたらちょっと嫌な空気流れるよ
2018/04/18(水) 22:52:17.90
>>106
> それって関数全体に手が入ってるわけだから改修量同じじゃないじゃん
「可読性」って言葉ご存知ですか?

「可読性」の二番目の文字は「読」です。
「書」ではないのです。

改修は「書く」ことですが、改修前には「読む」こと必須です。
では書く時間と読む時間、どちらが多くかかりますか?

もちろん読む方ですよね?
タイピングなんて1分間に200〜300なんて軽く行く

改修の書く量だけを見ても正解にはたどり着けませんよ。
改修量ではなく作業始めてからの改修時間を見るのが筋じゃないですかね?

リファクタリングは改修時間を短くします。
2018/04/18(水) 22:53:03.68
>>114
関係ない所を修正するのがいけないのでは?w
2018/04/18(水) 22:58:24.94
>>112
具体的なシナリオをいうとだ

日付をこりこり自前でデコードして値つくってる100行近いまぬけコードを
Javaのライブラリつかって数行にしてホルホルしてたら
ついうっかり見たことないようなフォーマットも受け入れちゃうようになってて
そんなん存在もわかんないからテストしてるわけなくて
でもユーザーは何の気なしに入れちゃうと入るからそのまま入れて、想定と異なるへんなデータが蓄積していって
集計バッチの演算とかにちょっとづつ毒虫のように影響を与え続けて
気が付いたらえらいことになってたりとか
2018/04/18(水) 23:00:32.39
>>115
理解できたらもとに戻してもいいのよ?
119KAC
垢版 |
2018/04/18(水) 23:03:03.55
>>113
修正内容に応じてテスト観点増やさないの?
費用対効果考えながらテスト計画立てないと破綻するぞ?
2018/04/18(水) 23:04:52.45
>>117
それはリファクタリングしなくても起こる話ですね。

何度も言うように、そこが修正箇所です。
リファクタリングしなかったとしても修正する場所です。

修正して、ついうっかり見たことないようなフォーマットも受け入れちゃうようになってて
そんなん存在もわかんないからテストしてるわけなくて
でもユーザーは何の気なしに入れちゃうと入るからそのまま入れて、想定と異なるへんなデータが蓄積していって
リファクタリングと何の関係もない話ですよね

>>118
> 理解できたらもとに戻してもいいのよ?
次修正する時、また改修時間(読む時間)がかかりますよね?
2018/04/18(水) 23:06:20.06
>>118
もとに戻すと改修時間(読む時間)が無駄になるだけですね。
次回修正するときも、また改修時間がかかります。

バグが見つかったら、また改修時間がかかります。
2018/04/18(水) 23:07:43.72
>>119
> 修正内容に応じてテスト観点増やさないの?

少ししか修正してないから、テスト減らしていいとでも?

変更したコードの量は少しでも、その影響範囲は
修正の量とは無関係です。

どれくらい影響があるか、それはコードが複雑であれば
有るほど不明です。
123KAC
垢版 |
2018/04/18(水) 23:17:24.91
>>122
テスト計画建てたこと無いの?
「全ての条件を網羅したらバグは無くなる」
は真だけど、それができないからみんな工夫してるんだよ。

バグのないものは存在しない

なんてのは、この業界の常識。
2018/04/18(水) 23:22:51.13
>>120
リファクタだけの問題じゃないが、リファクタも修正のうち
修正する以上人間がやらかすリスクはある

だったら修正は極力限定されているほうがいいだろ


>次修正する時、また改修時間(読む時間)がかかりますよね?
そしてリファクタ最大の問題
コードの読みやすさや理解しやすさは人の主観に大きく依存する

else取っ払ってタプル戻り値の関数に変えようとするやつもいるんだぞ

リファクタ後に修正したほうがテスト工数が削減できるとか、規約が新たにできたから合わせるとか
なにかしら明白な理由がないと
2018/04/18(水) 23:23:52.53
あとどうもやっぱりリファクタリングを
単なるコードの修正の意味で使ってるように見えるんだよねw

リファクタリングは、コードの修正、コードを綺麗にするを
英語にした言葉じゃないよ?

リファクタリングっていうのはやり方が決まってる。
スタート(修正前)とゴール(修正後)は自分で決めるけど
スタートからゴールへ至る道へは、決まったやり方を使って修正する
その決まったやり方っていうのは、動きを変えないための方法

数学の等式の変形みたいなもんだ
x - 2 = 8 を「移行」して
x = 8 + 2 に変形しても意味は変わらない

こういう「移行」みたいに変形しても意味が変わらないやり方に
ご丁寧に名前までつけてカタログ化されてる。

テスト書いて決められたやり方で式を変形するんだから
無計画なコードの修正なんかよりもずっと安全に変形できる
2018/04/18(水) 23:24:38.02
>>123
いや、だから、一行の変更なら
テスト減らせるってわけじゃないよって言ってるんだが?
2018/04/18(水) 23:25:40.46
>>124
> コードの読みやすさや理解しやすさは人の主観に大きく依存する

じゃあ主観に依存しないものを採用すればいいだけでは?

コードメトリクスを計測せよ
2018/04/18(水) 23:27:30.62
>>125
そうだね
リスクはひくいよ
Eclipseのリファクタ機能使うならなおさらだ

それでもたまにやらかすだろ!
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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