YAGNI

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
  Sigles d’une seule lettre
  Sigles de deux lettres
  Sigles de trois lettres
  Sigles de quatre lettres
> Sigles de cinq lettres
  Sigles de six lettres
  Sigles de sept lettres
  Sigles de huit lettres

YAGNI (anglicisme, acronyme anglais de You ain't gonna need it, qui peut se traduire par « vous n'en aurez pas besoin ») est un principe d'extreme programming qui déclare que les programmeurs ne devraient pas ajouter de fonctionnalité à un logiciel tant que celle-ci n'est pas absolument nécessaire[1]. Ron Jeffries recommande par ailleurs : « mettez toujours en œuvre les choses quand vous en avez effectivement besoin, pas lorsque vous prévoyez simplement que vous en aurez besoin »[2].

Justification[modifier | modifier le code]

Selon ceux qui prônent l'approche YAGNI, la tentation d'écrire du code qui n'est pas nécessaire à l'instant présent, mais qui pourrait l'être dans le futur, entraine les inconvénients suivants :

  • le temps nécessaire est pris sur l'ajout, le test ou l'amélioration de fonctionnalités immédiatement nécessaires.
  • Les fonctionnalités supplémentaires doivent être debugguées, documentées, et maintenues.
  • Toute nouvelle fonctionnalité impose des contraintes sur ce qui peut être fait dans le futur, donc une fonctionnalité inutile pour l'instant risque la possibilité d'un conflit avec une future fonctionnalité nécessaire.
  • Tant que la fonctionnalité n'est pas réellement nécessaire, il est difficile de définir complètement ce qu'elle doit faire, et comment la tester. Si cette nouvelle fonctionnalité n'est pas correctement définie et testée, elle risque de ne pas fonctionner correctement lorsqu'elle sera un jour nécessaire.
  • Elle entraine l'écriture de code inutilement long, lent ou gaspillant des ressources. Le logiciel grossit et devient plus compliqué.
  • En l'absence de spécifications et d'un contrôle de version, la fonctionnalité peut être inconnue des programmeurs qui pourraient s'en servir.
  • Ajouter une nouvelle fonctionnalité peut suggérer d'autres nouveautés. Si ces fonctionnalités sont implémentées à leur tour, cela peut entrainer un effet boule de neige.

Voir aussi[modifier | modifier le code]

Notes et références[modifier | modifier le code]

  1. (en) Lowell Lindstrom; Carmen Zannier; Erdogmus, Hakan, Extreme Programming and Agile Methods - XP/Agile Universe 2004: 4th Conference on Extreme Programming and Agile Methods, Calgary, Canada, August 15-18, etc. (Lecture Notes in Computer Science), Berlin, Springer,‎ 2004 (ISBN 978-3-540-22839-4), p. 121
  2. (en) Ron Jeffries, « You’re NOT gonna need it! » (consulté le 2007-11-07)