我有一些代碼具有大量內部#if DEBUG... #else
塊定義的常量的更好的方法;例如:爲條件代碼
public static class C
{
#if DEBUG
public const string FIELDAAA = "VeryLongDescriptiveFieldName";
public const string FIELDBBB = "AnotherLongDescriptiveFieldName";
public const string FIELDCCC = "YetAnotherLongFieldName";
// ... many more field definitions
#else
public const string FIELDAAA = "F1";
public const string FIELDBBB = "F2";
// Notice that FIELDCCC is missing - whoever added it to the
// DEBUG block, forgot to add it here.
#endif
}
這些字段用於構建第三方服務器的文本請求 - 服務器可以採用任何形式的字段名稱。不過,使用縮寫形式會更有效率,因爲每條消息都有一個大小限制,而當請求變得太大時,必須將其分解爲幾條消息。每條消息都有一定的成本,所以我們的軟件應該在生產中使用短字段名稱,在開發過程中使用長名稱(用於調試)。
有許多與此設置源文件,其中大部分都在DEBUG塊和else區塊不匹配的常量。由於這些不匹配,由於缺少常量,此應用程序的某些部分無法在發佈模式下構建。
我試圖通過刪除巨大的DEBUG
塊來解決這個問題,但我需要保持長字段和短字段的名稱定義,同時確保很難錯誤地添加新字段。我也希望將更改數量保持在最低水平 - 這是很多用戶使用的一個大型應用程序,我不想引入重大更改 - 這些字段在許多地方都有使用。
目前,這就是我的想法:
public static class C
{
public const string FIELDAAA =
#if DEBUG
"VeryLongDescriptiveFieldName";
#else
"F1";
#endif
public const string FIELDBBB =
#if DEBUG
"AnotherLongDescriptiveFieldName";
#else
"F2";
#endif
public const string FIELDCCC =
#if DEBUG
"YetAnotherLongFieldName";
#else
"F3";
#endif
// more constants
}
我不知道我是否有心理障礙,但我想不出什麼更好的顯著。有沒有更好的方法可以讓我做我想做的事情,但使用不太麻煩的設置?使用#if DEBUG
我沒有問題,但這感覺很髒,如果有更清潔的解決方案,我更喜歡這個。
您可以從資源文件中讀取它們,並具有用於調試的不同文件。 – cubrr
我意識到沒有更好的。你的解決方案結束了缺少的常量問題,因爲如果在這個變化之後有人'忘記'添加兩個常量,那麼他最好改變工作。 – Steve