hitode909の日記

趣味はマリンスポーツですの日記です

汎用的な物を設計するのは難しい,特定の用途に特化した物のほうが簡単.
日付クラスを汎用的に作ろうとすると,世界各国のタイムゾーンとか,サマータイムとか,うるう秒とか,そういうのを作ることになる.そういうクラスは日付を正しくモデリングしているけど,サマータイムで存在しない時刻作ると例外出たりして,扱いにくくなったりする.アプリケーションによっては,そこまで精密な機能は要らないかもしれない.たとえば,日記書いた時刻を表示したいだけなら,数字を何個か持つだけのクラスで済むかもしれない.それくらいのほうが,日記を高速に配信できて便利かもしれない.
このクラスは汎用的であるとか,汎用的でないとか,一概に述べることもできなくて,解決したい課題と比べて,スコープ外にあるとか,単純すぎるとか,そういう関係で決まると思う.クラスの責任を明確にしておくことで,なんだこのクラス,全然使えないじゃん,みたいな批判を避けることができる.どのクラスも,解決したい課題と解法を持っているけど,それが正しく利用者に伝わらないときに悲しいことになる.