Abh*_*hek 12 language-agnostic
我在C++的大型代码库中工作,总共大约800万行代码.在我的应用程序中,我看到了数千个未使用的变量,这些变量由g ++报告但被我的团队忽略.我想主动清理这些变量,但在处理这个问题之前我需要一些信息.
拥有数千个未使用的变量会有任何问题或缺点吗?
默认情况下,编译器将此视为忽略警告,但我认为我们应将警告视为错误.如果我们忽略此警告,是否会发生任何灾难?
我们应该努力纠正这个问题还是只是浪费精力?
小智 18
假设您的变量是POD类型,如整数,浮点数等,它们不太可能对性能产生影响.但它们对代码质量有很大影响.我建议您在更新代码时添加新功能,然后随意删除未使用的变量.您必须使用版本控制软件才能安全地执行此操作.
这是一个并不罕见的问题.作为一名顾问,我曾经审查了一个包含数百个未使用变量的大型FORTRAN代码库.当我问那些写作的团队为什么他们在那里时,他们的回答是"好吧,我们将来可能会需要它们......"
如果您在优化的情况下进行编译,编译器很可能会简单地删除变量,就像它们不存在一样。如果您不使用优化,那么您的程序将占用变量的额外存储空间而不使用它。
最好不要声明变量然后使用它们,因为它们可能会占用空间,更重要的是,它们会使代码变得混乱,使其可读性降低。
比如说,如果您有 1000 个未使用的整数,并且您的平台上的整数长度为 32 位,那么在关闭优化的情况下,您总共将使用 4K 的额外堆栈空间。
如果未使用的变量不是参数,那么应该没有什么可以阻止您删除它们,因为没有任何东西可以破坏。您将获得可读性,并且能够看到编译器可能产生的其他更严重的警告。