TL;DR
外から見た振る舞いを変えずに、既存のコードの内部構造を作り直すこと。Martin Fowler は、規律を持ってコードの構造を作り直す手法と定義している。
なぜ必要か
Martin Fowler の『Refactoring』の定義では、リファクタリングとは、観察できる振る舞いを変えずに、ソフトウェアを理解しやすく、変更しやすくするための内部構造の変更である。
仕組み
リファクタリングの中心は、振る舞いを保つ小さな変換を積み重ねることにある。1 つ 1 つの変換は小さいが、積み重ねると大きく構造を変えられる。各変換が小さいので失敗しにくく、変換のたびにシステムは完全に動く状態に保たれる。そのため、構造を作り直している途中でシステムを大きく壊すおそれが小さい。