Вы задаете несколько вопросов.
Должны ли мы быть в поисках лживого кода?
Конечно!
Должны ли мы сравнивать [код] с какой-либо существующей документацией?
Это никогда не повредит, хотя, как упоминалось в других ответах, чаще всего это приведет к тому, что вы обнаружите проблемы в документации , а не в коде .
Или [код] обычно лучший источник того, что он должен делать?
Это всегда лучший источник для того, что он будет делать. Лучшим источником того, что должен делать код , могут быть (комбинации) разные вещи, основными из которых являются:
- Сам код;
- Вызывающий код;
- Комментарии в этом коде;
- Документация;
- Юнит-тесты;
- Интеграционные и регрессионные тесты;
- Программист;
- Конечный пользователь;
Какой «лучший» источник (или их комбинация) зависит от вашей ситуации.
Если это гибкий код, менее ли он лжив, или этот код вообще не лжет?
Я не уверен, что вы подразумеваете под «гибким кодом», AFAIK «agile» обычно относится к процессу кодирования. Предположим, вы имеете в виду «код, созданный в процессе гибкого программирования», тогда я думаю, что можно с уверенностью сказать, что он все еще может лгать. Насколько вероятно, что это ложь, по сравнению с кодом, созданным, например, в проектах типа водопада, это субъективный вопрос (лично я не думаю, что есть большая связь).
Сноска
Все вышесказанное предполагает, что код может лгать, и что это простой (хотя и немного надуманный) пример:
public int DivideByTwo(int input)
{
return input / 3;
}
Это всего лишь один пример, где я бы сказал «ложь кода», у @ user61852 есть несколько других (недоступный код, сложность кода, не совпадающего со сложностью проблемы, плохое именование), и я думаю, что есть еще много. В Википедии есть несколько приличных сводок лжи , во многих из них можно найти код.
Обратите внимание, что если вы спорите с кем-то, убедитесь, что другой человек не имеет в виду «код не может лгать», что «код делает то, что делает». По сути, другой человек здесь определяет с помощью определения «ложь», которое настолько узко, что может объявить утверждение «код не может лгать» как аксиома / базовая истина. В этом случае, вероятно, лучше всего согласиться с его / ее аксиомой.