ASP.NET Lab

The Best Web, The Best Future

博客园 首页 新随笔 订阅 管理

通常,方法用来呈现动作而属性用来呈现数据。并且属性能够与字段一样被使用,因此说明了属性不应该是复杂的计算或者会导致副作用的。关于属性设计的附加信息,请参考:[索引属性的设计]和[属性变化的通知事件]。

下列指导方针有助于确保你的属性是设计良好的。

如果调用者不应该改变属性的值,就创建只读的属性。

明白属性类型的可变性会影响终端用户对其所作的改变。例如,如果你定义了一个只读属性来返回一个可读写的集合,那么终端用户就不能够为该属性重新指派另外一个不同的集合,但是能够更改集合中的元素。

不要提供只能够被设置的属性。

如果不能够提供属性的获取器,就使用一个方法来实现替代功能。方法的名称应该遵循属性的名称并且以 Set 作为起始部分。例如,AppDomain 有一个被称作 SetCachePath 的方法来代替一个被称作 CachePath 的只能够被设置的属性。

为所有属性都提供明智的默认值,并确保默认值不会导致安全漏洞或一个极端的劣质设计。
允许属性能够通过任何指令而被设置,即使这样做导致了一个临时性的无效对象状态。
如果属性的设置器抛出了一个异常,就需要保持以前的值。
避免从属性的获取器中抛出异常。

属性的获取器应该是在排除了任何前提的情况下的简单操作。如果一个获取器可能会抛出异常,那么就考虑把这个属性重新设计成方法。然而这个建议并不适用于索引器。因为索引器能够在出现无效参量的时候抛出异常。

posted on 2007-01-31 19:30  Laeb  阅读(203)  评论(0编辑  收藏  举报