44 votes

Qu'est-ce qui rend un code patrimonial ?

J'ai entendu de nombreux développeurs parler de code "hérité". La plupart du temps, il s'agit de code écrit par quelqu'un qui ne travaille plus sur le projet. Qu'est-ce qui fait qu'un code est un code patrimonial ?

Mise à jour en réponse à : "Quelque chose de transmis par un ancêtre ou un prédécesseur ou du passé". http://www.thefreedictionary.com/legacy . Il est clair que vous vouliez savoir autre chose. Pourriez-vous clarifier ou développer votre question ? S.Lott

Je recherche les symptômes du code hérité qui le rendent inutilisable ou qui en font un cauchemar à travailler. Quand est-il préférable de s'en débarrasser ? Je pense que le code devrait être jeté plus souvent et que réinventer la roue fait partie intégrante du développement. L'idéal académique de ne pas réinventer la roue est beau, mais il n'est pas très pratique.

D'un autre côté, il y a évidemment du code hérité qui mérite d'être conservé.

0 votes

Vous avez clarifié la question, mais n'avez pas changé le titre. Votre question porte MAINTENANT sur les symptômes d'un code hérité non maintenable. Veuillez également mettre à jour le titre de la question.

43voto

cletus Points 276888

En utilisant du matériel, des logiciels, des API, des langages, des technologies ou des fonctionnalités qui ne sont plus pris en charge ou qui ont été remplacés, généralement avec peu ou pas de possibilité de remplacer ce code, mais en l'utilisant jusqu'à sa mort ou celle du système.

26voto

Quassnoi Points 191041

Qu'est-ce qui fait qu'un code est un code patrimonial ?

Comme dans le cas d'un simple héritage, lorsque l'auteur est mort ou disparu, vous recevez en tant qu'héritier tout ou partie de son code.

Vous versez quelques larmes et essayez de savoir ce que vous allez faire de tous ces déchets.

23voto

Brian Rasmussen Points 68853

Michael Feathers propose une définition intéressante dans son livre Working Effectively with Legacy Code. Selon lui, le code patrimonial est un code sans tests automatisés.

7 votes

Quelle absurdité. Eh bien, ceux qui le peuvent, le font, ceux qui ne le peuvent pas, enseignent (ou coachent des équipes de développement de logiciels).

2 votes

Si vous considérez le code hérité comme un code difficile à maintenir, la définition est parfaitement logique.

0 votes

Désaccord : Le code sans tests automatisés == mauvais code (mais peut être destiné à des systèmes modernes, à jour, != anciens). Code avec tests automatisés == meilleur code, mais s'il est destiné à Windows ME, il est définitivement ancien.

17voto

ShuggyCoUk Points 24204

Il s'agit d'un terme très général (et souvent galvaudé), mais toutes les raisons suivantes sont légitimes pour qualifier une application d'ancienne :

  1. La base de code est basée sur un langage/une plate-forme qui n'est absolument pas pris en charge par le fabricant du produit original (souvent, ce fabricant a fait faillite).

  2. (vraiment 1a) La base de code ou la plate-forme sur laquelle il est construit est si ancienne qu'il est difficile et coûteux de trouver des développeurs qualifiés ou expérimentés pour le système.

  3. L'application prend en charge un aspect de l'entreprise qui n'est plus développé activement et pour lequel les modifications sont extrêmement rares, normalement pour le réparer si quelque chose de totalement inattendu change autour de lui (l'exemple canonique étant le problème de l'an 2000) ou si une réglementation/une pression externe l'oblige. Comme ces deux raisons sont pressantes et normalement inévitables, mais qu'aucun développement significatif n'a eu lieu sur le projet, il est probable que les personnes chargées de s'en occuper ne connaissent pas le système (et ses comportements accumulés et ses subtilités). Dans ce cas, ce serait souvent une raison d'augmenter le risque perçu et prévu associé au projet.

  4. Le système a été ou est remplacé par un autre. En tant que tel, le système peut être utilisé pour bien moins que ce qui était prévu à l'origine, ou peut-être seulement comme un moyen de visualiser des données historiques.

12voto

user17541 Points 119

L'héritage fait généralement référence à un code qui n'est plus développé - ce qui signifie que si vous l'utilisez, vous devez l'utiliser dans ses conditions d'origine - vous ne pouvez pas simplement le modifier pour qu'il prenne en charge le monde d'aujourd'hui. Par exemple, le code hérité doit fonctionner sur du matériel qui n'existe peut-être plus aujourd'hui, ou qui n'est plus pris en charge.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X