Tagged "SWE"

ソフトウェアの実装において、拡張性をどの程度考慮すべきか

設計・実装を進めていると「ここはこうしたほうが後々便利かも」と思うことはよくある。

今回は現在開発しているシステムのドメインモデルのうち、一つの概念が複数の型とふるまいをとるクラスを設計していた。インターフェイスや継承などでよく実装されるパターンで、ドメインの表現的にも明確に分類すべきものだった。そこで自分は教科書通り継承を使った実装をした。

DDD的にも教科書通りであり、ある程度正しいコードだと思っていた。そんなつもりで残したコードをレビューで「継承はなくし、単一のクラスで表現したほうが良いのではないか」という指摘をもらった。

どういうことだろうと思い、自分の胸中をそのまま言葉にしてみた。

「自分は拡張性を見込める場合は実装に落とし込んでしまいがちだが、今回のように、やめておいたほうがいいのではないかという指摘を受けることがままある。教科書的にも正しく、後々便利なはずなのに、なぜなのか?」