“死代码”和“无法访问的代码”有什么区别?

问题描述 投票:0回答:5

我认为这些术语是同义词,但 MISRA 中关于死代码的注释表明这是错误的?有什么不同?其中一个是另一个的子集吗?

standards standards-compliance misra
5个回答
45
投票

死代码 - 已执行但冗余的代码,要么结果从未使用过,要么没有向程序的其余部分添加任何内容。浪费CPU性能。

function(){
    // dead code since it's calculated but not saved or used anywhere
    a + b;
}

无法访问的代码 - 无论逻辑流程如何,都永远无法访问的代码。不同的是它没有被执行。

function(){
    return x;

    // unreachable since returned
    a = b + c;
}

4
投票

死代码

执行无效功能的代码。基本上,如果删除的话,不会产生任何影响的东西。

无法访问代码

由于其他逻辑而永远不会执行的代码。这通常是错误的迹象。


3
投票

无法访问代码

在程序执行期间控制流从不进入的代码。不可访问的代码是指在程序执行过程中从未执行过的代码。

死代码

无论控制流如何流经程序,该代码都对其后面的代码没有影响。死代码是指在程序执行过程中不需要执行的代码,或者换句话说,是无用的。

因此,实际上,它们都不是另一个的子集。但是,作为代码优化的一部分,无法访问的代码和死代码通常会在编译过程中被编译器删除。


1
投票

无法访问的代码是永远不会被执行的东西,因为没有流量控制来到达代码。

“死代码” 是指被(或可能被)执行的代码,但其结果从未被使用。


0
投票
死代码是指没有使用或引用的行或代码片段。例如,想象一下导入第三方函数、库等,但绝不在解决方案或上下文中的任何地方使用它。

另一方面,不可访问的代码是程序永远不会运行的代码,例如方法中的代码,并且它永远不会影响实时项目。

不同的是,死代码可能会对项目产生一些副作用,并且它会被编译器解析,但无法在项目中解析或执行。

© www.soinside.com 2019 - 2024. All rights reserved.