设计属性的提示?

时间:2009-07-27 15:18:47

标签: properties oop

有人可以为设计和实施好的属性提出一些指导吗?我关注的方面包括:

  • 副作用
  • 相互排斥
  • 并发
  • 对称性和可逆性
  • 错误处理/例外

回答这些主题的现有写作指针非常棒。我不是在寻找WPF依赖属性的帮助。

1 个答案:

答案 0 :(得分:1)

通常,除了可能的边界检查和类型检查(取决于语言)之外,属性不应包含几乎任何逻辑。因此,除了错误处理/异常之外,列表中的每个项目都不应该是实现属性时的因素。

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属性也可能是获取更多信息的好地方