阅读配置值而不是使用魔术数字是否合适?

时间:2009-07-28 03:32:30

标签: c#

我知道从配置文件中读取值而不是使用硬代码值,但我不确定这是不是一个好习惯。

首先我创建了一个实用程序类:

public class ConfigValues
{ 
    public static int Read(string key, int defaultValue){....}
    public static string Read(string key, string defaultValue){....}
    public static bool Read(string key, bool defaultValue){....}
    ...
}

Read函数尝试读取给定键的值。如果密钥不存在或值格式错误,则返回默认值。我将使用这个类:

public class MyClass
{ 
    private int _age = ConfigValues.Read("Com.MyClass.Age", 0); 
    ...
}

这样,我们可以使应用程序中的几乎所有变量都可以自定义。 这是一个好习惯吗? 请免费评论。

4 个答案:

答案 0 :(得分:3)

认为你应该可以配置的人:

有不同看法的人:

答案取决于您的要求:为什么要在此处设置此值?

  • 不同的用户想要设置不同的东西吗? =>配置文件。
  • 它只是稍后要更改的默认值吗? =>硬编码。
  • 是否会影响程序的操作使用(即浏览器的默认主页)? =>配置文件。
  • 是否可能对程序的各个部分产生复杂影响? ...答案取决于您的用户群。

等。这不是一个简单的是 - 它是好的或不是坏的答案。

答案 1 :(得分:2)

配置文件总是一个好主意 例如,可以考虑 INI 文件。

在配置文件中引入版本编号方案非常有用 因此,您知道在文件中期望的值以及何时查找默认值时的值。当配置文件中缺少配置时,您可能会使用硬编码的默认值。

这为您提供了灵活性和后备。

同时决定是否要从申请中更新文件 如果是这样,您需要确保它可以管理文件的格式 您可能希望事先限制格式以使生活更简单。

您可以拥有 CSV 文件或“name=value INI 样式文件。
为您的代码和将要编辑它们的用户保持简单。

答案 2 :(得分:0)

执行:

  • 创建新的C#项目
  • 菜单 - >项目 - > [项目名称]属性
  • 打开“设置”窗格
  • 创建您的设置(强类型)

用法:

class Program
{
    static void Main(string[] args)
    {
        int setting1 = Properties.Settings.Default.Setting1;
        Properties.Settings.Default.Setting1 = 43534;            
        Proerties.Settings.Default.Save();
    }
}

请注意,属性是一个命名空间,您可以将其导入,以便使用Settings.Default.Setting1。

Here is a more detailed link

如果您使用Windows窗体应用程序,则可以在离开应用程序时更改Program.cs文件以保存所有更改的设置:

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        //Add this line
        Application.ApplicationExit +=
                            new EventHandler(Application_ApplicationExit);
        Application.Run(new Form1());
    }

    //and this method:
    static void Application_ApplicationExit(object sender, EventArgs e)
    {
        Properties.Settings.Default.Save();
    }
}

答案 3 :(得分:0)

配置文件还允许您更新值而无需执行其他构建来更改单个值。这对于具有不同配置值(日志级别,用户名等)的所有环境具有一个构建是有用的。此外,如果您缓存值并定期从文件更新,它允许您在应用程序仍在运行时动态进行更改。在某些情况下这可能有点过分,但在调试某些问题时非常有用。