0

调用快速方法是:

QuickMethods.IsFullyEmpty(CompanyName.Text) ||
                QuickMethods.IsFullyEmpty(UsernameText.Text) ||
                QuickMethods.IsFullyEmpty(PasswordText.Password)

和实施是:

public static class QuickMethods
    {
        public static bool IsFullyEmpty(string s)
        {
            if (string.IsNullOrEmpty(s.Trim()))
                return true;
            return false;
        }
    }

有什么选择吗?如果是,那怎么办?

4

5 回答 5

3

我认为好处是该方法还检查仅包含空格的字符串,但如果您正在寻找“选项”,那么在 .NET 4.0 中您可以使用string.IsNullOrWhiteSpace()并避免调用Trim().

于 2012-04-15T16:17:04.040 回答
1

为什么不将此验证逻辑提取到方法(或属性)中?

class TheViewModel
{
    public string CompanyName { get; set; }
    public string UsernameText { get; set; }
    public string PasswordText { get; set; }

    private bool Validate()
    {
        bool result = !QuickMethods.IsFullyEmpty(CompanyName) &&
                !QuickMethods.IsFullyEmpty(UsernameText) &&
                !QuickMethods.IsFullyEmpty(PasswordText);
        return result;
    }
}
于 2012-04-15T16:29:33.090 回答
0

主要的好处是封装了 IsFullyEmpty 的实现。这改进了您的设计,因为您只需要在一个组件中更改 IsFullyEmpty 的实现(而不是每个调用 IsFullyEmpty 的组件)。当您(或其他团队成员)开发新组件时,您可以避免由于重新实现 IsFullyEmpty() 逻辑而导致的错误(即,您团队中的新程序员可能会忘记先 Trim() 字符串)。重构也有好处,例如,如果这是一个迁移到 .NET 4.0 的 .NET 2.0 项目,您可以将 IsFullyEmpty 重构为:

public static class QuickMethods 
{ 
   public static bool IsFullyEmpty(string s) 
   { 
     return string.IsNullOrWhitespace(s);
   }
}
于 2012-04-15T16:23:50.053 回答
0

您可以利用paramsextension method的优势。

public static class QuickMethods
    {
        public static bool IsFullyEmpty(this string s, params string[] others)
        {

            if(s != null && s.trim().length > 0) {
               return false;
            }

            for(String o : others) {
              if(o != null && o.trim().length > 0)) {
               return false;
              }
            }

            return true;         
        }
    }
于 2012-04-15T16:27:44.713 回答
0

这比组合的 IsNullOrEmpty(s.Trim()) 更具可读性

改进的版本将提供一些关于错误的反馈。

于 2012-04-15T16:09:55.923 回答