Skip to content

リファクタリング

irof edited this page Mar 29, 2021 · 3 revisions

JIGを使用したリファクタリングの例

パッケージ間の相互依存を解消する

image

この相互依存の原因は、ソースコードのimport文だけでわかる場合と、それだけでは分からない場合があります。 完全修飾名で記述している場合はimport文は不要ですし、メソッドチェーンの途中で登場するものや、メソッドの戻り値を使用していない場合などは、ソースコードから見つけることは困難でしょう。

パッケージ内に数クラスしかないならば、全クラス丁寧に読めばわかるとは思います。 しかし確信が持てない場合は package-relation-depth{深さ}.additional.txt が使用できます。 このファイルは相互依存が存在する場合のみ作成されます。

# a <-> b
a.Hoge -> b.Fiz
b.Buz -> a.Fuga

# から始まる行には対象の相互依存を示します。 以降、該当パッケージ間のクラスの依存関係が全て出力されます。

ここでは a.Hoge クラスか b.Buz クラスにそれぞれ相手パッケージへの依存があるので、どちらかの依存を解消すれば相互依存は解消されます。

孤立した区分の発見

区分使用図で孤立した区分を発見出来ます。

image

(モザイクをかけています)

最上位および最下位の区分が孤立しています。 このような区分は本当に使用されていないか、画面やDBでのみ使用されている可能性があります。 ビジネスルールを表現しているとは言い難い状況と言えます。

ビジネスルールを表現する区分をサービスメソッドから直接もしくは間接的に使用することで、区分を使用してビジネスロジックを整理できます。

狙い・背景・思想

付録

JIGの設定と他ツールとの統合

JIGの利用シナリオ

JIGが提供しないもの

その他

参考リンク 🔗

Clone this wiki locally