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

将验证作为方法还是属性来实现?

c#
  •  2
  • Treb  · 技术社区  · 17 年前

    我有一个对象,需要测试对象数据是否有效。验证本身将从实例化对象的线程调用,它看起来像这样:

     {
      if (_step.Equals(string.Empty)) return false;
      if (_type.Equals(string.Empty)) return false;
      if (_setup.Equals(string.Empty)) return false;
      return true;
    }
    

    将其实现为属性还是方法更好,为什么?我已经阅读了a的答案 related question ,但我不认为这个具体问题在这里。

    3 回复  |  直到 8 年前
        1
  •  7
  •   Rob    17 年前

    我个人的看法是:

    • 如果“validate”方法以任何方式改变了对象(您的示例没有),则将其设置为方法。
    • 如果对象在验证后保持不变,请将其设置为属性。
        2
  •  1
  •   Gregor    17 年前

    我会说作为一个财产。

    if(something.IsValid) { ...
    

    那看起来好多了

    if(something.IsValid()) { ...
    

    MSDN上的一个例子: http://msdn.microsoft.com/en-us/library/system.web.ui.page.isvalid(VS.71).aspx

        3
  •  1
  •   Konrad Rudolph    17 年前

    这段代码需要重构。这就是用Java而不是C#编写代码的方式。在C#中,你有运算符重载。

    if (_step == "")) return false;
    if (_type == "")) return false;
    if (_setup == "")) return false;
    

    这是做比较的惯用方法。你的方式,除了更冗长之外,在C#中也是出乎意料和不一致的。

    如果, 只有当 ,有可能这些字符串实际上是 null 请使用以下内容代替空白:

    if (string.IsNullOrEmpty(_step)) return false;