Avatar
Avatar
Kuniwak
手間がかかるのは逆の意見ですね。値空間にクラス不変条件を満たさないものがあるとき、クラス不変条件をあてにしているすべてのメソッドで防御のためのバリデーションの分岐を入れる必要が出てきます。余計な分岐が入るとテストケースが増えてテストのコストが上がります。またこのバリデーションの分岐の異常系にはいる原因はコンポーネント間の仕様の不整合か実装のバグで、いずれもその時の挙動を決めないといけなくなります。実装のバグや仕様の不整合を考慮した仕様を考えるわけでかなり不毛です (edited)
一人で開発しているようなものだったらそれで良いと思うのですが,クラス不変条件を破壊してしまう満たさなくなってしまうような変更を禁止もしくは自動検知できない以上は,複数人で開発するプロジェクトだともしそういった変更がもし混入してしまった時にすぐに気づけるようにという意味でも全てのメソッドで防御のための guard 分岐が必要だったり,混入を防ぐためにテストケースも結局必要になるかと思います. その辺はどうお考えですか? (あるいは実は禁止もしくは自動検知の良い手法が存在したりしますか?) (edited)