2010-12-11 115 views
4

所以,我一直在努力工作的新項目,今天有一位同事提出的想法,我的例外,甚至返回的錯誤信息應該完全本地化。我想也許這是一個好主意,但他說,我應該只錯誤返回錯誤代碼。我個人不喜歡的錯誤代碼的想法很多,因爲它往往使其他程序員或者要使用錯誤代碼或不使用錯誤代碼

  1. 爲了重複錯誤代碼,他們不適合,因爲他們不希望添加另一個
  2. 他們傾向於使用錯誤的錯誤代碼,因爲可以定義這麼多。

所以我的問題是其他人做什麼來處理這種情況?我接受各種建議,包括那些認爲錯誤代碼是可行的方法。

回答

3

根據您的編碼語言,可能存在文化差異?

在Java例如,數值錯誤代碼不常使用...


有關例外,我相信這只是一個技術工具。 重要的是你的消息是針對用戶還是開發者。 對於用戶來說,本地化消息很重要,如果出現幾種語言,或者能夠在不重新編譯的情況下更改消息(在客戶端之間自定義,以適應不斷變化的用戶需求)。


在我的項目,我們的文化是使用(JAVA)枚舉處理固定值的所有集合。 錯誤沒有什麼不同。 枚舉錯誤可以提供:

  • 強類型(你不能通過別的東西是期待一個錯誤代碼的方法)
  • 簡單的定位(一個簡單的工具方法可以自動找到對應於每個消息例如使用「SimpleClassName」,「INSTANCE_NAME」模式;您也可以在每個枚舉上公開getMessage()方法,將實現委託給您的實用方法)
  • 驗證您的本地化文件(您的單元測試可能會循環代碼和文件上的每種語言,並找到所有不匹配的值)
  • 錯誤級別函數(我們使用與記錄相同的級別:致命,錯誤,警告;日誌決定很容易實現!)。爲了便於其他開發人員找到適當的錯誤,我們使用了幾個枚舉(可能在同一個包中),根據它們的技術或功能領域對錯誤進行分類。

要ADRESS您的兩個問題:

  1. 添加一個只需要增加一個實例來枚舉,並在本地化文件的信息(但測試可以趕上後,如果忘記了) 。
  2. 隨着幾個枚舉的分類,以及可能的javadoc,他們被引導使用正確的錯誤。
3

我不會在本地化中使用錯誤代碼。可能有充分的理由使用錯誤代碼(例如,能夠測試發生哪種特定類型的錯誤),但本地化不是這些原因之一。相反,使用與用於其他消息本地化的異常相同的框架。例如。如果你在其他地方使用gettext,也可以在例外情況下使用它。這將使譯者的生活更輕鬆。

2

您可以在中包含錯誤代碼這是一個例外,從而獲得最佳效果。

舊式函數返回錯誤代碼出現錯誤的一個常見原因是在繼續執行後續代碼之前未能檢查錯誤代碼。一個例外不能被隱式忽略。消除錯誤來源是件好事。

錯誤代碼允許:

  • 調用代碼不同類型的錯誤之間進行區分。
  • 在非UI非本地化代碼中發生錯誤時,由UI組件構建的消息。
  • 編寫用戶文檔或疑難解答指南時可能有用的代碼中的錯誤列表。

一些指引我發現有用:

  • 只有UI架構層建設和本地化信息給用戶。
  • 當非UI層通過異常傳遞錯誤時,這些層可能會在構建消息時有選擇地帶有對UI有用的錯誤代碼和附加字段。
  • 在Java中,當在UI層Enum中定義錯誤代碼時,可以通過枚舉器本身訪問錯誤消息格式字符串。它們可能包含錯誤中附加數據的符號。
  • 在Java中,在原始語言的格式字符串中包含格式說明符中的參數索引,以便翻譯人員可以在本地化消息中移動動態數據。