2013-03-12 52 views
5

只是關於表單的一個簡單問題。Java - 我應該使用常量作爲日誌消息嗎?

我在記錄各種錯誤消息,並想知道是否應該在日誌調用中爲消息創建一個新字符串,或者在我用來存儲其他字符串常量的接口中創建一個常量字符串, 。 我正在使用代碼分析器代碼,它暗示後者說,創建一個字符串常量並引用它是更好的做法,即使它只是使用了一次字符串。 我只是想知道這是否確實如此?

在此先感謝

+0

這是一個討論類型的問題,可能會被關閉。但我無法抵抗的貢獻:既不。日誌消息屬於屬性文件,由常量鍵引用,以便在需要時可以將它們翻譯爲其他語言。 – 2013-03-12 13:48:26

+3

@ ErnestFriedman-Hill:日誌消息是運行時調試工具,而不是用戶應該看到的東西:-) – 2013-03-12 13:49:46

+0

如果您的代碼進入某個第三方使用的jar文件,您可以打賭他們會希望您記錄的錯誤消息被本地化! – 2013-03-12 13:53:18

回答

3

我不知道你用什麼分析工具或您如何配置,但建議似乎無效的給我。 Java編譯器已經爲您創建了字符串常量(當代碼調用日誌方法時,它通常不會分配新的String實例),那麼手動完成這項工作有什麼意義呢?

如果你把字符串常量放到一個接口中,你可以在類之間共享它們,但不能以你認爲的方式共享它們:Java編譯器會將常量的值複製到正在使用的代碼中(所以生成的字節代碼將不再有對接口的引用!)

我的建議:關掉這個誤導性警告。

+0

謝謝我以後! 請檢查:https://stackoverflow.com/questions/446663/best-way-to-define-error-codes-strings-in-java – 2017-08-27 19:48:02

2

伐木應該很容易添加和刪除;只需提供一個非常薄的層。然後可能會使用MessageFormats,當用常數名稱替換時,這些錯誤容易出錯/無法檢查。

此外,還會導入字符串常量,然後在常量更改時不再檢測更改。

另外日誌字符串不是很嚴格,對自己的信息。

更好地將這些字符串標記爲非國際化。