题
您如何定义“不需要的代码”?
编辑:
恕我直言,任何具有 0 个活动调用成员(递归检查)的代码成员都是不需要的代码。(函数、方法、属性、变量都是成员)
解决方案
0个有效通话,不可能在不久的将来使用。因为我使用SVN(源代码控制),所以我希望以后永远不会注释掉任何内容,因为我需要它。
其他提示
这是我的定义 不需要的代码:
- 不执行的代码是一个沉重的负担。(除非它是您实际代码的[恶意]有效负载,但那是另一个故事了:-))
- 多次重复的代码会增加产品的成本。
- 无法进行回归测试的代码也会增加产品的成本。
您可以删除此类代码或重构它,但您不想保留它。
就像你在另一个帖子中所说的那样,任何地方都没有使用的代码是非常不需要的。至于如何找到它我会建议使用FindBugs或CheckStyle,例如,因为这些工具会检查函数是否在任何地方使用,如果不是,则将其标记为未使用。非常适合摆脱不必要的重量。
经过短暂的思考,我得出了以下三点:
- 它可能是应该重构的代码
- 它可以是不再被调用的代码(早期版本的剩余部分)
- 它可能是不适用于您的风格指南和编码方式的代码
我敢打赌还有更多,但这就是我定义不需要的代码的方式。
在java中,我用@Deprecated标记方法或类。
任何 PRIVATE 代码成员,没有活动的调用成员(递归检查)。否则,您不知道您的代码是否未在范围分析中使用。
有些东西已经贴出来,但这是另一件事: 几乎做同样事情的功能。 (只有一个小的变量,因此整个函数被复制粘贴并且变量被更改)
通常我告诉我的编译器尽可能烦恼,选择我需要检查的60%的东西。几个月未使用的功能(在使用VCS检查后)通常会被取消,除非他们的作者告诉我他们何时会被使用。缺少原型的东西也很快被怀疑。
我认为尝试实施自动化房屋清洁就像试图制作一个可以“安全”播放的USB设备俄罗斯轮盘。
最难检查的部分是添加到构建系统中的组件,很少有人注意到这些组件和未使用的kludges留下来收集苔藓。
除此之外,我通常想要代码,我只是希望它的作者稍微重构它,并使它们的风格与项目的其余部分相同。
另一个有用的工具是 doxygen ,它可以帮助您(直观地)查看源树中的关系。但是,如果它设置为不提取静态符号/对象,则不会非常彻底。