Molte altre risposte affrontano tipi di problemi di progettazione più ampi o sono piuttosto astratte. Se pensi in termini di ciò che accadrà in futuro, puoi definire alcune tecniche chiare per aiutare a prova di futuro il codice.
In primo luogo, pensa che in futuro qualcuno proverà ad aggiungere una funzione al codice, o tenterà di riutilizzare il tuo codice da qualche altra parte. Potrebbero anche provare a correggere una funzionalità nel codice. Ovviamente avere un buon codice pulito è un punto di partenza richiesto, ma ci sono anche alcune tecniche specifiche che possono essere fatte.
Programmazione difensiva : consente di eseguire il controllo degli input oltre a ciò che effettivamente richiede l'applicazione corrente. Ogni volta che chiami API, assicurati di verificare che il loro input sia qualcosa che ti aspetteresti. In futuro le persone mescoleranno insieme nuove versioni di codice, quindi l'ambito degli errori e dei ritorni API cambierà da quello che è ora.
Elliminate Undefined Behavior : un sacco di codice ha un comportamento che si evolve dal nulla. Alcune combinazioni di input portano a determinati output che nessuno ha realmente inteso, ma solo così accade. Ora inevitabilmente qualcuno si baserà su quel comportamento, ma nessuno lo saprà dato che non è definito. Chiunque tenti di cambiare il comportamento in futuro, inavvertitamente romperà le cose. Utilizza ora i controlli di sicurezza e prova a rimuovere / bloccare tutti gli usi non definiti del codice.
Automated Test Suite : sono sicuro che puoi trovare volumi scritti sulla necessità di test unitari. In riferimento alle prove future, tuttavia, questo è un punto critico nel permettere a qualcuno di ridefinire il codice. Il refactoring è essenziale per mantenere il codice pulito, ma se manca una buona serie di test non puoi refactoring sicuro.
Isolamento e segregazione : l'incapsulamento e la corretta modularizzazione sono un buon principio di progettazione, ma è necessario andare oltre. Troverete spesso che è necessario utilizzare una libreria, un'API o un prodotto, che potrebbe avere un futuro discutibile. Forse a causa di problemi di qualità, problemi di licenza o sviluppo continuato da parte degli autori. In questi casi impiega più tempo per mettere uno strato tra te e questo codice. Taglia l'API verso ciò che ti serve in modo che l'accoppiamento sia molto basso per consentire una sostituzione più facile in futuro.