Fai varie domande.
Should we be on the lookout for lying code?
Certo!
Should we be comparing [code] against any existing documentation?
Questo non potrebbe mai far male, anche se come menzionato in altre risposte, molto spesso questo ti porterà a trovare problemi nella documentazione , non nel codice .
Or is [code] usually the best source for what it needs to be doing?
È sempre la migliore fonte per ciò che fa è . La migliore fonte di ciò che il codice dovrebbe fare può essere (una combinazione di) cose diverse però, le principali sono:
- Il codice stesso;
- Il codice chiamante;
- Commenti in quel codice;
- Documentazione;
- Test unitari;
- Test di integrazione e regressione;
- Il programmatore;
- L'utente finale;
Quale è la fonte "migliore" (o la sua combinazione) dipende dalla tua situazione.
If it is agile code, is it less likely to lie, or can that code not lie at all?
Non sono sicuro di cosa intenda per "codice agile", AFAIK "agile" di solito si riferisce al processo di codifica. Supponendo che tu intenda "codice creato in un processo di programmazione agile", allora penso che sia sicuro dire che può mentire ancora. Quanto è probabile mentire, rispetto al codice creato ad es. i progetti in stile cascata sono una questione soggettiva (personalmente non penso ci sia una grande connessione).
Nota
Tutto quanto sopra è sotto il presupposto che il codice può mentire e che questo sia un esempio di base (benché forzato):
public int DivideByTwo(int input)
{
return input / 3;
}
Questo è solo un esempio in cui direi "code bugie", @ user61852 ha alcuni altri (codice non raggiungibile, complessità del codice che non corrisponde alla complessità del problema, cattiva denominazione), e penso che ce ne siano molti altri. Wikipedia ha un sommario di bugie abbastanza decente, molti di loro possono essere trovati codice.
Nota che se sei in una discussione con qualcuno, sii sicuro che l'altra persona non significa "il codice non può mentire" che "il codice fa quello che fa". In sostanza, l'altra persona qui sta definendo usando una definizione di "menzogna" così stretta che può dichiarare l'affermazione "il codice non può mentire" come un assioma / verità di base. In questo caso è probabilmente meglio essere d'accordo con il suo axioma.