Viele der anderen Antworten befassen sich mit größeren Designproblemen oder sind eher abstrakt. Wenn Sie überlegen, was in Zukunft passieren wird, können Sie klare Techniken definieren, um den Code zukunftssicherer zu machen .
Denken Sie in erster Linie, dass in Zukunft jemand versuchen wird, dem Code eine Funktion hinzuzufügen, oder versuchen wird, Ihren Code an einer anderen Stelle wiederzuverwenden. Möglicherweise versuchen sie auch, eine Funktion im Code zu korrigieren. Natürlich ist nur ein guter sauberer Code ein erforderlicher Ausgangspunkt, aber es gibt auch einige spezifische Techniken, die durchgeführt werden können.
Defensive Programmierung : Überprüfen Sie Ihre Eingaben über das hinaus, was Ihre aktuelle Anwendung tatsächlich benötigt. Stellen Sie beim Aufrufen von APIs sicher, dass Ihre Eingaben erwartungsgemäß sind. In Zukunft werden die Leute neue Codeversionen zusammenmischen, so dass sich der Umfang der Fehler und die API-Rückgaben von dem, was sie jetzt sind, ändern werden.
Nicht definiertes Verhalten eliminieren : Viele Codes weisen ein Verhalten auf, das sich nur aus dem Nichts entwickelt. Bestimmte Kombinationen von Eingaben führen zu bestimmten Ausgaben, die eigentlich niemand beabsichtigt hat, aber nur so geschehen. Jetzt wird sich zwangsläufig jemand auf dieses Verhalten verlassen, aber niemand wird davon erfahren, da es nicht definiert ist. Jeder, der versucht, das Verhalten in Zukunft zu ändern, wird die Dinge versehentlich zerbrechen. Verwenden Sie jetzt Sicherheitsüberprüfungen und versuchen Sie, alle nicht definierten Verwendungen des Codes zu entfernen / zu blockieren.
Automated Test Suite : Ich bin sicher, Sie finden Bände, die über die Notwendigkeit von Komponententests geschrieben wurden. In Bezug auf die Zukunftssicherheit ist dies jedoch ein kritischer Punkt, damit jemand den Code umgestalten kann. Refactoring ist für die Aufrechterhaltung eines sauberen Codes unabdingbar. Fehlt jedoch eine gute Testsuite, kann das Refactoring nicht sicher durchgeführt werden.
Isolation und Trennung : Die Verkapselung und ordnungsgemäße Modularisierung ist ein gutes Konstruktionsprinzip, aber Sie müssen darüber hinausgehen. Sie werden häufig feststellen, dass Sie eine Bibliothek, eine API oder ein Produkt verwenden müssen, die / das eine fragwürdige Zukunft haben könnte. Möglicherweise aufgrund von Qualitätsproblemen, Lizenzproblemen oder der Weiterentwicklung durch die Autoren. In diesen Fällen dauert es etwas länger, bis eine Ebene zwischen Ihnen und diesem Code liegt. Reduzieren Sie die API auf das, was Sie benötigen, sodass die Kopplung sehr gering ist, um in Zukunft einen einfacheren Austausch zu ermöglichen.