ローカル変数をフィールドに変換
「ローカル変数をフィールドに変換」機能は、指定したローカル変数をフィールドに変換するだけではなく、初期化処理を行う位置の指定や静的変数化、定数化も可能なリファクタリング機能です。なお、定数化する場合は変数名を大文字に変更し、この変数にアクセスしている箇所も全て編集します。
まず、この機能を試すためのローカル変数elderをHelloEmpクラスのkyufukinに書き加え、これを用いるように書き換えます。
public short kyufukin() { //マジックナンバーのあるメソッド
int elder = 65;
if(getAge() <= 18) return TAGAKU;
else if(getAge() < elder) return 12000;
else return TAGAKU;
}
では、この機能を試してみましょう。今回はこのローカル変数elderを静的な定数に変更します。まず、ソースエディタでローカル変数elderを選択状態にします。
メニューの[リファクタリング(T)]‐[ローカル変数をフィールドに変換(B)]を実行します。
「ローカル変数をフィールドに変換」ウィンドウが表示されます。初期化を[フィールド宣言(R)]に変更すると、[フィールドを'final'として宣言]が選択可能なるので、定数化するためにチェックします。併せて[フィールドを'static'として宣言]を選択して静的定数化します。各項目にチェックを入れ終わったら[プレビュー(W)]をクリックします。なお、ここでフィールド名やアクセス修飾子を変更することもできます。
すると、プレビュー画面に切り替わります。一般的なコーディング規定に乗っ取って大文字に書き換えられた静的定数ELDERが追加されます。そして、kyufukinメソッドから、変数elderの定義が消え、定数を参照するように書き換えられることが分かります。確認できたら[OK]をクリックして変換を実行します。
エディタービューに戻るので、プレビューの通りに変更されていることを確認します。
今回は、ローカル変数を定数フィールドに変換するリファクタリングを行いましたが、変数のままにする場合は、実行後に「GetterおよびSetterの生成」(第8回で説明)と、「フィールドのカプセル化」(前述)を行うと良いでしょう。
まとめ
前回と今回の説明でコード生成機能とリファクタリング機能の一部を理解できたと思います。Eclipseには他にもたくさんのコード生成機能、リファクタリング機能が実装されていますので、一度試してコツをつかんでおくことをお勧めします。変更点を一つずつタイプしたり、エディタの文字列変換機能などで闇雲に一括変換したりする前に「あ、これはリファクタリングでできる」と思いつくことができれば、作業の効率や正確性が格段に向上するはずです。
さて、9回に渡ってお届けしてきました「Eclipse 3.4入門」は、これで一区切りとなります。Eclipseを初めて使う方をターゲットに、Eclipseの多彩な機能のエッセンスを紹介してきたつもりです。読者の皆さんのご興味や、ビジネス、学習などに少しでも貢献できていましたら幸いです。
Eclipseはバージョンアップを続けており、この連載で用いたEclipse 3.4(コードネーム:Ganymede)に続いて、既にバージョン 3.5(コードネーム:Galileo)が登場しています。次の機会には新バージョンを用いたアプリケーション構築例を紹介できたらと思っています。


![図33:[リファクタリング]‐[ローカル変数をフィールドに変換]を実行](http://cz-cdn.shoeisha.jp/static/images/article/4088/9-33s.gif)
![図34:[フィールド宣言]を選択し[フィールドを'final'として宣言][フィールドを'static'として宣言]をチェックして[プレビュー]をクリック](http://cz-cdn.shoeisha.jp/static/images/article/4088/9-34s.gif)
![図35:変更を確認し[OK]をクリック](http://cz-cdn.shoeisha.jp/static/images/article/4088/9-35s.gif)