在c ++项目中保留未使用的类有什么弊端?

时间:2019-02-28 15:49:42

标签: c++

假设我有一个名为foo的类,它执行的某些功能我发现最好由库bar完成。

假设我删除了所有引用并包含foo,可能仍然会导致运行时/编译时效率低下,是否必须从项目中删除代码?依赖于编译器。

3 个答案:

答案 0 :(得分:3)

如果您仍然编译包含未使用代码的文件,则可以,这会影响您的编译时间。

如果您要构建库,则即使未使用类型也将包括在内,因此会影响您的库大小。

对运行时的影响将最小,但不会为零-加载库时,动态链接器仍需要在类型上花费几纳秒的时间。

如果您要构建可执行文件,那么任何不错的编译器/链接器都应该能够消除未使用的代码,因此唯一的影响就是构建时间。

删除无效代码。让您的版本控制系统(git,cvs等)记住它,以备后代使用,但请从项目中 out 中获取它。

答案 1 :(得分:2)

是的,您应该从项目中删除未使用的代码。原因不是效率或代码大小太大(使用任何现代链接器都不会产生影响),而是一种称为“ Software Rot”的现象。

如果您的项目中有未使用但可用的代码,迟早会有人尝试再次使用它,但是由于该代码不可用且未维护,因此该代码可能已过时,并可能在生产中引起严重问题。进一步阅读:https://en.wikipedia.org/wiki/Software_rot

这不是一个空洞的威胁-类似的事情曾经消灭了整个贸易公司,因为与软件腐烂有关的软件错误,他们损失了全部资金:https://dougseven.com/2014/04/17/knightmare-a-devops-cautionary-tale/

答案 2 :(得分:1)

这取决于链接器。

如果构建链中的程序(编译器,链接器等)可以检测到未使用任何符号,则可以安全地删除它们。

此外,如果未使用该类,则没有办法告诉它已被删除-因此任何合适的链接器都将删除它。