2010-04-18 72 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例如,評論)

這種方式隱藏的警告,你知道原因不需額外的問題,可以集中精力,將導致您問題之

相關問題