Você faz várias perguntas.
Deveríamos estar atentos ao código mentiroso?
Claro!
Deveríamos comparar o código com qualquer documentação existente?
Isso nunca poderia prejudicar, embora, como mencionado em outras respostas, isso muitas vezes o levará a encontrar problemas na documentação , não no código .
Ou [código] geralmente é a melhor fonte para o que ele precisa fazer?
É sempre a melhor fonte para o que está fazendo. A melhor fonte para o que o código deve estar fazendo pode ser (uma combinação de) coisas diferentes, sendo as principais:
- O próprio código;
- O código de chamada;
- Comentários nesse código;
- Documentação;
- Testes de unidade;
- Testes de integração e regressão;
- O programador;
- O usuário final;
Qual é a "melhor" fonte (ou combinação das mesmas) depende da sua situação.
Se for um código ágil, é menos provável que ele mente, ou esse código não pode mentir?
Não sei ao certo o que você quer dizer com "código ágil", o AFAIK "ágil" geralmente se refere ao processo de codificação. Supondo que você queira dizer "código criado em um processo de programação ágil", acho que é seguro dizer que ainda pode mentir. A probabilidade de mentir, comparado ao código criado em, por exemplo, projetos no estilo cascata, é uma questão subjetiva (pessoalmente, não acho que exista uma grande conexão).
Nota de rodapé
Tudo o que precede está sob a suposição de que o código pode estar, e que este é um exemplo básico (embora pouco artificial):
public int DivideByTwo(int input)
{
return input / 3;
}
Este é apenas um exemplo em que eu diria "código mente", o @ user61852 possui alguns outros (código inacessível, complexidade do código que não corresponde à complexidade do problema, má nomeação) e acho que existem muitos outros. A Wikipedia tem um resumo um tanto decente de mentiras , muitas delas podem ser encontradas código.
Observe que, se você estiver discutindo com alguém, tenha certeza de que o da outra pessoa não significa "código não pode mentir" que "código faz o que faz". Em essência, a outra pessoa aqui está definindo usando uma definição para "mentira" que é tão estreita que pode declarar a declaração "código não pode mentir" como axioma / verdade básica. Nesse caso, provavelmente é melhor concordar com seu axioma.