Engineer as a Lifestyle @tenkoma

What We Find Changes Who We Become -- Peter Morville著『アンビエント・ファインダビリティ 』

新訳版テスト駆動開発をPHPで写経した

f:id:tenkoma:20190109215900p:plain

テスト駆動開発

テスト駆動開発

旧訳(ピアソン)版をJavaで写経したことはあったけど、PHPではなかったので、正月に読んでいた。コードはGitHubに。

github.com

第Ⅰ部 他国通貨は完了。

第Ⅱ部 xUnitと付録B フィボナッチは気が向いたら写経しよう。

PHP で実装してみて

変数やプロパティの型宣言がないので、変更を省略した箇所が多い。 (ただしプロパティはPHP7.4で型宣言の機能が追加される予定(PHP: rfc:typed_properties_v2)なので、1年後はさらに型のエラーが利用できるはず) クラスをキャストするという概念もないので省略した。

HashMap に当たる機能が見つけられなかった。PHP: SplObjectStorage - Manualを利用してHashMap に近いものを実装しようかと思ったが写経の途中だったのでやめた。

assertEquals() は型チェックをしてくれないし、 assertSame() でオブジェクトの equals() を使ってくれないので、assertTrue()

$this->assertTrue($five->times(2)->equals(Money::dollar(10)));

というふうに書いた。(第4章 意図を語るテスト by tenkoma · Pull Request #6など)