2010-11-29 88 views
17

您應該在哪裏存儲常用字符串以用於錯誤消息,通知等?您應該在.NET中存儲常量字符串的位置

我曾經把它放到這個全局類中,它有多個const字符串,但我也看到它存儲在資源文件中的一些地方。最好的地方放在哪裏?我使用.NET btw。

回答

15

如果您預計需要將它們交換出去,例如國際化或每實例定製,則Resx很方便。但在它們之間手動移動它們並不是非常困難。所以:它是否可能需要改變?

說:如果你讓他們在代碼中,儘量保持常量,限定範圍成爲可能;例如,如果某個常量僅與User實例有關,則將其置於User

同樣,事情不會更改不應該混淆了一個resx;例如,一些與數據庫中某個值的含義有關的內部衆所周知的字符串......可能不屬於resx,即使您使用resx的也是如此。

7

我想如果你想翻譯/本地化您的產品,那麼資源文件將成爲存儲這些文件的最佳地點。

我確信兩者都有其他的優點/缺點,但這是我首先想到的。

1

請參閱this post你可以在這裏找到一些有用的答案,並在評論中進行有價值的討論。

正如你應該一般規則:

  • 三思而後行與常量創造公共課前。顯示用戶信息到資源文件
  • 地方(你永遠不知道什麼時候項目需要本地化)
3

如果他們是你的UI元素,例如標題等,然後把他們的資源文件的一部分。

如果它們是程序結構的一部分,例如文件前綴,內部錯誤消息字符串等,則應將它們放在單獨的代碼文件中。

3

任何可以本地化的應該在資源文件中。即使你100%確定你永遠不需要在資源文件中使用字符串的本地化,也可以輕鬆實現轉換。

因此,標題,名稱,GUI標籤,對話框文本,錯誤消息等都屬於resx。 現在就做。如果/當您的應用程序需要本地化,未來的開發人員會感謝您。

現在其他常量有點困難。我不認爲有快速規則,但通常我會嘗試將「真」常量定義爲一個具有所需範圍的小的常量。通過真正的常數,我的意思是不可能在應用程序生命週期的範圍內改變任何事情。我不喜歡使用非本地化字符串的資源文件,因爲它往往會破壞封裝。例如,要求具有PKDB2函數的大小應該在本地定義。加密對象外部沒有人需要知道它是什麼。

東西帶來了一個相關的話題。任何目前是靜態的,但將來可能會改變的東西(即使在未來版本的應用程序中)都應該聲明爲只讀。這些可以從resx加載,我個人沒有。 Effectivve C#在第2項中涵蓋了這一點。

同樣很大程度上取決於您的公司/團隊的要求我一直在資源文件中沒有任何內容的團隊,也一直在團隊中,所有內容(甚至我認爲應該在本地定義的內容)都保存在資源文件中。

+0

True(+1),但認爲本地化只是*文本是有點人爲的;並非最不重要的一點是,爲了使事情正確無誤,可能需要進行佈局更改 - 但這是一個微妙的問題。 – 2010-11-29 13:43:02

相關問題