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

テスト駆動開発を学ぶ

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

第8章 ポートフォリオの評価 ポートフォリオを評価する

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

お金そのものが失われることも、作られることもない。ある認識から別の認識へと移されるだけだ。魔法のようなものだ。

ゴードン・ゲッコー『ウォール街(映画)

我々は、Portfolio にあるいくつかのMoney エンティティを、どのように単一のcurrency に変換するかという問題について、ぐずぐずしてきた。もうぐずぐずしないことにしよう!

次に紹介するのは、混合通貨を扱う機能だ:

5米ドル×2=10米ドル

10ユーロ×2=20ユーロ

4002 krw / 4 = 1000.5 krw

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

テストコードを本番コードから分離する

冗長性テストを削除する

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

1 USD + 1100 KRW = 2200 KRW

ミキシング・マネー

異種通貨の組み合わせは、コードに新しい抽象化(ある通貨から別の通貨への変換)を作成することを要求する。 そのためには、私たちの問題領域から引き出された、通貨変換に関する基本規則を確立する必要がある:

変換は常に2つの通貨を関連付ける。

これは、すべての為替レートが独立したものであってほしいからだ。現実には、複数の通貨が1つの通貨に「ペッグ」されていることがある。これは、特定の為替レートが事実上固定されていることを意味する。1そのような場合でも、それぞれのペッグ関係を別個のペアとして扱うことが重要である。

換算とは、ある通貨から別の通貨へ、明確に定義された為替レートを適用することである。

為替レートとは、「交換元」の通貨1単位に対して「交換先」の通貨が何単位もらえるかということで、通貨交換の重要な要素である。為替レートは小数で表される。

一対の通貨間の2つの為替レートは、算術的に 互いに逆数である場合もあれば、そうでない場合もある。

例えば、EURからUSDへの為替レートは、USDからEURへの為替レートの数学的逆数(すなわち、1/x)である場合もあれば、そうでない場合もある。

ある通貨が他の通貨との為替レートを定義していないことはあり得る。

これは、2つの通貨のうち一方が兌換不可能な通貨だからかもしれない。2

通貨変換には上記のすべての考慮事項が含まれることを考えると、どのように実装すればいいのだろうか?答えは、テスト駆動のシナリオを1つずつ作っていくことだ!

まずは、機能リストの次の項目にリストアップされているシナリオ、つまりEURからUSDへの変換をテストドライブすることから始めよう。これは、"convert "メソッドの足場と、EURからUSDへの単一の為替レートをセットアップするのに役立つだろう。為替レートは一方向なので、この特定のレートを "EUR→USD "と表すことにする。

この1つのシナリオから始めるということは、機能リストにさらに項目を追加する可能性があるということだ。それでいいのだ。慎重なペースでコントロールされた進歩を遂げることは、悪い話ではない!

Go

ドルとユーロの足し算を表すために、新しいテストをmoney_test.go

func TestAdditionOfDollarsAndEuros(t *testing.T) {
    var portfolio s.Portfolio
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
初めてのGraphQL ―Webサービスを作って学ぶ新世代API

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

Eve Porcello, Alex Banks, 尾崎 沙耶, あんどうやすし
ユーザーストーリーマッピング

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

Jeff Patton, 川口 恭伸, 長尾 高弘

Publisher Resources

ISBN: 9798341650992