Slim Frameworkのプルリクエストで気になるのがありました。
public function testGetBasePath() { $this->router->setBasePath('/new/base/path'); $this->assertFalse(('/not/the/new/base/path' === $this->router->getBasePath())); $this->assertEquals('/new/base/path', $this->router->getBasePath()); }
まあ、別にそんなに気にすることでもないっちゃ無いし、テストとして十分なのですが、気になるポイントが2つあります。
その1
$this->assertEquals('/new/base/path', $this->router->getBasePath());
ここですが、ぺちぱーだとどうしても assertSame
を使いたくなるのではないでしょうか。
$this->assertSame('/new/base/path', $this->router->getBasePath());
assertSame
とassertEquals
には以下の違いがあります。
# このテストは落ちない $this->assertEquals(1, '1'); # このテストは落ちる $this->assertSame(1, '1');
そう、assertSameは型まで比較する厳密比較なのです。とはいえ、ここのassertEqualsをassertSameに変えたところで、受ける恩恵はそこまで大きくないのですが、やはりぺちぱーは型に恐怖心を持つべきかなとは思いますので、assertSameが使える場所ではassertSameを使いましょう。どっち使ったらいいかわからないけどassertEqialsってのはやめましょう。
その2
$this->assertFalse(('/not/the/new/base/path' === $this->router->getBasePath()));
これも気になってしまう!
$this->assertNotSame('/not/the/new/base/path', $this->router->getBasePath());
これでいいじゃないかー。意味はどっちも全く同じだし、この場合短いのでどちらでも可読性は変わんないですが、どっちかといえば読みやすいのは下何じゃないかなと思います。===
で比較してassertFalseは、どういう場合が通るのか?って一瞬考えてしまいませんかね?
まとめ
別にいいんだけどちょっと気になるプルリクがあったので紹介しました。

APIデザインの極意 Java/NetBeansアーキテクト探究ノート
- 作者: Jaroslav Tulach
- 出版社/メーカー: インプレス
- 発売日: 2014/07/02
- メディア: Kindle版
- この商品を含むブログ (9件) を見る

APIデザインケーススタディ ~Rubyの実例から学ぶ。問題に即したデザインと普遍の考え方 (WEB+DB PRESS plus)
- 作者: 田中哲
- 出版社/メーカー: 技術評論社
- 発売日: 2015/12/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る