你如何定义'不需要的代码'?

时间:2009-03-05 09:48:44

标签: code-metrics dead-code

您如何定义“不需要的代码”?


编辑:

恕我直言,任何拥有0个活动呼叫成员的代码成员(递归检查)都是不需要的代码。 (函数,方法,属性,变量是成员)

8 个答案:

答案 0 :(得分:2)

以下是我对不需要的代码的定义:

  • 不执行的代码是一个自重。 (除非它是你实际代码的[恶意]有效载荷,但这是另一个故事: - ))
  • 重复多次的代码会增加产品的成本。
  • 无法进行回归测试的代码也会增加产品的成本。

您可以删除此类代码或对其进行重构,但您不希望将其保留原样。

答案 1 :(得分:1)

就像你在另一个帖子中说的那样,任何地方都没有使用的代码是非常不需要的。至于如何找到它我会建议使用FindBugs或CheckStyle,例如,因为这些工具会检查函数是否在任何地方使用,如果不是,则将其标记为未使用。非常适合摆脱不必要的重量。

答案 2 :(得分:1)

很快在考虑之后我想出了这三点:

  • 它可以是应该重构的代码
  • 它可以是不再被调用的代码(早期版本的剩余部分)
  • 它可以是不适用于您的风格指南和编码方式的代码

我敢打赌,还有更多,但这就是我定义不需要的代码的方式。

答案 3 :(得分:1)

在java中,我用@Deprecated标记方法或类。

答案 4 :(得分:1)

任何 PRIVATE 代码成员,没有活动的调用成员(递归检查)。否则,您不知道您的代码是否未在范围分析中使用。

答案 5 :(得分:1)

0个有效通话,不可能在不久的将来使用。因为我使用SVN(源代码控制),所以我希望以后永远不会注释掉任何内容,因为我需要它。

答案 6 :(得分:0)

通常我告诉我的编译器尽可能烦恼,选择我需要检查的60%的东西。几个月未使用的功能(在使用VCS检查后)通常会被取消,除非他们的作者告诉我他们何时会被使用。缺少原型的东西也很快被怀疑。

我认为尝试实施自动化房屋清洁就像尝试制作USB设备一样,确保您“安全地”玩Russian Roulette

最难检查的部分是添加到构建系统中的组件,很少有人注意到这些组件和未使用的kludges留下来收集苔藓。

除此之外,我通常想要代码,我只是希望它的作者稍微重构它,并使它们的风格与项目的其余部分相同。

另一个有用的工具是doxygen,它可以帮助您(直观地)查看源树中的关系。但是,如果它设置为不提取静态符号/对象,则它不会非常彻底。 / p>

答案 7 :(得分:0)

有些东西已经贴出来,但这是另一件事: 几乎做同样事情的功能。 (只有一个小的变量,因此整个函数被复制粘贴并且变量被更改)