抑制警告是一种好习惯吗?

时间:2010-04-18 00:51:17

标签: language-agnostic warnings

有时在Eclipse中编写Java时,我会编写生成警告的代码。一个常见的是这个,我在扩展Exception类时得到:

public class NumberDivideException extends Exception {

    public NumberDivideException() {
        super("Illegal complex number operation!");
    }

    public NumberDivideException(String s) {
        super(s);
    }
} // end NumberDivideException

警告:

  

可序列化类NumberDivideException不声明long类型的静态最终serialVersionUID字段。

我知道这个警告是由于我未能......好吧,它就在上面说。我可以通过加入serialVersionUID来解决这个问题,但这是一个小时的学校作业;我不打算很快将它序列化......

另一个选择当然是让Eclipse添加@SuppressWarnings("serial")

但每次我的鼠标悬停在Suppress选项上时,我都会感到内疚。

对于一般的编程,抑制警告是一个好习惯吗?

(另外,作为附带问题,正在添加“生成”serialVersionUID,例如serialVersionUID = -1049317663306637382L;添加serialVersionUID的正确方法,或者我必须确定其他人的数字方式是什么?)


编辑:看到答案后,看来我的问题可能有些争论......抱歉! 我删除的时间太晚了......

6 个答案:

答案 0 :(得分:6)

在eclipse的特定情况下,我宁愿设置eclipse来发出我关心的警告,并且自动忽略那些我不关注的警告。请参阅Windows - > 偏好 - > Java - >编译器 - >错误/警告

这对Java来说非常具体,而且我发现Java往往比其他大多数语言都有更多我不关心的警告。在其他语言中,我通常会在出现时发出警告并修复它们

答案 1 :(得分:4)

让代码编译没有警告是非常令人满意的 - 当你得到一个它然后突出并可能提醒你代码中的问题

答案 2 :(得分:2)

如果您完全确定自己在做什么,那么您应该只发出警告 并且最好将此类事件记录下来以备将来更改(例如java doc comments)

通过这种方式,您可以隐藏您知道不会引起问题的警告,并可以专注于会导致您出现问题的警告

答案 3 :(得分:1)

如果这是一个你再次关注的程序,那么以正确的方式做事就会得到回报 - 这意味着不要压制警告,而是修复警告。

然而,对于学校作业,你经常被要求重新发明轮子/完成琐碎的任务,所以你不应该对任何关于“黑客”的东西感到不安。当然,除非您对编码风格进行评分......

答案 4 :(得分:0)

即使只是一种特殊的警告,你也不应该全局压制警告。您还应该将编译器设置为尽可能挑剔。警告可以告诉您可能存在的问题。您可以重构代码以摆脱它们,或者在某些语言中添加某种指令以忽略导致特定警告的特定代码。这将允许您查看警告,如果您知道它可以,则忽略它。

答案 5 :(得分:0)

在可行的情况下,仅在特定行或最多 - 特定文件上禁止警告。

这不仅可以确保您不希望得到的警告传达给您,而且还可以作为明确的设计说明 - 指出下一个编辑代码的人(或者您自己在一个月内完成)意识到这个问题,并故意做出这个代码可以接受的决定。这使得下一个人不必再次评估情况。

(我对Eclipse的了解还不够清楚 - 这是适用于各种语言的一般原则。)