你会如何管理每个c#类的常量?

时间:2011-10-06 08:58:31

标签: c# asp.net resources constants

在所有应用程序中,总会使用一些常量值。

我不喜欢在每个代码中对我的应用程序中的这些值进行硬编码,因为它会显着降低可维护性。

我有两个选择:

  1. 在目标类中创建一个内部Constants类,并添加公共const值,例如

    内部静态类常量 {   public const string IdAttribute =“id”; }

    1. 创建一个资源文件(.resx)并在那里存储我的常量值和公式。
    2. 我在我的应用程序中使用了第二种方法。我使用资源文件时遇到的一个问题是我无法使用.NET 4.0可选参数功能。

      e.g。以下不起作用:

      public void DoSomething(string id = Resources.Constants.Id)
      {
      // ..
      }
      

      错误是Id的值未在运行时确定。

      基本上,您会使用哪种方式并建议管理每个类的常量?为什么呢?

      我目前的方法是,如果我有一些应该仅在一个类中使用的常量,我在该类中创建一个静态的Constants类。如果要在多个类或项目中使用我的常量,我会将它们放在资源文件中,例如PageUrls.resx。

      谢谢,

2 个答案:

答案 0 :(得分:3)

就我个人而言,我宁愿在逻辑上属于的类中定义常量,与(例如)DateTime.MinValue类似。

然后,一般来说,公开这些常量是一种“代码气味”,暗示某些耦合应该以更好的方式表达。当代码允许时,将它们设为私有(或内部)显然没有任何害处。

然而,有时整体常量属于全局。这些通常是配置,应该这样对待。

答案 1 :(得分:0)

我个人主要将资源用于呈现给用户的常量。主要优点是可以将其本地化。

对于内部常量,我更喜欢static readonly to const个变量。当它们被许多类共享时,我会将它们放入常量类中,否则在需要它们的类中