株式会社シーポイントラボ|浜松のシステム・RTK-GNSS開発

【Git】ファイルの変更頻度でリファクタリングが効果的な場所に目安をつける

 Git は開発者がプロジェクトの中で行われた変更を記録し追跡するための便利なツールです。これは誰がいつ何を変更したか、そしてその変更がどのような影響をもたらしたかを理解するのに役立ちます。この変更履歴を元にコードの変更頻度を計算し、それをリファクタリングの対象を決定するために利用することができます。

 リファクタリングは既存のコードを整理し明確さや可読性を向上させる作業です。このためリファクタリングによって新しい機能の実装や修正を容易にすることができます。ただし全てのコードをリファクタリングすることは効率的ではありません。なぜなら変更が滅多に加えられないコードをリファクタリングしても、リファクタリングにかかったた時間がリファクタリング抜きに改修いた場合の時間よりも長くなりやすいからです。一応内部実装を読む必要がある場合は変更がない場合でもリファクタリングは効果的に働きますが、そういったことは大分レアケースです。内部実装を読まなくとも関数なりなんなりの入出力や説明のコメントを見れば十分なことが多いです。変更が加えられにくいコードに対してのリファクタリングが効果的でない一方で、頻繁に変更が行われるコードをリファクタリングすると開発速度が向上しやすいです。該当部のコードをあっちこっち行き来する時間が短くなるだけでも随分違う結果になります。

 そういった理由からどの部分をリファクタリングすべきかを決定するための指標が欲しくなります。この指標の一つとしてGit のログ情報を用いてコードの変更頻度を確認することが有効です。以下のコマンドで Git のログからファイルの変更頻度を抽出できます。

# プロジェクト全体を通しての変更頻度一覧
git log --name-only --pretty=format: | sort | uniq -c | sort -n
# ここ一か月の変更頻度一覧
git log --since="1 month ago" --name-only --pretty=format: | sort | uniq -c | sort -n

 説明は次です。

 こういったコマンドを使うことで頻繁に変更されているファイルや部分を特定し、それらを対象にリファクタリングを行うことでより効果的に開発の効率化を図ることができます。

 注意点としてこの方法はあくまで目安であり、全ての状況に対応するわけではないという点があります。例えばファイルパスが変更された場合、その変更履歴は新しいパスに対してはリセットされます。またコードが十分に整理されていてリファクタリングの余地がほとんどない場合、さらにリファクタリングしても大して早くならなかったりもします。

  •  この記事いいね! (0)
モバイルバージョンを終了