当前位置: 首页 > news >正文

重庆vr制作广西壮族自治区在线seo关键词排名优化

重庆vr制作,广西壮族自治区在线seo关键词排名优化,东莞推广就莞用服务平台,云服务器服务安全在某些情况下#xff0c;我们需要先验证输入数据#xff0c;然后再将其发送到业务逻辑层进行处理#xff0c;计算等。这种验证在大多数情况下是孤立完成的#xff0c;或者可能包括与外部数据或其他输入的某些交叉检查。 看下面的示例#xff0c;该示例验证用户输入的注册数… 在某些情况下我们需要先验证输入数据然后再将其发送到业务逻辑层进行处理计算等。这种验证在大多数情况下是孤立完成的或者可能包括与外部数据或其他输入的某些交叉检查。 看下面的示例该示例验证用户输入的注册数据。 public void register(String email, String name, int age) {String EMAIL_PATTERN ^[_A-Za-z0-9-\\](\\.[_A-Za-z0-9-])* [A-Za-z0-9-](\\.[A-Za-z0-9])*(\\.[A-Za-z]{2,})$;Pattern pattern Pattern.compile(EMAIL_PATTERN);ListString forbiddenDomains Arrays.asList(domain1, domain2);if ( email null || email.trim().equals()){throw new IllegalArgumentException(Email should not be empty!);}if ( !pattern.matcher(email).matches()) {throw new IllegalArgumentException(Email is not a valid email!);}if ( forbiddenDomains.contains(email)){throw new IllegalArgumentException(Email belongs to a forbidden email);}if ( name null || name.trim().equals()){throw new IllegalArgumentException(Name should not be empty!);}if ( !name.matches([a-zA-Z])){throw new IllegalArgumentException(Name should contain only characters);}if ( age 18){throw new IllegalArgumentException(Age should be greater than 18);}// More code to do the actual registration} 这种方法的循环复杂性确实很高如果要验证的字段更多或添加实际的业务逻辑则可能会变得更糟。 当然我们可以将代码分为两个私有方法validatedoRegister但是几个if块将被移到私有方法的问题。 除此以外该方法还要做很多事情而且很难测试。 当我要求初级开发人员重构该代码并使之更具可读性可测试性和可维护性时他们像个外星人一样看着我“我应该如何简化它。 我该如何替换这些if块” 好了这里的解决方案效果很好遵循“单一责任模式”使代码更易于阅读。 为了更好地理解解决方案请将每个if块都视为验证规则。 现在是时候为这些规则建模了。 首先用一种方法创建一个接口。 用Java 8术语它称为功能接口 如下所示。 public interface RegistrationRule{void validate(); } 现在是时候将每个验证检查转换为注册规则了。 但是在我们这样做之前我们需要解决一个小问题。 我们的界面实现应该能够处理注册数据但是如您所见我们拥有不同类型的数据。 因此我们这里需要将注册数据封装在单个对象中如下所示 public class RegistrationData{private String name;private String email;private int age; // Setters - Getters to follow } 现在我们可以改善功能界面 public interface RegistrationRule{ void validate(RegistrationData regData); } 并开始编写我们的规则集。 例如让我们尝试实现电子邮件验证。 public class EmailValidatationRule implements RegistrationRule{private static final String EMAIL_PATTERN ^[_A-Za-z0-9-\\](\\.[_A-Za-z0-9-])* [A-Za-z0-9-](\\.[A-Za-z0-9])*(\\.[A-Za-z]{2,})$;private final Pattern pattern Pattern.compile(EMAIL_PATTERN);Overridepublic void validate(RegistrationData regData) {if ( !pattern.matcher(regData.email).matches()) {throw new IllegalArgumentException(Email is not a valid email!);} } 显然我们在上述类中隔离了电子邮件验证。 我们可以对初始实施的所有规则执行相同的操作。 现在我们可以重新编写我们的注册方法以使用验证规则。 ListRegistrationRule rules new ArrayList();rules.add(new EmailValidatationRule());rules.add(new EmailEmptinessRule());rules.add(new ForbiddenEmailDomainsRule());rules.add(new NameEmptinessRule());rules.add(new AlphabeticNameRule());for ( RegistrationRule rule : rules){rule.validate(regData);} 为了变得更好我们可以使用Factory模式和一个静态方法get创建一个Rules类该方法将返回规则列表。 我们的最终实现将如下所示 for ( RegistrationRule rule : Rules.get()){rule.validate(regData); } 将我们的注册方法的初始版本与最终版本的注册方法进行比较会产生疑问。 我们的新版本更紧凑更易读当然也更具可测试性。 实际的检查已移至单独的类也易于测试并且所有方法仅做一件事请始终牢记这一点。 翻译自: https://www.javacodegeeks.com/2014/07/avoiding-many-if-blocks-for-validation-checking.html
http://www.zqtcl.cn/news/33528/

相关文章:

  • 做投标的在什么网站找信息苏州网站设计网站搭建
  • 漳州城乡住房建设部网站成考过来人的忠告
  • 网站的付款链接怎么做的如何做网站的导航栏
  • 二维码生成器网站源码可以为自己的小说建设网站
  • 宁波建站模板wordpress前台发表
  • 寻甸马铃薯建设网站大连建设执业资格注册中心网站
  • 做网站后台程序是怎么来的什么是网站后台建设
  • 设计网站公司专注y湖南岚鸿知 名html模板素材
  • 公司网站年费杭州建站网站建设
  • 网站视频链接资讯类网站模板
  • 好牛网站建设一般通过什么渠道了解防灾减灾知识?(可多选)
  • 2014 网站建设购物网站的文化建设问题
  • 济南网站建设 力选聚搜网络外网访问nas wordpress
  • ASP个人网站的建设营销活动有哪些
  • 零食网站模板seo推广怎么做
  • 网站空间怎么建站企业网站建设 百度文库
  • 在山东省建设监理协会网站手机网站是怎么制作的
  • 免费网站ppt模板下载成熟短视频源码大全
  • 高端平面设计作品网站深圳市住建局网站官网
  • 做网站要实名认证吗dedecms做的网站_网站中的图片总是被同一ip恶意点击
  • 织梦网站源码网上注册公司价格
  • 购物网站排名前十企业邮箱怎么找
  • 自适应单页网站模板温州市网站制作多少钱
  • 有个可以做图片的网站珠海网络营销外包收费情况
  • 网站建设与优化及覆盖率方案品牌seo公司
  • 中山市 做网站浙江 外贸网站建设
  • 什么是网站结构优化233建筑网校
  • 科技公司的网站建设费入什么科目腾讯云部署wordpress
  • 不改变网站怎么做关键词优化北京网站设计制作网站
  • 免费家政网站建设张家界建设网站制作