skillup

技術ブログ

Java

リファクタリング

投稿日:2015年7月25日 更新日:

業務で大幅なリファクタリングをする機会があり、その際の注意だったり、気をつけるべきことなどをまとめておきます。

自分用なので自分にしかわからない言葉で書いてある可能性が大きいです。

気になる方は問い合わせてください(爆)

親クラスやユーティリティクラスに集合させる

プログラムの抽象度をできるだけあげるためにもなるべく、抽象的だったり、汎用的なクラスに処理を集めましょう。

とはいっても心がけるだけでは中々うまくいかないものです。そのために大事なのが下記のような考え方でしょう。

インスタンス変数にむやみにアクセスしない

変数はなるべく、ローカル変数で対処しましょう。

インスタンス変数にアクセスしていると当たり前ですが、ロジックがクラスに張り付いてしまい、簡単に移動できません。

なるべくスコープの小さいローカル変数をつかっておけば、移動が楽です。

クラスインスタンスのパラメーター化

Listで変数をループさせる作業というのは最も頻度の高い処理だと思います。

List<String>,List<Map<String,String>>などだったらいいですが、List<Product>など自作のクラスを使う場合、ジェネリクスの中身を動的に変えたいことがあります。

その場合List<T>などといった使い方をする必要がありますが、これができるとできないとで抽象度が大きく変わってきますので注意しておきましょう。

プログラムはメイン処理とサブ処理のシンプルな形にする

要はそのメソッドのクラスに対する関連度、依存度をなるべく下げておきましょう。

言葉だとイメージがしにくいですが、プログラムを書くときに、

A:メインの処理

B:サブ処理(Aから呼ばれる処理)、

C:サブ処理(Bから呼ばれる処理)、

・・・などとしておくとBを別のクラスにリファクタリングすることが困難です。※Cがあるため。

A:メイン処理 ,

B:サブ処理(Aから呼ばれる処理)

C:サブ処理(Aから呼ばれる処理)

としておくとBはAのみに関連しているためリファクタリングが簡単になります。

コーディング規約などはチェックリスト使用

どこまで厳密にするかにもよりますが、頭でその都度覚えようとすると必ず忘れますし、いずれ崩壊します。

チェックリスト化し、机の横に置きながらそれをすすめるようにしましょう。

テストコード

リファクタリングって特に本番運用中だとできなかったりします。理由としてはデグレードが怖いため。

デグレードを起こさないためにも安全弁としてテストコードを用意しておきましょう。

-Java
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Javaのarraycopy

最近あまりJava自体には触っていないですが、資格の勉強をコツコツとすすめていることもあり、新たな発見もあります。 8ヶ月ぐらいJava書いていますが、arraycopyというメソッドをはじめてしりま …

no image

ページャープラグイン dataTable

レコードを一覧表示する上で意外と面倒くさいのがページャーでしょう。 自力で作成してもよいのですが、なかなかこれが面倒だったりします。 また近年ではリンクを踏ませずに、スクロールするだけで表示ができる形 …

no image

配列の初期化&代入+Mapから別Map作成

最近、業務ではコードの量が肥大化し、とにかく短く書くことを心がけてます。 まあ、短ければいいってもんでもないんですが・・・ Listにクラスを使いするときに↓みたいな書き方を紹介したんですが、 [cr …

no image

リソースファイルの読み込み

リソースバンドルは基本的にJSFから参照して呼び出すことが多いんですが、もちろんプログラム内からも呼び出すことはできます。 書き方も単純でリソースバンドルをインスタンス生成してメッセージのキーで呼び出 …

no image

JSPでのインクルード

JSPで社内アプリを作る機会があったので、メモ。 基本的なこともまだわかっていないんですが、とりあえずでてきたものから紹介してきます。 インクルードから。 ヘッダー、フッターみたいな別々に分けたりする …