我有一些代码具有大量内部#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