ミノ駆動本14.2で紹介されたリファクタリングのやり方を理解する
引用ツイートも一読
自分がやるリファクタリングともちょっと違うと思った。写経して理解する
最初にあるのはDeliveryManager。リファクタリングした結果、これを削除したい
スタティックメソッドでの実装
Product(データクラス)
ゴールは図14.1の構造(ここにDeliveryManagerはない)
説明用の例と理解
図14.1(導入したいクラス)を追加
DeliveryManagerの代わりにDeliveryCharge
あるべきクラス(DeliveryCharge)についてテストを書く
落ちるべきときに落ちることを確認
通るべきときに通るテストであることを確認(仮実装っぽい)
RED -> GREENを通してテストは間違えていないことを確認したと理解
感想:仕様化テストの趣もある
DeliveryChargeの実装をDeliveryManagerを使って書き換え
DeliveryManagerにテストコードを書いていくのではない
code:natural_way.py
class DeliveryManagerTestCase(TestCase):
def test_pay_charge(self):
...
def test_free_charge(self):
...
DeliveryManagerは残さないので上のようなコードは書かないという理解
DeliveryManagerを使って書き換えてテストが通る
これでリファクタリングで間違えていないことを確認できていると理解
疑問:実際DeliveryManagerのように消し去るリファクタリングはあるのか
私の経験では実世界のコードでは見ないような
もしかすると関数でラップして、最後にインライン化したら消し去ることになるのかも(TODO 要検証)
買い物カゴの動き、最初は空で商品が1つずつ追加されていく!すごい