我对魔法数字和魔法字符串产生了真正的反感。通常,我使用有意义的名称创建常量并在那里设置值。这不是一种非典型的做法。但是,我遇到了让我对自己的教条感到疑惑的情况:
我正在编写反映标准消息字符串组件的类。 IOW,第三方服务供应商需要一个定义的消息,其中包含各种长度的“字段”。尝试防御性编码,我把字符串子串放在我的获取中。例如:
public string BrowserHeader {
get
{
return BrowserHeader.Substring(STRING_START, STRING_MAX);
}
set
{
BrowserHeader = value;
}
}
你可以看到我在getter中使用整数常量的位置。在这种情况下,STRING_START = 0,STRING_MAX = 256.我也有STRING_2,STRING_16,STRING_25等。然而,我觉得这不是一个好方法。如果供应商更改给定字段字符串的长度,例如从128到256,我仍然必须搜索该字段的解决方案以更改每个实例。使用BROWSER_HEADER_LENGTH的替代方案令人反感,因为这些字段有得分(如果不是数百)(并且考虑到我从这个供应商看到的内容,如果它们在给定字段的长度不一致,我也不会感到惊讶) 。
那么,这是一个整数常量不是那么糟糕的情况吗?有没有更好的方法来解决这个问题?
由于