第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 :
funcTestAdditionOfDollarsAndEuros(t*testing.T){varportfolios.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