Skip to Content
テスト駆動開発を学ぶ
book

テスト駆動開発を学ぶ

by Saleem Siddiqui
May 2025
Intermediate to advanced
280 pages
3h 35m
Japanese
O'Reilly Media, Inc.
Content preview from テスト駆動開発を学ぶ

第3章 ポートフォリオ ポートフォリオ

この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com

小銭は賢く、ドルは愚かだ。1

疲れたことわざ

私たちは1つの通貨の金額を数字で掛けたり割ったりすることができる。今度は複数の通貨の金額を足す必要がある。

5 USD x 2 = 10 USD

10ユーロ×2=20ユーロ

4002 krw / 4 = 1000.5 krw

5米ドル+10ユーロ=17米ドル

1 USD + 1100 KRW = 2200 KRW

Money 冗長性のある乗算テストを削除する。

この章では、通貨の混合モードでの追加を扱う。

次のテストを設計する

次の機能(5米ドル+10ユーロ=17米ドル)をテストドライブするためには、まずプログラミングがどのように進化していくかをスケッチすることが有益だ。TDDは、一般的な神話に反して、ソフトウェア設計とうまく調和する!

機能リストにあるように、1ユーロの両替で1.2ドルもらえるとして、5ドルと10ユーロの合計は17ドルになるはずだ。

しかし、それは同じことだ:

1 EUR + 1 EUR = 2.4 USD

いや、むしろ明らかだ:

1 EUR + 1 EUR = 2 EUR

啓示である!2つ(またはそれ以上)のMoney エンティティを加算する場合、関係するすべての通貨間の為替レート(つまり、それぞれのMoney の通貨から、結果を表現したい通貨へ)さえわかっていれば、結果はどの通貨式でも表現できる。これは、関係するすべての通貨が同じであっても同じである。

チップ

テスト駆動開発では、RGRサイクルが終わるたびに一時停止し、意図的にコードを設計する機会を与えてくれる。

ドルにドルを足すとドルになる」というのは単純化しすぎである。 一般的な原則は、異なる通貨でMoney を足すと、Portfolio となり、(通貨間の必要な為替レートがあれば)いずれかの通貨で表すことができる、というものである。

Portfolio ?その通りだ!コードにドメインの現実を反映させることが重要なのだ。私たちは、保有株のコレクションを表すコードを書いている。2

2つ以上のMoney エンティティを追加すると、Portfolio が得られるはずである。このドメインモデルを拡張して、evaluate Portfolio を任意の特定のcurrency で実行できるようにすることもできる。これらの名詞と動詞は、コード内の新しい抽象化についてのアイデアを与えてくれる。

チップ

問題領域の分析は、新しいエンティティ、関係、関数、メソッドを発見する効果的な方法である。

この新事実を踏まえて、まず同じ通貨で2つのMoney ・エンティティを追加するという単純なケースを追加し、複数通貨のケースは後回しにしよう:

5 USD x 2 = 10 USD

10ユーロ×2=20ユーロ

4002 krw / 4 = 1000.5 krw

5米ドル+10米ドル=15米ドル

5米ドル+10ユーロ=17米ドル

1 USD + 1100 KRW = 2200 KRW

Money 冗長性のある乗算テストを削除する。

この機能を構築しよう:Money エンティティを一緒に追加する。まずは、Portfolio を新しいエンティティとして使って、同じ通貨で2つのMoney エンティティを追加するテストから始めよう。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

はじめての知識グラフ構築ガイド

はじめての知識グラフ構築ガイド

Jesus Barrasa, Jim Webber
エンジニアが学ぶ会計システムの「知識」と「技術」

エンジニアが学ぶ会計システムの「知識」と「技術」

広川 敬祐, 五島 伸二, 小田 恭彦, 大塚 晃, 川勝 健司
ユーザーストーリーマッピング

ユーザーストーリーマッピング

Jeff Patton, 川口 恭伸, 長尾 高弘
初めてのGraphQL ―Webサービスを作って学ぶ新世代API

初めてのGraphQL ―Webサービスを作って学ぶ新世代API

Eve Porcello, Alex Banks, 尾崎 沙耶, あんどうやすし

Publisher Resources

ISBN: 9798341650992