Closed1
MEMO レガシーコード改善ガイド(保守開発のためのリファクタリング)

協調クラスの偽装
privateな値をテストしたい場合、クラスを分離してInterfaceを設けると良い。テストのためにpublicにしてしまう事態を避けることができる。
例)
SaleクラスにScanというメソッドがあり、Scanした結果をDisplayに表示する場合、Scan結果の表示文字列は隠蔽されているとする。
IDisplay(showLine()メソッドを備えている)を別で作成して、SaleクラスにDIする。
テスト時に偽装クラスFaceDisplayを注入する。FaceDisplayは読み取り結果をpublicとすることで、テストで参照可能。本来のDisplayの挙動は知らなくても良い。
大体はMockでなんとかなるが、publicにしなければならない局面が出てきた時にクラスを切り出せないかを一度考える必要がある。
このスクラップは2023/11/04にクローズされました