Supprimer le code inaccessible
Dans un langage basé sur des principes statiques, vous devez toujours savoir si le code est réellement accessible ou non: supprimez-le, compilez-le. S'il n'y a pas d'erreur, il n'est pas accessible.
Malheureusement, toutes les langues ne sont pas typées statiquement, et toutes les langues statiquement typées ne sont pas régies par des principes. Les choses qui pourraient mal tourner incluent (1) la réflexion et (2) la surcharge sans principes.
Si vous utilisez un langage dynamique ou un langage avec une réflexion suffisamment puissante pour que l'élément de code examiné puisse éventuellement être consulté au moment de l'exécution via la réflexion, vous ne pouvez pas vous fier au compilateur. Ces langages incluent Python, Ruby ou Java.
Si vous utilisez une langue avec une surcharge sans principe, le simple fait de supprimer une surcharge peut simplement changer la résolution de la surcharge en une autre surcharge en mode silencieux. Certains de ces langages vous permettent de programmer un avertissement / une erreur de compilation associé à l'utilisation du code, sinon vous ne pouvez pas compter sur le compilateur. Ces langages incluent Java (utilisation @Deprecated
) ou C ++ (utilisation [[deprecated]]
ou = delete
).
Donc, à moins que vous ne soyez très chanceux de travailler avec des langages stricts (on pense à Rust), vous pouvez vraiment vous tirer une balle dans le pied en faisant confiance au compilateur. Et malheureusement, les suites de tests sont généralement incomplètes, donc pas beaucoup plus d’aide non plus.
Cue la prochaine section ...
Supprimer le code potentiellement inutilisé
Plus probablement, le code est effectivement référencé, mais vous soupçonnez qu'en pratique les branches de code qui le référencent ne sont jamais prises.
Dans ce cas, peu importe la langue, le code est manifestement accessible et seule une instrumentation d'exécution peut être utilisée.
Dans le passé, j'ai utilisé avec succès une approche en trois phases pour supprimer ce code:
- Enregistrez un avertissement sur chaque branche suspectée de ne pas être prise.
- Après un cycle, émettez une exception / retournez une erreur lors de la saisie du code spécifique.
- Après un autre cycle, supprimez le code.
C'est quoi un cycle? C'est le cycle d'utilisation du code. Par exemple, pour une application financière, je m'attendrais à un cycle mensuel court (avec les salaires versés à la fin du mois) et à un cycle annuel long. Dans ce cas, vous devez attendre au moins un an pour vérifier qu'aucun avertissement n'est émis pour l'inventaire de fin d'année. Il peut utiliser des chemins de code qui, autrement, ne sont jamais utilisés.
Espérons que la plupart des applications ont des cycles plus courts.
Je conseille de mettre un commentaire TODO, avec une date, indiquant quand passer à la prochaine étape. Et un rappel dans votre calendrier.