テストぬきリファクタリング (2)
開発者だけでできる自動化されたテスト (単体テストでも Selenium でも) なしの書き換えを「リファクタリング」というのは用語の誤用とまでいえるのか調べていた。
単体テストを書かずに行っている「その行為」をリファクタリングと呼ぶのはやめてほしい。
と 角谷さんが書かれている のと、Martin Fowler の リファクタリングの誤用 はみつけたんだけど、いまひとつ確信がもてない。
で「単体テストを書かずに行っている「その行為」をリファクタリングと呼ぶのはやめてほしい。/ 正確な定義ではなさそう」とはてなブックマークに書いたら
id:kzys 「正確な定義」には記述されてないけど「堅実なテストは、リファクタリングをする上で欠かせない事前条件」(『リファクタリング』p.89)で、この条件は定義(pp.53-54)から導かれると思いますが、そういうことでなく?
と、直々にコメントをいただいてしまいました。びっくりした。
原典はまえ図書館で借りて通読したきりなので、読み返してみます。「コピペの繰り返しはプログラミングじゃないよ…」くらいの温度で「リファクタリングじゃない」とは思います。
ただ、わざわざテストの無いものまで「リファクタリング」と呼ぶ理由も無いですね。「コードの整理」でいいのかも。
エントリを起こして返答いただき、かたじけないです。
ありがとうございます。
私の脊髄反射はブクマコメントだったので100文字制限のなかでは「定義」まで書けませんでした。
でも、読み返すことにつながるんだった結果的にはよかったです ;-)
ちなみに、refactoringとreworkingは区別されてます。 http://c2.com/cgi/wiki?WhatIsReworking
これも厳密な定義ではないと思いますが”Working Effectively with Legacy Code”で「テストがないコードはレガシーコードだ」と言っているのは、レガシーコードはリファクタリングできないからです。
同書ではなにがそこまで彼を駆り立てるのかというぐらい、テストを書けるようにするための方法を模索しています(同書はそのうち翻訳がでるはずです)。
ご参考まで。
WEwLC は読みました。読書会もいきましたよー。