リファクタリング
レガシーコード改善ガイド
レガシーコード
テスト駆動開発

はじめに

レガシーコード改善ガイドはレガシーコードを扱う上で良い本だが、用語集を含めいかんせん読みづらい。そこで用語集を作ってみた。

用語集

  • 編集して祈る:とりあえず実装してから天に品質を任せる。
  • 保護して変更する:変更対象のソースコードのテストコードを描いてからテストする。
  • テストハーネス:自律したテスト用コード
  • 擬装オブジェクト:協調クラスを擬装したもの。モックオブジェクトを大まかに捉えらたもの(要クラス図)
  • 接合部:ソースコードを直接編集できなくても振る舞いを帰れる場所。プリプロセッサ接合部、リンク接合部、オブジェクト接合の三つがある。
  • 許容点:上記の具体的な場所。
  • モックオブジェクト:それっぽく動くように作りこうた擬装オブジェクト
  • 単体テストハーネス:単体テストを行うためのソフトウェア。xUNITとか
  • スプラウトメソッド:既存のメソッド内に追加する新しいロジックをメソッドにする。
  • スプラウトクラス:既存のクラスに追加する新しい制御をクラスにする。
  • ラップメソッド:既存のメソッドを同じメソッド名でラップして修正コードを付け加える。
  • ラップクラス:既存のクラスを同じクラス名でラップして修正クラスを付け加える。
  • 影響スケッチ(171):
  • 割り込み点:他の部分と切り離してテストがかける場所。
  • 絞り込み点:影響スケッチの矢印が集まる場所。
  • 仕様化テスト:現状の動作を仕様として表現した単体テスト
  • 検出用変数:デグレを検知するために埋め込んだ(グローバル)変数
  • 機能スケッチ(268):
  • 試行リファクタリング:ソースコード理解するに、ローカルリポジトリで行うリファクタリング。リモートにコミットはしない。

改善後のクラス図

レガシーコード.png

スプラウトメソッド/クラスを追加した時のシーケンス図

スプラウトメソッド_クラス.png

ラップメソッド/クラスを追加した時のシーケンス図

ラップメソッド_クラス.png