我应该担心未使用的变量吗?

时间:2011-05-22 15:42:32

标签: language-agnostic

我在C ++的大型代码库中工作,总共大约800万行代码。在我的应用程序中,我看到了数千个未使用的变量,这些变量由g ++报告但被我的团队忽略。我想主动清理这些变量,但在处理这个问题之前我需要一些信息。

有数千个未使用的变量会有任何问题或缺点吗?

默认情况下,编译器会将此视为忽略警告,但我相信我们应将警告视为错误。如果忽略此警告,是否会发生灾难?

我们应该努力纠正这个问题,还是只是浪费精力?

3 个答案:

答案 0 :(得分:17)

假设您的变量是POD类型,如整数,浮点数等,它们不太可能对性能产生影响。但它们对代码质量有很大影响。我建议您在更新代码时添加新功能,然后随意删除未使用的变量。您必须使用版本控制软件才能安全地执行此操作。

这是一个不常见的问题。作为一名顾问,我曾经审查了一个包含数百个未使用变量的大型FORTRAN代码库。当我问那些写它的团队为什么他们在那里时,他们的回答是“好吧,我们将来可能需要它们......”

答案 1 :(得分:3)

如果使用优化进行编译,编译器很可能只是删除变量,就好像它们不存在一样。如果您不使用优化,那么您的程序将为变量占用额外的额外存储空间而不使用它。

最好不要声明变量然后不使用它们,因为它们可能会占用空间,更重要的是,它们会使代码混乱,使其可读性降低。

如果你有1000个未使用的整数,并且你的平台上的整数是32位长,那么你将总共消耗4K额外的堆栈空间,并关闭优化。

如果未使用的变量不是参数,那么应该没有什么可以阻止你删除它们,因为没有什么可以打破。您将获得可读性,并且您将能够看到编译器可能产生的其他更严重的警告。

答案 2 :(得分:-1)

仍未在内存中分配未使用的变量。删除它们将释放内存。