2011-07-16 177 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