skillup

技術ブログ

Java

リファクタリング

投稿日:

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

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

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

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

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

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

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

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

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

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

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

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

例外処理について その2

以前、「例外処理について」で例外処理について記述をしたんですが、漠然としていたのともう1回まとめなおしたかったため、メモしておきます。 Contents1 例外とは?2 例外のクラス分け2.1 Thr …

no image

JavaEEとは?

JavaEEのブログといいつつ、JavaEEについて全然書いていませんでした・・・ ちょっとJavaEEについて書かせていただきます。 Contents1 そもそもJavaとは?1.1 Javaの定義 …

no image

Javaでのメール送信プログラム

Javaでメール送信のプログラムがあったんで、メモ。 SMTPの認証とかはせず一番簡単なパターンです。 ケースでいうとサーバーA、サーバーBがあり下記のようなケースです。 A メールサーバー(smtp …

no image

Glassfishの暴走に関して

JavaEEのアプリケーションサーバーではglassfishを使っているんですが、 メモリをかなり食うのと、頻繁に暴走してIDEからの処理を一切受け付けなくなることが多いです。 まだまだ全然対処法がわ …

no image

文字列操作(String系)

Javaの文字列について書きます。 Contents1 StringとStringBuilder1.1 文字列の追加はStringBuilder1.2 文字列の参照はString StringとStr …