先ほど、コードの外的な振る舞いの不変はテストによって確認できると書いた。それ以外にも不変を保証できる方法はないだろうか?
それはリファクタリングをサポートするツールを使い、そのツールを信用することだ。これは「リファクタリング本」でも触れられている。ツールによるリファクタリングの信頼性(振る舞いの不変性)は、コンパイラよりは劣るかもしれない。その機能をしばらく試してみれば、どの程度信用してよいか(あるいは、どんな使い方をすると失敗するか)学べるだろう。そして、信用に足ると確信できたリファクタリングサポート機能は、どんどん使おう。手作業で行うより圧倒的に早く、リファクタリング後の確認テストも不要になるのだから。
ただし、ツールで全てのリファクタリングを実行できるわけでもないし、ツールを使ったからといって本当にリファクタリングできている(コードがメンテナンスしやすくなっている)とも限らないことに注意してほしい。ツールはあくまでもリファクタリングの補助をしてくれるだけのものだ。リファクタリングを楽に行うためにツールを利用するのであって、ツールがリファクタリングしてくれるわけではないのである。
前編の締めくくりとして、VS 2017のリファクタリングサポート機能の1つを使って実際にリファクタリングする手順を紹介しよう。この他にどのような機能があるかは、後編で解説する。
まずリファクタリングに取り掛かる前の準備として、ソースコードをリポジトリにコミットしておこう。リファクタリングに失敗したとき、素早く元の状態に戻せるようにしておくのだ。
ソースコードリポジトリを使ったことがない人は、次の画像に示すようにしてローカルにGitリポジトリを作っておいてほしい。作成と同時に、その時点のソースコードがコミットされる。
ローカルGitリポジトリを作る手順(VS 2017 Communityエディション)
まず、これからリファクタリングを試してみるためのソリューションを用意する。そのソリューションを開いた状態で以下の作業を行う。
上: VS 2017 IDEの右下にある[ソース管理に追加]をクリックし、出てきたポップアップの[Git]をクリックする。
中: すると、Gitのローカルリポジトリが作成され、現在のソリューションが全て自動的にローカルリポジトリにコミットされる。この画像は、処理が終わった状態。左から2番目の数字「0」が、ローカルリポジトリにコミットされていない変更の数を示している(「0」になっているので、全てコミット済みの状態)。
下: ソリューションのフォルダをエクスプローラーで見てみると、「.git」フォルダが作られている。この中にローカルリポジトリのデータが格納されている。また、「.git」で始まる名前の2つのファイルは、Gitが管理に使うために追加されたものだ。
リファクタリングに取り掛かる前に、まだやったことがなければソースコードの復元方法を確かめておこう。ソースコードに何か変更を加えて保存した後、次の画像に示すようにしてリポジトリからソースコードの変更を元に戻す。いつでも元に戻せると分かっていれば、リファクタリングは怖くない。
リポジトリからソースコードの変更を元に戻す手順(VS 2017 Communityエディション)
ソースコードをどこか1箇所変更して保存しておく(ここでは上の画像の赤枠内にあるように文字列リテラルに追記した)。
上: ソリューションエクスプローラーで元に戻したいファイル(あるいは、プロジェクト/ソリューション)を選び、右クリックして出てきたメニューから[元に戻す]を選ぶ。確認ダイアログが出てくるのでOKする。
下: すると、リポジトリへ最後にコミットしたソースコードの状態に復元される。
これでいつでもコードを以前の状態に戻せる。安心してリファクタリングを行えるようになったということだ。次ページでは実際にリファクタリングをしてみよう。
Copyright© Digital Advantage Corp. All Rights Reserved.