2009-07-28 90 views
1

我有一個想法,即從配置文件讀取值而不是使用硬代碼值,但我不確定這是否是一種好的做法。閱讀配置值而不是使用幻數是好的嗎?

首先我創建了一個工具類:

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){....} 
    ... 
} 

讀功能將嘗試給定鍵讀取值。如果密鑰不存在或值的格式不正確,則返回默認值。而且我要使用這個類,如:

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

這樣,我們就可以在應用程序定製使幾乎所有的變量。 這是一個很好的做法嗎? 請評論它是免費的。

+0

你使用網絡或Windows應用程序? – Shimmy 2009-07-28 03:44:35

+0

什麼平臺,請重申您的問題,縮小問題到您正在使用的環境 – Shimmy 2009-07-28 03:47:08

回答

3

的人誰認爲你應該做的事情配置:

誰的人有不同的想法:

答案都歸結到您的要求:你爲什麼要在這裏設置這個值?

  • 難道不同的用戶會設置不同嗎? =>配置文件。
  • 它只是稍後更改的默認值嗎? =>硬編碼。
  • 是否影響程序的操作使用(即瀏覽器的默認主頁)? =>配置文件。
  • 這是否會對計劃的各個部分產生複雜的影響? ...答案取決於您的用戶羣。

等等這不是一個簡單的yes-it's-good或no-it's-bad的答案。

2

配置文件總是一個好主意。
例如,考慮INI文件。

在配置文件中引入版本編號方案將非常有用。
因此,您知道文件中的期望值以及何時查找缺省值。當配置文件中缺少配置時,可能會使用硬編碼缺省值。

這給你靈活性和後備。

還決定您是否將從您的應用程序更新文件。
如果是這樣,你需要確定它可以管理文件的格式。
您可能希望事先限制格式以簡化生活。

你可以有CSV文件或 「name=valueINI樣式文件。
讓您的代碼和編輯它們的用戶保持簡單。

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窗體應用程序,則可以更改程序。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(); 
    } 
} 
0

配置文件還允許你沒有做另一個構建改變單一的值更新值。這對於爲所有環境構建一個具有不同配置值(日誌級別,用戶名等)的構建很有用。此外,如果您緩存值並定期從文件更新,則可以在應用程序仍在運行時隨時進行更改。在某些情況下,這可能有些過分,但它可以在調試某些問題時非常有用。

相關問題