[社内勉強会レポート] 『テスト駆動開発』読書勉強会 #2
はじめに
こんぬづは、沖縄料理を出すお店では「白百合」という泡盛を真っ先に探してしまう田中です。
さて本題に入っていきましょう。
この会の趣旨
この会の趣旨については、第一回のまとめをご覧ください。
それではまとめていきます。
4章 「意図を語るテスト」
概要
値をそのまま比較するのではなく、本来比較したい対象である型のオブジェクト同士の比較を行うことで、よりテストの意図を明確にすべきだと紹介された章。
話し合われた内容
- Dollar同士を比較したいので、その型のオブジェクト同士で比較するのは良いと思った。意図が明確になっている
- 「amountをprivateにするべき」というのは、アクセス修飾子に気を配る人でないと気づかないポイントだと思った。privateでなくてもテストや実装にさし障ることはないので。もともとamountの性質がprivateであることを意識してtodoリストに置いていた効果が表れている。
times
がequals
の実装に依存していることが気にかかった。(equals
がamount同士の比較になっているという依存)five.times(2)
というインターフェースが読みづらい。fiveが何者か、timesが何を意味した関数なのかがわかりづらい。- Dollarオブジェクトを掛け算するという意味だが、お金がお金自身を増やすようなことはなくて、お金を管理する第三者的なオブジェクトを登場させるほうが良くなりそう
- おそらくその概念はこのあと出てくるという話でおさまった
- 「テストに意図を持たせるときに普段意識していることってなにかある?」
- 「BDDで書いている場合に、そのテストに関係のあるcontextの範囲でbeforeEachを使い分けるとかは工夫している。」
5章 「原則をあえて破るとき」
概要
他の国の通貨、Francを登場させるので、愚直にFrancクラスをDollarと同じようにコピペで作った章。
話し合われた内容
- 同じ作りをコピペしただけなので、コンパイルは通るという安心感
- 本来ならFrancを作らず、いきなり通貨という概念を抽象化する一歩を踏みがちだが、Francという概念をそのまま登場させて、早く確かなステップを踏むというアプローチは良いと思った
- TDDを回す良いお手本的だった
まとめ
少しずつ多国籍通貨に関わるロジックが実装されてきました。エンジニアは命名や役割についてうるさい(褒め言葉)というのが如実に現れた議論内容でした。私はこの先も前もって読んでいるので、今後どのようにモデルが改良されていくかわかっているのですが、愚直に書いていく方針は、初心者がこの本を読んだときにどんな風にモデルを改良していくのかが良いかがわかりやすくて良いと思いました。
実際に本を読んでいる方がこのエントリを読んで、参考になることがあれば幸いです。