テストぬきリファクタリング (2)

2009-01-09 20:35

開発者だけでできる自動化されたテスト (単体テストでも Selenium でも) なしの書き換えを「リファクタリング」というのは用語の誤用とまでいえるのか調べていた。

単体テストを書かずに行っている「その行為」をリファクタリングと呼ぶのはやめてほしい。

角谷さんが書かれている のと、Martin Fowler の リファクタリングの誤用 はみつけたんだけど、いまひとつ確信がもてない。

で「単体テストを書かずに行っている「その行為」をリファクタリングと呼ぶのはやめてほしい。/ 正確な定義ではなさそう」とはてなブックマークに書いたら

id:kzys 「正確な定義」には記述されてないけど「堅実なテストは、リファクタリングをする上で欠かせない事前条件」(『リファクタリング』p.89)で、この条件は定義(pp.53-54)から導かれると思いますが、そういうことでなく?

と、直々にコメントをいただいてしまいました。びっくりした。

原典はまえ図書館で借りて通読したきりなので、読み返してみます。「コピペの繰り返しはプログラミングじゃないよ…」くらいの温度で「リファクタリングじゃない」とは思います。

ただ、わざわざテストの無いものまで「リファクタリング」と呼ぶ理由も無いですね。「コードの整理」でいいのかも。

かくたに

エントリを起こして返答いただき、かたじけないです。
ありがとうございます。

私の脊髄反射はブクマコメントだったので100文字制限のなかでは「定義」まで書けませんでした。
でも、読み返すことにつながるんだった結果的にはよかったです ;-)

ちなみに、refactoringとreworkingは区別されてます。 http://c2.com/cgi/wiki?WhatIsReworking

これも厳密な定義ではないと思いますが”Working Effectively with Legacy Code”で「テストがないコードはレガシーコードだ」と言っているのは、レガシーコードはリファクタリングできないからです。
同書ではなにがそこまで彼を駆り立てるのかというぐらい、テストを書けるようにするための方法を模索しています(同書はそのうち翻訳がでるはずです)。

ご参考まで。

kzys

WEwLC は読みました。読書会もいきましたよー。

Leave a Reply