-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
第15章 テスト任せとコンパイラ任せ #19
Conversation
|
コンパイルエラーが起きると本書には書いてあったが、コンパイルは通って、テストが落ちる形になってしまった。
なぜコンパイルが通ったのか。 |
本書では、
|
しかし、ちょっとパッとわからなかったので飛ばす。次にステップで合流するし。これは言語依存かな。 |
着実に進めていく。 |
テストが落ちる。
|
Sumでのamount計算の時に、換算されていない。 |
Bankを通して、augendとaddendの両方を換算すればokなはず。それぞれで通貨が異なるので。 |
なんか |
グリーン。
|
Expressionは12章のここで出てきている。 なので、計算処理は全てExpressionで行い、最終換算で出来上がるものだけがMoneyということになる。 |
依存の終端から修正を始める。 |
グリーン。 SumにはCompositeパターンが良さそうに思うが、まだそこまではしない。二つ以上の引数を取るようになったら考える。 |
本書では、fiveBucksをExpressionにするとコンパイルエラーが起きると書いてあるが、起きない。 |
本書では、fiveBucksをExpressionにすると、
とある。もしかしたら、crystalの場合は、型はMoneyだと判定され、そこにplusがあるからなのかもしれない。 |
テストが通る。
|
これはおそらく、言語仕様。crystalのメソッド探索チェーンの仕様だと、たしかにplusメソッドは見つかってしまう。javaは「Expression型はExpressionで定義されたメソッドしか見えない」っぽいが、crystalでの今回のExpressionの実装はmoduleなので、includeするだけ。メソッドを付与するだけ。ExpressionをincludeしたMoneyをnewすれば、Expressionをincludeしていることは事実だし、plusメソッドを持っているのも事実。何ら間違いではない。 とりあえず進む。 |
コンパイルエラー。
Sumにplusがないよ。本書に近づいてきた。 |
グリーンになったが、空実装があるのでTODOリストに追加する。 |
TODO
|
MoneyからExpressionへの実装を一般化できそうだ。 |
振り返り。
|
15章終了。 |
TODO
$5+$5=$10Bank.reduce(Money)Moneyを変換して換算を行うReduce(Bank, String)