许多编译器都有警告消息来警告程序员有关潜在的运行时,逻辑和性能错误,大多数情况下,您可以快速修复它们,但是不可修复的警告呢?
您如何处理不可修复的警告?您是重写代码的一部分,还是以“漫长而无用的方式”重写代码,还是一起禁用警告?最佳做法应该是什么?
如果您正在编辑别人的代码并且他的代码有警告,该怎么办?
这是一个很好的例子:由于检测到Mozilla类浏览器,jQuery有很多JavaScript警告,为什么jQ开发人员不解决这些警告?如果您对jQuery有所贡献,您是否会解决它们?
许多编译器都有警告消息来警告程序员有关潜在的运行时,逻辑和性能错误,大多数情况下,您可以快速修复它们,但是不可修复的警告呢?
您如何处理不可修复的警告?您是重写代码的一部分,还是以“漫长而无用的方式”重写代码,还是一起禁用警告?最佳做法应该是什么?
如果您正在编辑别人的代码并且他的代码有警告,该怎么办?
这是一个很好的例子:由于检测到Mozilla类浏览器,jQuery有很多JavaScript警告,为什么jQ开发人员不解决这些警告?如果您对jQuery有所贡献,您是否会解决它们?
Answers:
通常可以放心地忽略一些警告,但是如果您这样做,随着时间的流逝,它们会不断增加,直到那天到来的时候,您会错过很多真正重要的警告,因为它被隐藏在噪音中了。
修复警告立即(其中可能包括,如果你觉得它的禁用单独的规则从来有关你的情况下)。
我的意见是,你应该对自己严格。该编译器由该语言的专家共同编写。如果他们报告有些不舒服(认为代码有异味),则应检查代码。
完全有可能编写无错误且无警告地编译的代码。
通常,您应该努力使编译器保持沉默,以便更多地显示新的警告。这些警告可能表示细微的错误,应相应地进行处理。
关于修改其他人的代码,这在很大程度上取决于您的工作场所文化和代码的当前状态。如果代码触发了完整的重新测试周期,则您不能仅仅更改代码,就像在测试阶段或生产中后期使用代码一样。
问你的老板,并采取相应的行动。
通常,您希望构建不受警告。出现警告是有原因的,并且警告的确经常指出非常实际的问题。如果您习惯于忽略编译器警告,则最终您的构建中将包含大量警告,并且您将错过由灾难性问题引起的警告,这将使您的公司付出沉重的代价。另一方面,如果您的程序正常编译时没有警告,则每个新警告都会立即被注意到,并可以迅速得到解决。
话虽这么说,有时编译器可能会有一些毫无意义的警告,并且无法轻易解决。我每天都在与TI CodeComposer一起工作时面对这种情况,TI CodeComposer是TI DSP的开发环境。我有C ++代码,在Visual Studio下不会发出任何警告,但会在CodeComposer中产生奇怪的警告,这仅仅是因为TI对标准C ++的支持会更好。幸运的是,CodeComposer允许您分别禁用特定的警告,这是当我们无法修复产生警告的代码时必须要做的。
其他答案中并未明确指出严格性的一些好处:
某些警告在语言上有所不同。我认为,就该主题进行思考和讨论,然后禁用一些单独的警告(如果它们觉得完全没有用),则很重要,这样才能实现严格性。在我的职业生涯中,已经有多个团队实现了这一目标。有关该主题的更多经验
警告和错误是编译器用来告诉程序员“您写的东西没有道理”的消息-它们之间的区别在于,发出警告时,编译器愿意猜测程序员的意图,而出现错误时,编译器甚至无法猜测。
编译器错误将得到解决(我不会说是fixed),但是程序员(甚至是经验丰富的程序员)经常会忽略警告。忽略警告的问题是,有时编译器会猜测错误,并且如果您有1000条以上的警告消息,则很容易错过一条警告消息,表明编译器在猜测错误。
从社会学的角度来看,具有许多警告消息的程序是“ 破碎的Windows”。