YAGNIの「原則」では、必要になる前に機能を提供することに集中すべきではないと述べています。
私は通常、どんなルールよりも常識を使用する傾向がありますが、正当な理由があれば、それを決して使用しない可能性がある場合でも、過度に設計したり、将来の証明に役立つと感じることがあります。
私が今手にしている実際のケースは、多かれ少なかれ次のようなものです。
単純な専用通信プロトコル(OSI レベル 4)で実行する必要があるアプリケーションがあります。このプロトコルには、アプリケーションに堅牢性を提供する望ましい特性のセット (NORM 仕様に従うなど) がありますが、厳密には必要ではありません (UDP マルチキャストは許容できるパフォーマンスを発揮できます)。
また、このアプリケーションは将来 (確実ではありませんが) 他のクライアントによって使用される可能性が高く、独自のソリューションにアクセスできないため、別のソリューションが必要になるという事実もあります。私は、アプリケーションの別のクライアントの可能性が高いことを知っています。
それで、あなたの考えは何ですか?プロプライエタリ プロトコル用に設計し、リファクタリングやインターフェイス抽出などは本当に必要なときに任せるべきですか、それとも(それほど遠くない) 未来を考えて今設計すべきでしょうか?
注:明確にするために、一般的な質問 (いつ YAGNI に違反するか) に対するあらゆる種類の意見を聞くことに興味がありますが、現在のジレンマについてのアドバイスや考えが本当に欲しいです :)