代码冗余
编辑在编程中,代号余是指计算机程序的源代码或部分冗余(“多余”)的术语。
特别是在技术上,“冗余”一般是指多个组件。 就程序代码而言,冗余代码是指多个相同的源代码部分(源代码克隆)。
通常,“冗余代码”被理解为程序指令部分中的文本副本;程序的数据定义中也可能存在冗余(以及死代码)。
代码冗余也可能发生在不同的程序中——例如,如果相同的功能部分在多个程序中单独编程/编码,而不是作为子程序调用或包含在 include 语句中。
不同的含义/定界:即使死代码有时也被称为冗余代码,因为它在形式上看起来是“多余的”,但它并不是冗余的。
含义
编辑由于各种原因,所有形式的冗余代码都被认为是不受欢迎的或有缺陷的软件质量。 因此,冗余代码浪费了其他线程所缺少的 CPU 时间。 此外,重复代码会浪费内存,并可能导致在 CPU 的指令缓存中缓存不必要的指令。 代码登记余降低了可维护性,增加了记录代码的工作量,并引入了更多的错误。 它还经常对指标产生负面影响,并使程序验证更加困难。
然而,根据情况,也可以故意创建冗余代码:例如,旨在保留初步或以前的源文本部分,出于某些原因保留多次(参见源代码克隆),没有不利的意义具有给定的优势(例如,具有非常小的代码片段) - 或者存在软件测试要检测的目标的错误(尤其是死的/无法访问的代码)。
例子
编辑int foo (int x) { int y = 100 / x; // 代码在 x = 0 处抛出异常并退出程序 int z = x * x; // 计算重复下面两行 if (z >= 0) return x * x; // 冗余计算,优化掉编译器,调用Common Subexpression Elimination return -1; // 输入 46341…65535、80265…92681、103622…113511、122607…131071, ...(假设 32 位整数)达到代码}
- 死代码 - 在示例中,第 2 行中,数字 100 除以 x,但从未使用过结果。 因此它是死代码。 但是,如果 x 为零,则会抛出异常。 因此,删除此代码将导致功能发生变化。 但是,由于抛出异常永远不应成为功能的一部分,因此这是需要删除的损坏功能。
- 代码登记余 - 该示例在第 3 行和第 5 行中对 x 进行平方,但中间的 x 没有变化。 结果总是一样的,所以代码是多余的。 因此,在第 5 行返回 z 是合适的。
- 无法访问的代码 - 在示例中,永远不会到达第 7 行,因为第 4 行中的查询 z >= 0 始终为真,并且在第 5 行中该方法退出。 所以第 7 行是不可达代码。
- 不必要的代码 - 由于第 4 行中的查询 z >= 0 始终为真,因此它没有意义,也可以删除。 不必要的代码不属于上述三类中的任何一类,但通常称为死代码。
原因
编辑代号志余由以下人员创建
分析
编辑发现冗余代码是静态代码分析的一种形式,需要密切的控制流分析以找到独立于变量和其他运行时条件的代码。 借助合适的分析工具,可以找到冗余代码部分。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/366081/