コンテンツにスキップ

リファクタリング

リファクタリングについてまとめ
※随時更新

リファクタリングとは

リファクタリングは、コードの振舞いを変えずに内部構造を最適化すること

リファクタリングのコツ

  • 小さく、管理しやすい単位で行う
  • バージョン管理を行う
  • リファクタリング用にブランチを切る
  • リファクタリング前に計測を行う(パフォーマンス比較)
  • リファクタリング前後にユニットテストで確認する
  • リファクタリングは投資対効果が高い処理に行う(ボトルネック等、最適化の効果が最も高くなる処理)

ボトルネック(リファクタリングの対象)になりやすい処理

  • 大量のデータを扱っていて、スレッドやUIをブロックしている
  • メインスレッドで複雑なコードを実行している
  • 画像操作をしている
  • ファイルシステムを扱っている
  • データ分析をしている
  • ネストされたループ

リファクタリングの例

  • 未使用のメソッドを削除する
  • パフォーマンスを向上させる
  • 計算を単純化する(4÷2 => 4x0.5にする等)
  • 長く複雑なコードからメソッドを抽出する
  • Reflectionは重い

リファクタリング時の計測

stopwatchクラス
https://learn.microsoft.com/ja-jp/dotnet/api/system.diagnostics.stopwatch?view=net-8.0

using System;
using System.Diagnostics;
using System.Threading;

class Program
{
    static void Main(string[] args)
    {
        var sw = new Stopwatch();
        sw.Start();
        Thread.Sleep(10000);
        sw.Stop();

        TimeSpan ts = sw.Elapsed;

        string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
            ts.Hours, ts.Minutes, ts.Seconds,
            ts.Milliseconds / 10);
        Console.WriteLine("RunTime " + elapsedTime);
    }
}

その他

リファクタリングを題材にしたポッドキャスト
https://refactoradio.com/

Reference