Usted hace varias preguntas
¿Deberíamos estar atentos al código mentiroso?
¡Por supuesto!
¿Deberíamos comparar [código] con cualquier documentación existente?
Eso nunca podría doler, aunque como se menciona en otras respuestas, la mayoría de las veces esto lo llevará a encontrar problemas en la documentación , no en el código .
¿O es [código] generalmente la mejor fuente para lo que necesita hacer?
Siempre es la mejor fuente de lo que está haciendo. Sin embargo, la mejor fuente de lo que debería hacer el código puede ser (una combinación de) cosas diferentes, siendo las principales:
- El código en sí mismo;
- El código de llamada;
- Comentarios en ese código;
- Documentación;
- Pruebas unitarias;
- Pruebas de integración y regresión;
- El programador;
- El usuario final;
Cuál es la "mejor" fuente (o combinación de ellas) depende de su situación.
Si es un código ágil, ¿es menos probable que mienta o ese código no puede mentir en absoluto?
No estoy seguro de lo que quiere decir con "código ágil", AFAIK "ágil" generalmente se refiere al proceso de codificación. Suponiendo que quiere decir "código creado en un proceso de programación ágil", creo que es seguro decir que todavía puede mentir. La probabilidad de mentir, en comparación con el código creado en, por ejemplo, proyectos de estilo cascada es un asunto subjetivo (personalmente no creo que haya una gran conexión).
Nota al pie de página
Todo lo anterior está bajo el supuesto de que el código puede mentir, y que este es un ejemplo básico (aunque un poco artificial):
public int DivideByTwo(int input)
{
return input / 3;
}
Este es solo un ejemplo en el que diría "mentiras de código", @ user61852 tiene algunos otros (código inalcanzable, complejidad del código que no coincide con la complejidad del problema, mala denominación), y creo que hay muchos más. Wikipedia tiene un resumen bastante decente de mentiras , muchas de ellas se pueden encontrar en código.
Tenga en cuenta que si tiene una discusión con alguien, asegúrese de que la otra persona no quiere decir "código no puede mentir" que "el código hace lo que hace". En esencia, la otra persona aquí está definiendo el uso de una definición de "mentira" que es tan limitada que puede declarar la declaración "el código no puede mentir" como un axioma / verdad básica. En este caso, probablemente sea mejor estar de acuerdo con su axioma.