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の出力処理について書きます。 下記リンクが非常に詳しかったので、これをもとにまとめてみたんですが、咀嚼できてないっぽい・・・・ もう1~2度修正がひつようかも。 Contents1 Javaの …

no image

文字列変換系処理まとめ

Javaで文字列の変換(全角、半角など)の処理のまとめです。 ブログに記事として書こうと思ったのですが、丸々コピペになってしまうので、それじゃあ元リンクを紹介したほうがいいかなと思い、今日は基本的にリ …

no image

Javaのarraycopy

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

no image

StreamのMap処理

Javaのstreamですが知れば知るほどいろいろな機能がありますね。 基本的にプログラムって配列(コレクション含む)とオブジェクトの処理が中心になるので、配列の処理をいかにうまくできるかは非常に大事 …

no image

ガベージコレクタに関して

本日はガベージコレクタに関して。 Contents1 ガベージコレクタとは?1.1 1 nullを代入1.2 2 参照変数を他のオブジェクトに割り当てる1.3 finalize()メソッドの定義 ガベ …