【发布时间】:2009-07-27 15:18:46
【问题描述】:
任何人都可以为设计和实施好的属性提供一些指导吗?我关心以下方面:
- 副作用
- 互斥性
- 并发
- 对称性和可逆性
- 错误处理/异常
指向回答这些主题的现有文章会很棒。我不是在寻求 WPF 依赖属性方面的帮助。
【问题讨论】:
标签: properties oop
任何人都可以为设计和实施好的属性提供一些指导吗?我关心以下方面:
指向回答这些主题的现有文章会很棒。我不是在寻求 WPF 依赖属性方面的帮助。
【问题讨论】:
标签: properties oop
作为一项规则,除了可能的一些边界检查和类型检查(取决于语言)之外,属性不应包含几乎任何逻辑。因此,除了错误处理/异常之外,列表中的每个项目都不应该是实现属性时的因素。
W.R.T 错误处理,从属性中抛出异常是绝对可以的(即当调用块试图将属性设置为无效值时)。此外,尝试解析数据时,使用 try...catch 语句是合适的。
这方面的一个例子是在 Web 应用程序中使用属性隐藏请求参数:
public int UserId
{
get {
string x = Request["userid"];
int userid = -1;
if (!int.TryParse(x, out userid))
throw new ApplicationException("UserID must be a valid integer");
return userid;
}
}
这是一个有点做作和简化的例子,但我希望它能说明这一点。在实际应用程序中,您可能希望使用不同的错误处理和/或解析方法来检查 ID 的有效范围等,这一切都取决于您的具体情况。
属性的wikipedia entry 也可能是了解更多信息的好地方
【讨论】: