『リファクタリング』のサンプルコード(テストコード付き)をPHPで実装した

新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)

『リファクタリング』の第1章では、実際のコードのリファクタリングを体験することができます。本には詳細な手順が載っていますが、やはり手を動かして学びたい、という方も多いのではないでしょうか。

しかし、本書のサンプルコードには、「テストコード」という、リファクタリングを行う前提条件となるものが欠けています。そこで、テストコードを含んだものはないかなと探したところ、tobyweston/Refactoring-Chapter-1というリポジトリに、テストコード込みのものがありました。

ただ、テストコード込みでやるなら慣れ親しんだPHPの方がやりやすいよな、ということで、同様のもののPHP版を実装しました。ryo-utsunomiya/refactoring_php5で公開しています。

上のリポジトリの、masterおよびbefore_refactoringブランチが、リファクタリング前の状態です。ブランチをgit cloneするなりDownload ZIPするなりしてローカルに持ってきて使ってください。

phpunit.pharを同梱しているので、PHP実行環境さえあればテストコードを実行できます。PHPUnitのバージョンの関係で、PHP 5.6以上が必要です。また、テストのカバレッジを出したい場合は、XDebugというPHP拡張をインストールしてください。

リファクタリング前のテストコードのカバレッジは100%になっていますが、リファクタリングを進めていくと100%でなくなる場面が出てきます。その場合、独自にテストを追加していってください。

『リファクタリング』を参考にリファクタリングを行った結果はafter_refactoringブランチに含めています。リファクタリング後の実装はおおむねオリジナルに準拠していますが、集計処理にarray_sumを使う等、「PHPらしい」コードにもなっています。

コメントを残す