2

我有一些我想在应用程序级别拥有的常量,例如存储过程名称、用户消息等。我改变这些资源的可能性很小。

请让我知道在我们的应用程序中保持常量的好习惯。

资源字典是否优于 .cs 文件。

问候机管局

4

1 回答 1

3

对于初学者来说,你在思考这些东西时走在了正确的轨道上。魔术字符串和其他魔术值之所以不好,有很多原因。

以下是我们使用的一些准则:

  1. 常量只允许用于 REAL-WORLD 常量。如果您需要使用“My bonnie lie over the {0}”作为格式字符串,请使用 RESOURCE。
  2. 可能会改变的事情,永远,不是一成不变的。对于这些东西,你有几个选择。
  3. 如果它不是你的逻辑的一部分,它就不会出现在源代码中。它位于以下外部位置之一并在源代码中被引用,因此您不必重新编译即可进行更改。

我们通常每个程序集有三个文件,根据需要:首先,一个常量文件。这通常和 Constants.cs 一样简单。将您的常量(以及非编译时常量且永不更改的只读静态变量)放入此文件中。您还可以包含可配置但必须具有默认值的内容。

internal class Constants
{
    public const LogLevel DEFAULT_LOG_LEVEL = LogLevel.Error;

    public static readonly string APP_NAME = Configuration.ApplicationName ?? "Test Application";
}

其次,一个读取配置值并将它们作为静态值返回的文件。这通常是 Configuration.cs,负责返回所有配置值。这使您不必重新编译以更改连接字符串、处理设置或其他内容。实际值位于 .ini 文件、web.config 或 app.config、数据库表或源代码之外的其他位置等位置。如果在下面的示例中,您可以在整个代码中使用 ConfigurationManager.AppSettings["ApplicationName"],但是如果您想更改该 appsetting 的键怎么办?你必须找到一个重命名它的所有引用。只需要额外的 30 秒来做这样的事情,以及所有的 Configuration.ApplicationName。

internal class Configuration
{
    public static string ApplicationName
    {
        get
        {
            return ConfigurationManager.AppSettings["ApplicationName"];
        }
    }
}

最后,一个或多个资源文件。这是我们放置图标、图像、不寻常字体、本地化(或只是可更改)字符串等用于显示目的的地方......

没有特定的正确方法来做这些事情,但我认为以上内容将为您提供一个起点。

于 2012-09-21T16:00:40.360 回答