リファクタリングをただのコード修正と思ってる人へ

■ このスレッドは過去ログ倉庫に格納されています
2010/05/29(土) 17:25:56
テストも書かないでリファクタリングとかうけるw

まずな、リファクタリングでは機能追加・修正は行わない。
動作はまったく同じでコードをきれいに書き換えること。

書き換えるといっても、これなら同じ動きだろ?って推測でやってはいけない。

まずテストを書く。ユニットテストをできるように、
単一のクラスでインスタンスを作る。

汚いコードなのだからたいていは依存関係のせいで単一ではクラスが生成できない
それを生成するために、クラスの動作を書き換える。
といっても元のコードは修正しない。継承やプリプロセッサを使って
依存関係を断ち切るために既存のコードを上書きする。
どうしてもそれが不可能な場合には、決められた手順で最小のコード修正を行う

そうやって既存のクラスのユニットテストを行う。
それでやっとリファクタリングが行える。
既存のクラスのユニットテストを通るように新たなコードに修正、
もしくは新規作成して置き換える。

この手順と考え方を守ってないのはリファクタリングではない。

で?
2010/05/29(土) 17:27:43
Eclipseのリファクタリングは名前変更もリファクタリングのひとつなんだよなあ
2010/05/29(土) 17:33:05
リファクタリングは結果ではない。
プロセスだ。やり方だ。

コードがきれいになったからリファクタリングをしたと
思うのは間違いだ。

バグを入れないのは当たり前だが、コードの動作を変えずに
決められたた手順をもちい、クラス間の依存関係を減らすことで
ユニットテストできるようにする作業がリファクタリングだ。
テストコードが増えてなければ、それはコードを書き直しただけで
リファクタリングとは呼ばない。

リファクタリングブラウザとは、このリファクタリング作業を簡単にするための
ツールであり、リファクタリングブラウザの機能を使った作業(名前変更など)そのものは
リファクタリングではない。
2010/05/29(土) 17:41:18
本当のリファクタリングを知ると、
新たな設計方針にたどり着ける。

テストしやすい設計。
クラスを単独で生成できるように
依存関係(クラスが別のクラスを使用するなど)が
少ない設計。

publicメソッドの引数には、なるべくクラスを使わない。
クラス内部で別のクラスを生成しない(必要な場合は外部から渡す)
2010/05/29(土) 17:59:47
>クラス内部で別のクラスを生成しない(必要な場合は外部から渡す)
全部main(String [] arg)で作るんですねわかりま…
2010/05/29(土) 18:00:34
宇宙飛行士様が来たぞ
2010/05/29(土) 18:07:01
リファクタリングがしたいと思ったとき、
こういう考えの流れになっていないとだめ


リファクタリングしたい
 ↓
リファクタリングするにはユニットテストコードが必要
 ↓
既存のコードを(なるべく)修正せずにテストするにはどうするか。
 ↓
(依存関係が無ければ簡単にテストコードを書けるが、たいていはそのままではテストコードかけないので)
既存のコード・クラスをどうやって他のコード・クラスとの依存関係から分離させるか。

この分離が一番大変な作業。
分離させることに成功したらあとは簡単。
ユニットテストを書いてコードを修正すればよい。
2010/05/29(土) 18:17:41
正直名前変更くらいしか使ってないな、それでも相当便利だが
2010/05/29(土) 18:24:16
>>8
名前変更(リファクタリングブラウザの機能)というのは、
例えて言うのなら小説を書く(リファクタリング)ときの文房具(リファクタリングブラウザ)と
同じ関係だよ。

文房具を使って文字を書いたり、消しゴムで消したりという作業は、
小説を書くための道具を使っているわけだが、
本質的には小説を書く行為そのものではない。
2010/05/29(土) 23:54:35
XXXはXXXXXであるべき、なんてXXは全くもってXXXだ。
11デフォルトの名無しさん
垢版 |
2010/05/30(日) 00:14:58
>>1
その通りです。
何か嫌がらせされてる気がする。
1211
垢版 |
2010/05/30(日) 00:52:51
ごめんなさい。取り乱しました。
ソフトウェアテストで良い本ありませんか。
2010/05/30(日) 02:51:03
>>12
レガシーコード改善ガイド
2010/05/30(日) 10:13:00
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
2010/05/30(日) 18:16:22
>>14
だと思った
>>1の一行目で分かった
2010/05/30(日) 19:47:36
リ略をただのコード修正だと思わないでよ
コーダの思いがこもってるんだからあ
2010/05/30(日) 22:16:42
どおりで重いと思った
2010/05/30(日) 22:34:43
>>16
釘宮風にたのむ
2010/05/30(日) 22:44:12
ばーかばーか
2011
垢版 |
2010/05/31(月) 06:09:05
>>13
ありがとうございます。
本見てみます。
2010/05/31(月) 21:06:25
>>19
チルノのパーフェクト算数教室?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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