リファクタリング境界

2004年9月1日

リファクタリングメーリングリストで、最近よく議論される内容が、リファクタリングに該当するものか否かという話題です。こうした議論においては、常に針の上で何人の天使が踊ることができるかというテーマで議論する危険性が伴いますが、境界について考えることは有益な目的があります。

私の著書のリファクタリングの定義は、意図的に形式ばらないものとしています。その形式ばらないという点は、解釈に大きく委ねられているいくつかのフレーズに依拠しています。

  • 明確な挙動を変えることなく:注目すべき挙動は何かという疑問が生じます。本質的には、ソフトウェアは以前と変わらず動作するという意味ですが、その解釈はいろいろ考えられます。
  • 理解しやすく、変更しやすいようにする: これがリファクタリングの目的です。プログラムに加えられる変更は数多くありますが、私見では、リファクタリングとはすべて、理解しやすく、変更しやすいようにすることです。別の目的を持って行う同じ変更は、私にとってのリファクタリングではありません。

リファクタリングの本質とは、挙動を維持した小さな変更のシーケンスです。リファクタリングは正式に定義できるものではないという事実にもかかわらず、依然としてかなり明確な用語であり、リファクタリング誤用は避けたいと考えています。しかし、これらのケースのいくつかについて考える価値があると考えており、それらを異なる BLiKi エントリに追加しています: インターフェイスの変更はリファクタリングか不明なバグの修正はリファクタリングか最適化はリファクタリングか、および宣言の順序変更はリファクタリングか