Ich bin der festen Überzeugung, für das jeweilige Problem zu entwerfen und Ihr Design nicht auszublasen, indem ich versuche, alle Fälle zu erraten, für die Sie etwas zu tun haben, weil "wir es eines Tages brauchen könnten".
Im Grunde genommen bedeutet dies bei einer Liste spezifischer Anforderungen nicht, dass Sie Folgendes nicht tun sollten:
- Machen Sie Aspekte Ihres Designs konfigurierbar, anstatt diese Aspekte in Ihrer Lösung fest zu codieren. Entweder über zur Laufzeit übergebene Parameter oder über eine externe Konfiguration, die beim Start (oder nach HUP'ing) gelesen wird.
- Geben Sie Ihren Code mit magischen Zahlen ein,
- Vermeiden Sie es, nachzuschauen, ob bereits etwas geschrieben ist, das Sie wiederverwenden können, möglicherweise nachdem Sie die vorhandene Lösung angepasst haben, um einen Ansatz bereitzustellen, der sowohl für die vorhandene Situation als auch für die neue (n) Anforderung (en) geeignet ist.
Das Hauptproblem beim Entwerfen für "mögliche Zukünfte" ist, dass Sie immer nur raten. Möglicherweise fundierte Vermutungen anstellen, aber "wenn es hart auf hart kommt", sind es immer noch nur eine Reihe von Vermutungen.
Auf diese Weise haben Sie auch die realistische Möglichkeit, Ihre Lösung auf den allgemeinen Fall abzustimmen, anstatt das spezifische Problem zu lösen, das durch Ihre bekannten Anforderungen definiert ist.
Was sagt das? "Wenn Sie nur einen Hammer haben, fängt alles an, wie ein Nagel auszusehen."
Ich wünschte, ich hätte ein Pfund für jedes Mal, wenn ich jemanden sagen hören würde: "Aber es ist eine Lösung, die für die allgemeinen Fälle, die wir in Zukunft sehen könnten, anpassungsfähiger ist."