リファクタリングの無限ループ

自分が完全に納得の出来るプログラムなんて書けないんだと思います.
PSS はそのベース部分に pdb というデータベース管理ライブラリを持っています.
PSS のデータベースは開発当初は問題文と正解文が記述された単純なテキストファイル,その後,メニュー構造を持ったテキストファイル,より構造化されたテキストファイル(pdb),そのUNICODE版(pdb2),さらにそのバイナリファイル版と変化してきました.現在はバイナリファイル版を SQL-RDB (SQLite) で置き換えた pdb3 になっています.
しかしながら pdb3 のインタフェースはあまりにも汚い.load/save が必要なクラスと不必要で自動読み込み・保存が可能なクラスが混在していたり,SQL からの独立性があまりにも低く,外部形式(XML, CSV, テキストファイル等々)との連携が難しいという状況にあります.

pdb3 の設計時に最も重要視したのは pdb2 をシームレスに置き換えることであったため,pdb2 と本質的に異なるデータの扱い方(オンメモリではないという点)をきちんと設計しきれていなかったように思います.
とはいえ,PSS7 を早期にリリースしなければならない(というよりも PSS にかける時間を少なくしなくてはならない)という状況において,pdb2 と同じ使用感を維持するという目標は設計当時には最も正しい選択であったように思われます.
設計当時においては,pdb3 が完成することによってより高い拡張性が得られるものと確信していました.

しかし現実は厳しいですね.PssBanner の PSS7 対応が驚くほど早く実現されたことで一定の成果を得たものと考えて,pdb3 の再設計・実装を行うべきか,それともこう感じるのはプログラマの性であるととらえてこのまま使い続けるべきか.

一つ言えることは,要求されているものは常に変化するので完璧な設計なんてできないということでしょうか.
つまり,(この例で言えば)設計の綺麗さ,拡張性の追求という要求と時間的な制限とをあわせて「要求」と呼ぶべきなんだと思います.