2010-04-18 84 views
3

有时在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选项上时,我感到有点内疚。

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

(此外,作为一个侧面的问题,是增加一个“生成” serialVersionUIDserialVersionUID = -1049317663306637382L;适当的方法来添加一个serialVersionUID,还是我数来确定一些其他的方式?)


编辑:看到答案后,看起来我的问题可能有些争议......对不起! 尽管我迟到了...

回答

4

这是非常令人满意有代码编译出的警告 - 当你得到一个它,然后站出来,可以提醒你的问题的代码

6

在eclipse的特殊情况下,我并不喜欢设置eclipse来发出我关心的警告,并自动忽略所有的eclipse实例别。看到Windows - > 首选项 - > Java - >编译器 - >错误/警告

这虽然是Java特有的,我发现Java倾向于有更多的警告我不关心比大多数其他语言。在其他语言中,我通常会发出所有警告,并在出现时解决它们。

0

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

+2

我可以尊重不同意见的人? Eclipse正在使用的Eclipse可以选择发出有关使用有用语言功能的警告(例如装箱/取消装箱)。我发现把这些做得很痛苦。 – msandiford 2010-04-18 00:59:54

+1

Tom,您是否在MSVC中编写了C或C++,并提供了有关完美正常标准函数的“有用”警告? – KTC 2010-04-18 02:07:39

+0

是的,我使用了许多不同的C++/C环境。有预处理器指令可以在我所知的每一条线路上逐行关闭警告。至于Eclipse,拳击/拆箱是潜在的昂贵的东西,应该是一个警告。我认为迫使开发人员在30秒内考虑每个警告并作出明确的决定来覆盖每个事件是合理的。偶尔,编译器确实知道得更好。 – 2010-04-19 13:52:33

0

只要实用,只对特定的线压制的警告,或者 - 至多 - 一个特定的文件。

这不仅可以确保您没有预料到的警告会传达给您,而且可以作为一个明确的设计说明 - 指出下一个编辑代码的人(或者在一个月的时间内)意识到这个问题,并且认真决定这个代码是可以接受的。这使得下一个人不必再次评估情况。

(我不知道有足够的了解Eclipse来做到这一点 - 这是跨语言适用的一般原则)

1

如果它是你曾经打算再关注一个程序,该公司将支付以正确的方式做事情 - 这意味着不要压制警告,而是要修复警告。

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

2

只有当你确定自己在做什么 和它最好能够将这种事情记录下来以供将来更改时,你应该禁止警告(java doc例如,评论)

这种方式隐藏的警告,你知道原因不需额外的问题,可以集中精力,将导致您问题之

相关问题