Pourquoi le code legacy est-il utilisé s’il présente autant d’inconvénients ? Tout simplement parce qu’il n’est pas toujours possible de l’éviter : au cours d’un projet, il n’est pas rare qu’un nouveau programmeur prenne en charge la maintenance et le développement du code. Alors que le développeur initial comprenait le code intuitivement dans la plupart des cas, les nouveaux membres de l’équipe doivent tout d’abord acquérir cette compréhension. Dans ce cadre, il se peut qu’ils ignorent ou ne comprennent pas parfaitement des parties du code.
Lorsque sur de nombreuses années, un code est entretenu, amélioré et édité de toute autre façon par de nombreux développeurs, il peut, au fil du temps, devenir un véritable patchwork toujours plus difficile à comprendre et à modifier. Le problème est qu’à partir d’un certain point, les mises à jour ou les modifications nécessaires ne peuvent plus être réalisées lorsque plus personne ne comprend le code et son effet.
Autre inconvénient du code legacy : il est impossible de réaliser les tests de régression, c’est-à-dire les tests automatisés, en raison de la densité, de la diversité et de l’incommodité de la programmation. Les développeurs devant travailler avec du code legacy doivent donc procéder à des tests manuels nettement plus conséquents. Les erreurs sont ainsi plus difficiles à corriger et les mises à jour sont plus difficiles à mettre en œuvre.