我经常和自己争论是否要在我的web.config或Constants.cs类中放置某些键或类似的东西。
例如,如果我想存储应用程序特定的键(无论大小写),我可以将其存储并通过自定义键从Web配置中获取它,或者通过在我的常量类中引用一个常量来使用它。
您何时要在配置键上使用常量?
这个问题确实适用于我认为的任何语言。
我经常和自己争论是否要在我的web.config或Constants.cs类中放置某些键或类似的东西。
例如,如果我想存储应用程序特定的键(无论大小写),我可以将其存储并通过自定义键从Web配置中获取它,或者通过在我的常量类中引用一个常量来使用它。
您何时要在配置键上使用常量?
这个问题确实适用于我认为的任何语言。
Answers:
配置文件中的值比常量类中的值更难维护,因为编译器不检查它是否存在并且类型正确,IDE通常不为其提供代码帮助,并且因为这是您必须切换到的另一种语法在编程时。
所以我建议把:
xsd
一个可以从另一个类生成一个的工具)并使用config XMLSerializer
(无论如何,这都是处理C#中XML的最明智的方式),因此您可以预先进行验证,但这仍然需要一些额外的操作工作。
更改常量需要在大多数情况下重新构建应用程序。换句话说,当某人无法访问代码时,常量将保持不变。
因此,最终用户需要提供(和需要更改)的任何信息都应放在配置文件中。其他大多数都需要接受常量。但是,如果配置文件损坏,则必须有合法的默认值或错误异常处理。
不属于对象抽象的元素(即,如果不打算由外部(调用)对象修改的常量很可能被隐藏,并且本质上意味着它们比配置文件更适合作为私有常量)。
当有许多配置元素属于不同的对象,彼此之间不相关,并且有那么多的对象需要提取(相同或自己的)配置文件时,这些东西本来应该是常量。
一个简单的经验法则是在知道要使用一组固定的值时创建常量,这些值可以应用于任何给定的上下文而无需更改;为其他所有内容提供外部配置。
常量的一个很好的例子是,您使用的所有形状都可以是SQUARE
或ROUND
。在大多数语言中,只需分配一次并优化访问方式,就可以利用该值不会随时间变化的事实。
当您需要动态获取值时需要进行外部配置,因为您无法预先假定要使用的值,但这并不意味着您必须进行任何性能折衷:对于配置值,您期望目前,只要做得正确,您只需为检索它们一次付出代价,并且仍然可以获得所有好处。
您也可以简单地使用以下设计模式:“约定之上的配置”。
http://msdn.microsoft.com/zh-CN/magazine/dd419655.aspx http://en.wikipedia.org/wiki/Convention_over_configuration