リファクタリング作業を文書化し、進捗を追跡するためのテンプレートである。


プロジェクト情報

項目
プロジェクト/モジュール [プロジェクト名]
対象ファイル [リファクタリング対象ファイルの一覧]
作成日 [日付]
作成者 [氏名]
ステータス Draft / In Review / Approved / In Progress / Completed

エグゼクティブサマリー

目標

制約

リスクレベル


リファクタリング前チェックリスト

テストカバレッジの評価

指標 現状 目標 ステータス
ユニットテストカバレッジ __% ≥80%
統合テスト Yes/No Yes
全テストがパス Yes/No Yes

開始前に必要な事項


検出されたコードスメル

サマリー

# スメル 場所 深刻度 優先度
1 [例、Long Method(長すぎる関数)] [file:line] High P1
2 [例、Duplicate Code(重複したコード)] [file:line] Medium P2
3 [例、Feature Envy(機能の横恋慕)] [file:line] Low P3

詳細分析

スメル #1: [名称]

場所: path/to/file.js:45-120

説明: [問題点の詳細説明]

影響:

提案する解決策: [修正方法の概要]


リファクタリングのフェーズ

フェーズ A: クイックウィン(低リスク)

目的: 即効性のあるシンプルな改善

変更見積もり: [X ファイル、Y メソッド]

ユーザー承認の要否: Yes / No

# タスク ファイル リファクタリング ステータス
A1 変数 xuserCount に名称変更 utils.js:15 変数名の変更 [ ]
A2 未使用の oldHandler() を削除 api.js:89 デッドコードの削除 [ ]
A3 重複バリデーションを抽出 form.js:23,67 メソッドの抽出 [ ]

ロールバック計画: コミット A1〜A3 を revert


フェーズ B: 構造改善(中リスク)

目的: コードの構成と明確さを改善する

変更見積もり: [X ファイル、Y メソッド]

ユーザー承認の要否: Yes

依存関係: フェーズ A 完了が前提

# タスク ファイル リファクタリング ステータス
B1 長い関数から calculatePrice() を抽出 order.js:45 メソッドの抽出 [ ]
B2 OrderDetails パラメータオブジェクトを導入 order.js:12 パラメータオブジェクトの導入 [ ]
B3 formatAddress() を Address クラスに移動 customer.js:78 メソッドの移動 [ ]

ロールバック計画: フェーズ A 完了直後のコミットへ revert


フェーズ C: アーキテクチャ変更(高リスク)

目的: より深い構造上の問題に対処する

変更見積もり: [X ファイル、Y メソッド]

ユーザー承認の要否: Yes

依存関係: フェーズ A と B の完了が前提

# タスク ファイル リファクタリング ステータス
C1 価格 switch をポリモーフィズムで置換 pricing.js:30 ポリモーフィズムによる条件記述の置き換え [ ]
C2 NotificationService クラスを抽出 user.js:100 クラスの抽出 [ ]

ロールバック計画: フェーズ B 完了直後のコミットへ revert


詳細なリファクタリング手順

タスク [ID]: [タスク名]

対処するスメル: [スメル名]

リファクタリング技法: [技法名]

リスクレベル: Low / Medium / High

コンテキスト

Before(現状):

// 現状のコードをここに貼り付け

After(期待される状態):

// 期待されるコードをここに貼り付け

ステップごとの手順

  1. ステップ 1: [説明]

    • テスト: このステップ後にテストを実行する
    • 期待結果: 全テストがパスする
  2. ステップ 2: [説明]

    • テスト: このステップ後にテストを実行する
    • 期待結果: 全テストがパスする
  3. ステップ 3: [説明]

    • テスト: このステップ後にテストを実行する
    • 期待結果: 全テストがパスする

検証

コミットメッセージ

refactor: [リファクタリング内容を記述]

進捗管理

フェーズステータス

フェーズ ステータス 開始日 完了日 テストパス
A Not Started / In Progress / Done
B Not Started / In Progress / Done
C Not Started / In Progress / Done

発生した課題

# 課題 解決策 ステータス
1 [説明] [解決方法] Open / Resolved

メトリクス比較

リファクタリング前

指標 File 1 File 2 合計
コード行数
循環的複雑度
保守性指数
メソッド数
平均メソッド行数

リファクタリング後

指標 File 1 File 2 合計 変化
コード行数
循環的複雑度
保守性指数
メソッド数
平均メソッド行数

リファクタリング後チェックリスト


学んだ教訓

良かった点

改善余地

今後への提言


承認

役割 氏名 日付 署名
計画作成者
テクニカルリード
プロダクトオーナー

付録

A. 関連ドキュメント

B. 参考資料

C. 使用したツール