私は、「いつか必要になるかもしれない」という理由から、あなたが対処しなければならないすべてのケースを推測しようとして、手元の問題に合わせて設計し、設計を吹き飛ばさないことを大いに信じています。
基本的に、特定の要件のリストが与えられている場合、それに対して設計しますが、これは次のことを行うべきではないという意味ではありません。
- 設計の側面をソリューションでハードコーディングするのではなく、構成可能にします。実行時に渡されるパラメーターを介して、または起動時に(またはHUP後)に読み取られた外部構成を介して。
- コードをマジックナンバーでレースします。
- おそらく、既存のソリューションを適応させて、既存の状況と新しい要件に適したアプローチを提供した後、再利用できるものがすでに書かれているかどうかを確認しないでください。
「可能性のある未来」のために設計することの主な問題は、常に推測していることです。おそらく経験に基づいた推測を行いますが、「プッシュが突き出たとき」は、まだ単なる一連の推測です。
これを行うことにより、既知の要件で定義された特定の問題を解決するのではなく、一般的なケースに合うようにソリューションを絞る可能性が非常に高くなります。
どういうこと?「持っているのがハンマーだけだと、すべてが釘のように見え始めます。」
誰かが言うのを聞くたびにポンドがあればいいのに、「しかし、それは将来見られるかもしれない一般的なケースにより適応できるソリューションだ」と。