2011-07-16 53 views
5

這是一個關於最佳編碼實踐的問題。 我想知道如何最好地避免在.NET應用程序中硬編碼字符串和值的共識。 我到目前爲止,我以前工作過看出:如何避免硬編碼字符串

  • 使用資源.resx文件
  • 存儲這些值和字符串App.config中或web.config中
  • 製作一個靜態類ApplicationStrings並宣佈所有的字符串和值有:

    public static class ApplicationStrings 
    { 
        #region constants 
        public const string APPLICATION_NAME = "X"; 
        public const string APPLICATION_RESOURCEMANAGER_NAME = "ResourceManagerX"; 
        public const string APPLICATION_DEFAULT_LOGFILENAME = "log.txt"; 
    } 
    

但是,沒有第三個方法,只是一個硬編碼?有這樣一個班級是否有意義?好處是所有的字符串都在一個地方,但真的避免了硬編碼嗎?

此外,如果你已經開發了這種情況的其他習慣,隨時張貼。

+1

我寧願在這裏使用靜態只讀字段來覆蓋常量。常量更多的是永遠具有相同價值的東西。這使得他們的二進制版本化語義有點煩人。 – CodesInChaos

回答

4

主要好處是將所有字符串放在一個地方,您只需要在那裏更改它以更新整個程序。如果程序的不同部分使用相同的字符串,並且一個實例得到更新,但另一個不是,那麼你有問題。順便說一下,所有文字都適用。

然後與資源文件有i18n和l10n的好處。如果你需要它,但許多大型應用程序應該。

+1

資源文件的優勢在於,必要時可以用其他版本替換它們。當然,你可以用源代碼文件來做到這一點,但不知何故,它更清楚它是不同的數據(i18n和l10n),而不是不同的功能。 – MRAB

0

嗯,我認爲ApplicationStrings是一個很好的解決方案

1

總的來說,我相信這是存儲所有配置數據中心的配置文件,使所有數據都在一個地方,可以由其他共享的良好做法應用程序

+0

謝謝你提醒我關於app.config和web.config文件,我更新了最初的問題。 –

1

在我看來,ApplicationSettings只有在你的設置是(i)真正的常量和(ii)當然是真正公開的時纔有用。如果其中任何一種情況都不是這樣,那麼這並不理想,您的選擇會回到.config文件.resx

相關問題