Skip to content

リファクタリング計画テンプレート

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


プロジェクト情報

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

エグゼクティブサマリー

目標

  • [主目標: 例、決済処理の可読性向上]
  • [副目標: 例、コード重複の削減]
  • [第三目標: 例、テスト容易性の向上]

制約

  • [制約 1: 例、公開 API は変更不可]
  • [制約 2: 例、後方互換性を維持すること]
  • [制約 3: 例、データベーススキーマは変更しない]

リスクレベル

  • Low - 小規模変更、十分にテストされたコード
  • Medium - 中規模変更、ある程度のリスクあり
  • High - 大規模変更、慎重な対応が必要

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

テストカバレッジの評価

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

開始前に必要な事項

  • 全テストがパスしている
  • コードがレビューされ理解されている
  • バックアップ/バージョン管理が準備済み
  • ユーザーの承認を得ている

検出されたコードスメル

サマリー

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

詳細分析

スメル #1: [名称]

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

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

影響:

  • [影響 1]
  • [影響 2]

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


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

フェーズ 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メソッドの抽出[ ]
B2OrderDetails パラメータオブジェクトを導入order.js:12パラメータオブジェクトの導入[ ]
B3formatAddress() を Address クラスに移動customer.js:78メソッドの移動[ ]

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


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

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

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

ユーザー承認の要否: Yes

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

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

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


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

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

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

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

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

コンテキスト

Before(現状):

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

After(期待される状態):

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

ステップごとの手順

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

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

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

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

検証

  • 全テストがパスする
  • 振る舞いが変わっていない
  • コードがコンパイルできる
  • 新たな警告が出ていない

コミットメッセージ

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

進捗管理

フェーズステータス

フェーズステータス開始日完了日テストパス
ANot Started / In Progress / Done
BNot Started / In Progress / Done
CNot Started / In Progress / Done

発生した課題

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

メトリクス比較

リファクタリング前

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

リファクタリング後

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

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

  • 全テストがパスする
  • 新たな警告やエラーが出ていない
  • コードが正常にコンパイルできる
  • 手動検証が完了している
  • ドキュメントが必要に応じて更新されている
  • コードレビュー済み
  • メトリクスが改善している
  • ユーザーの承認を得ている

学んだ教訓

良かった点

  • [項目 1]
  • [項目 2]

改善余地

  • [項目 1]
  • [項目 2]

今後への提言

  • [項目 1]
  • [項目 2]

承認

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

付録

A. 関連ドキュメント

  • [関連ドキュメントへのリンク]

B. 参考資料

  • [コードスメルカタログへのリンク]
  • [リファクタリングカタログへのリンク]

C. 使用したツール

  • [テストフレームワーク]
  • [リンタツール]
  • [複雑度解析ツール]