AgentSkillsCN

refactoring

TDD 中的红-绿-重构循环中的重构原则

SKILL.md
--- frontmatter
name: refactoring
description: TDD の RED-GREEN-REFACTOR サイクルにおけるリファクタリング原則

リファクタリング: TDD の第3フェーズ

TDD の RED-GREEN-REFACTOR サイクルにおける最終ステップ。テストが通った後、機能を変更せずにコード構造を改善することに焦点を当てる。

重要な安全対策

リファクタリング前に動作するコードをコミットする

これが保護機構として機能する。問題が発生した場合に元に戻せ、git 履歴で改善を明確に分離できる。

戦略的優先順位

4つの階層で優先順位を付ける:

Critical(即座に対処)

  • 論理エラー
  • 知識の重複(DRY 違反)
  • 深いネスト

High(このセッション中に対処)

  • 説明のない値(マジックナンバー)
  • 不明確な識別子
  • 長い関数

Nice(後でスケジュール)

  • 軽微な改善
  • 専用ユーティリティの追加

Skip(変更しない)

  • すでに適切に構造化されている

DRY 原則のニュアンス

同じビジネス概念が複数回現れ、要件変更時に一緒に変更される場合に抽象化する

構造的に似ていても、意味的に異なる概念は分離したままにする。

絶対的な境界

失敗するテストによって駆動されていないコードは書かない

これは以下を防ぐ:

  • 投機的な機能
  • 早すぎる最適化
  • 不要な複雑さ

検証プロセス

リファクタリングを完了したと見なす前に:

  • テストが変更なしで通る
  • 動作の変更がない
  • 可読性が測定可能に改善されている
  • 投機的なコードがない

コミットフォーマット

code
refactor: <説明>

リファクタリングコミットは機能作業と混在させない。

リファクタリングのパターン

関数の抽出

長い関数から意味のあるまとまりを独立した関数に抽出する。

変数の抽出

複雑な式を説明的な名前の変数に抽出する。

ネストの削減

早期リターンやガード節を使用してネストレベルを減らす。

魔法の数値の除去

リテラル値を名前付き定数に置き換える。