リファクタリング

読み:りふぁくたりんぐ / 英語表記:refactoring

ソフトウェアの外部から見た振る舞いを変えずに、内部の構造を整理して、読みやすく保守しやすいプログラムに書き直すこと。

イマシルちゃんの解説

おもちゃ箱がぐちゃぐちゃだと、遊びたいおもちゃがなかなか見つからないよね。

中身は同じままで、種類ごとに分けて、取り出しやすく並べ直したら、すっきりするよね。
プログラムも、動きは何も変えずに、中をきれいに整理し直すことがあるんだ。
そうすると、あとから直したり、機能を足したりするのが、ぐっと楽になるんだよ。

より深い解説

定義

リファクタリングは、プログラムの機能(入力に対する出力)を変えずに、内部の構造を改善する作業である。重複したコードをまとめる、長い関数を分ける、分かりにくい名前を変える、といった小さな変更を積み重ねて行う。

主な例

手法内容
関数の抽出長い処理の一部を、名前を付けた関数に切り出す
名前の変更変数や関数に、役割が分かる名前を付ける
重複の除去同じ処理が何か所にもあるとき、1か所にまとめる
条件の整理複雑な条件分岐を、分かりやすい形に書き換える

進め方

振る舞いを変えていないことを確かめるため、変更の前後で、同じテストがすべて通ることを確認する。小さく変更してはテストする、を繰り返す。修正がほかの部分に影響していないかを確かめるテストを、回帰テスト(リグレッションテスト、退行テスト)という。

アジャイル開発(特にXP:エクストリームプログラミング)では、テスト駆動開発とともに、日常的に行う作業とされる。

似た用語との区別

用語内容
リファクタリング外部から見た振る舞いを変えずに、保守性の高いプログラムに書き直す
リバースエンジニアリングソースコードから、設計書や仕様書を作り直す
コンポーネント指向の開発ソフトウェア部品を組み合わせて、システムを開発する
回帰テストプログラムの修正が、ほかの部分に影響していないかを確かめる

実際の試験ではここに出る!

この用語が出てくる記事

↑