Skip to content
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

第08章 実装を隠す #12

Merged
merged 7 commits into from
Nov 6, 2017
Merged

第08章 実装を隠す #12

merged 7 commits into from
Nov 6, 2017

Conversation

at-grandpa
Copy link
Owner

@at-grandpa at-grandpa commented Nov 5, 2017

TODO

  • $5 + 10 CHF = $10(レートが2:1に場合)
  • $5 * 2 = $10
  • amountをprivateにする
  • Dollarの副作用どうする?
  • Moneyの丸め処理をどうする?
  • equals
  • hashCode
  • nullとの等価性比較
  • 他のオブジェクトとの等価性比較
  • 5CHF*2=10CHF
  • DollarとFrancの重複
  • equalsの一般化
  • timesの一般化
  • FrancとDollarを比較する
  • 通貨の概念

@at-grandpa at-grandpa changed the title 08章 第08章 実装を隠す Nov 5, 2017
@at-grandpa
Copy link
Owner Author

FrancのtimesとDollarのtimesがにているので重複を省いていく。

@at-grandpa
Copy link
Owner Author

もう二つのサブクラスは大した仕事をしていないので、この際消してしまいたい。が、一気に消すのはステップが大きすぎる。小さく進めていく。

@at-grandpa
Copy link
Owner Author

crystalの場合はいい感じに型推論っぽいことをしているので、この時点でコンパイラはエラーを吐かない。(Money 型には times メソッドが定義されていない、、などのコンパイルエラー)

@at-grandpa
Copy link
Owner Author

利用者側からDollarのサブクラスを消すことができた。テストからサブクラスを消去したことで、既存のコードに影響を及ぼさずに継承構造を変える権利を得た。

@at-grandpa
Copy link
Owner Author

あー、なるほど。こういうところになかなか気づけないから、「こうした方が良い」というイメージがわかないんだな。今回のこの修正で、疎結合になっていく具体的なステップがわかった。

@at-grandpa
Copy link
Owner Author

at-grandpa commented Nov 6, 2017

TODO

  • $5 + 10 CHF = $10(レートが2:1に場合)
  • $5 * 2 = $10
  • amountをprivateにする
  • Dollarの副作用どうする?
  • Moneyの丸め処理をどうする?
  • equals
  • hashCode
  • nullとの等価性比較
  • 他のオブジェクトとの等価性比較
  • 5CHF*2=10CHF
  • DollarとFrancの重複
  • equalsの一般化
  • timesの一般化
  • FrancとDollarを比較する
  • 通貨の概念
  • testFrancMultiplicationを削除する?

@at-grandpa
Copy link
Owner Author

振り返り

  • 重複を除去できる状態に一歩近づける為に、DollarとFrancにある二つのtimesのシグネチャを合わせた
  • せめてメソッド宣言だけは親クラスに移動した
  • FactoryMethodパターンを導入して、テストコードから二つのサブクラスの存在を消した
  • サブクラスを隠した結果、幾つかのテストが冗長なものになったと気づいたが、そのままにした

@at-grandpa at-grandpa merged commit bdf47e2 into master Nov 6, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants