Я думал, что эти термины синонимичны, но примечание в MISRA относительно мертвого кода указывает на то, что это неправильно? Какая разница? Является ли одно подмножеством другого?
В чем разница между мертвым кодом и недостижимым кодом?
Ответы (4)
Мертвый код — код, который выполняется, но является избыточным, либо его результаты никогда не использовались, либо ничего не добавляется к остальной части программы. Теряет производительность процессора.
function(){
// dead code since it's calculated but not saved or used anywhere
a + b;
}
Недостижимый код — код, который никогда не будет достигнут независимо от логического потока. Отличие в том, что он не выполняется.
function(){
return x;
// unreachable since returned
a = b + c;
}
Мертвый код
Код, выполняющий функции, не имеющие никакого эффекта. В основном вещи, которые не будут иметь значения, если их удалить.
Недоступный код
Код, который из-за другой логики никогда не будет выполнен. Обычно это признак ошибки.
Недоступный код
Код, в который поток управления никогда не входит во время выполнения программы. Недостижимый код — это код, который никогда не выполняется в ходе выполнения программы.
Неработающий код
Код, который не влияет на коды, следующие за ним, независимо от того, как поток управления проходит через программу. Мертвый код — это тот код, который не нужно выполнять в ходе выполнения программы, или другими словами, он бесполезен.
Таким образом, в истинных терминах ни одно из них не является подмножеством другого. Но как недостижимый код, так и мертвый код обычно удаляются компилятором в процессе компиляции в рамках оптимизации кода.
недостижимый код — это то, что никогда не будет выполнено, потому что для доступа к коду нет управления потоком.
Мертвый код — это то, что выполняется (или может быть выполнено), но его результаты никогда не используются.