Beaucoup d'autres réponses traitent de problèmes de conception plus vastes ou sont plutôt abstraites. Si vous envisagez l'avenir, vous pouvez définir des techniques claires pour aider à protéger le code à l' avenir .
Pensez principalement qu'à l'avenir quelqu'un essaiera d'ajouter une fonctionnalité au code ou tentera de le réutiliser ailleurs. Ils peuvent également essayer de corriger une fonctionnalité dans le code. Bien sûr, un bon code propre est un point de départ requis, mais certaines techniques spécifiques peuvent également être appliquées.
Programmation défensive : vérifiez les entrées au-delà de ce dont votre application actuelle a réellement besoin. Chaque fois que vous appelez des API, assurez-vous que leur entrée correspond à ce que vous attendez. À l'avenir, les utilisateurs mélangeront ensemble de nouvelles versions de code, de sorte que l'étendue des erreurs et les retours d'API changeront par rapport à ce qu'ils sont maintenant.
Supprimer le comportement non défini : De nombreux codes ont un comportement qui évolue à partir de rien. Certaines combinaisons d’entrées conduisent à certaines sorties que personne ne voulait vraiment, mais c’est ce qui se passe. Maintenant, inévitablement, quelqu'un se basera sur ce comportement, mais personne ne le saura car ce n'est pas défini. Quiconque tente de changer le comportement à l'avenir cassera les choses par inadvertance. Utilisez les contrôles de sécurité maintenant et essayez de supprimer / bloquer toutes les utilisations non définies du code.
Suite de tests automatisés : Je suis sûr que vous pouvez trouver des volumes sur le besoin de tests unitaires. En ce qui concerne la vérification future, il est toutefois essentiel de permettre à quelqu'un de refactoriser le code. La refactorisation est essentielle au maintien de la pureté du code, mais si vous ne disposez pas d'une bonne suite de tests, vous ne pouvez pas la refactoriser en toute sécurité.
Isolement et séparation : L'encapsulation et une modularisation appropriée constituent un bon principe de conception, mais vous devez aller au-delà. Vous constaterez souvent que vous devez utiliser une bibliothèque, une API ou un produit, qui peut avoir un avenir incertain. Peut-être en raison de problèmes de qualité, de problèmes de licence ou du développement continu des auteurs. Dans ces cas, prenez plus de temps pour mettre une couche entre vous et ce code. Découpez l'API selon vos besoins afin que le couplage soit très faible pour permettre un remplacement plus facile à l'avenir.