Molte altre risposte affrontano tipi di problemi di progettazione più ampi, o sono piuttosto astratti. Se pensi in termini di ciò che accadrà in futuro, puoi definire alcune tecniche chiare per aiutare il codice a prova di futuro .
Pensa principalmente che in futuro qualcuno proverà ad aggiungere una funzione al codice o tenterà di riutilizzare il tuo codice altrove. Potrebbero anche tentare di correggere una funzione nel codice. Ovviamente solo avere un buon codice pulito è un punto di partenza richiesto, ma ci sono anche alcune tecniche specifiche che possono essere fatte.
Programmazione difensiva : controlla l'input oltre ciò di cui hai effettivamente bisogno nell'applicazione corrente. Ogni volta che chiami le API assicurati di controllare 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 i ritorni API cambieranno da quello che è ora.
Elliminate Undefined Behaviour : un sacco di codice ha un comportamento che si evolve dal nulla. Alcune combinazioni di input portano a determinati output che nessuno intendeva veramente, ma succede proprio così. Ora inevitabilmente qualcuno farà affidamento su quel comportamento, ma nessuno lo saprà poiché non è definito. Chiunque tenti di modificare il comportamento in futuro, inavvertitamente romperà le cose. Utilizza subito i controlli di sicurezza e prova a rimuovere / bloccare tutti gli usi indefiniti del codice.
Suite di test automatizzata : sono sicuro che puoi trovare volumi scritti sulla necessità di test unitari. In riferimento alle prove future, tuttavia, questo è un punto critico nel consentire a qualcuno di riformattare il codice. Il refactoring è essenziale per mantenere un codice pulito, ma se manca una buona serie di test non è possibile effettuare il refactoring in modo sicuro.
Isolamento e segregazione : l'incapsulamento e la corretta modularizzazione sono un buon principio di progettazione, ma è necessario andare oltre. Scoprirai spesso che devi 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 continuo da parte degli autori. In questi casi, impiega più tempo a mettere un livello tra te e questo codice. Taglia l'API in base alle tue necessità, in modo che l'accoppiamento sia molto basso per consentire una sostituzione più semplice in futuro.