Vous posez plusieurs questions.
Faut-il être à l'affût du code mensonger?
Bien sûr!
Devrions-nous comparer le [code] à toute documentation existante?
Cela ne pourrait jamais faire de mal, mais comme mentionné dans d'autres réponses, le plus souvent, cela vous amènera à trouver des problèmes dans la documentation , pas dans le code .
Ou est-ce que [code] est généralement la meilleure source pour ce qu'il doit faire?
Il est toujours la meilleure source pour ce qu'elle est en train de faire. La meilleure source pour ce que le code devrait faire peut être (une combinaison de) différentes choses, les principales étant:
- Le code lui-même;
- Le code appelant;
- Commentaires dans ce code;
- Documentation;
- Tests unitaires;
- Tests d'intégration et de régression;
- Le programmeur;
- L'utilisateur final;
La «meilleure» source (ou une combinaison de ces sources) dépend de votre situation.
S'il s'agit d'un code agile, est-il moins susceptible de mentir, ou ce code ne peut-il pas mentir du tout?
Je ne sais pas ce que vous entendez par "code agile", AFAIK "agile" se réfère généralement au processus de codage. Supposons que vous vouliez dire «code créé dans un processus de programmation agile», alors je pense qu'il est sûr de dire qu'il peut toujours mentir. La probabilité de mentir par rapport au code créé par exemple dans des projets de style cascade est une question subjective (personnellement, je ne pense pas qu'il y ait une grande connexion).
Note de bas de page
Tout ce qui précède repose sur l'hypothèse que le code peut mentir, et qu'il s'agit d'un exemple basique (quoique peu élaboré):
public int DivideByTwo(int input)
{
return input / 3;
}
Ceci est juste un exemple où je dirais que "code ment", @ user61852 en a quelques autres (code inaccessible, complexité du code ne correspondant pas à la complexité du problème, mauvaise dénomination), et je pense qu'il y en a beaucoup plus. Wikipedia a un résumé quelque peu décent des mensonges , beaucoup d'entre eux peuvent être trouvés en code.
Notez que si vous vous disputez avec quelqu'un, assurez - vous que celui-ci ne veut pas dire par "le code ne peut mentir" que "le code fait ce qu'il fait". En substance, l'autre personne ici définit en utilisant une définition de "mensonge" qui est si étroite qu'elle peut déclarer l'énoncé "le code ne peut pas mentir" comme un axiome / vérité fondamentale. Dans ce cas, il est probablement préférable d'être d'accord avec son axiome.