代码之家  ›  专栏  ›  技术社区  ›  Armentage

设计属性的提示?

  •  0
  • Armentage  · 技术社区  · 15 年前

    有人能为设计和实现好的属性提供一些指导吗?我关心的方面包括:

    • 副作用
    • 相互排他性
    • 并发性
    • 对称性和可逆性
    • 错误处理/异常

    对于回答这些主题的现有书面报告的指针将是很好的。我不是在寻找有关WPF依赖属性的帮助。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Josh E    15 年前

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

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