实现验证器的更好方法比许多 if 语句更好



我的 Angular 应用程序中有一个验证器,它正在验证 IP 范围的输入,以确保范围在通过表单提交之前有效。验证本身都工作正常,但验证器类的一般结构让我想知道是否有更好的方法来实现这一点。

开关不适用于此特定方案,因此这是不可能的。

我的验证方法的简化版本如下所示

validate(input: ipRange[]) { 
for (let i = 0; i < ipRanges.length; i++) {
let range1 = ipRange.range1;
let range2 = ipRange.range2;
if(!validatorRule1(range1) && !validatorRule1(range2) {
//log ip range as invalid 
continue;
}
if(!validatorRule2(range1) && !validatorRule2(range2) {
//log ip range as invalid 
continue;
}
etc...
// log range as valid
}
} 

这对于少量规则来说很好,但是需要添加的每个新规则的方法都会变长。它是可读的,但它看起来不是最专业的。重构此功能以使其看起来更好的最佳方法是什么?

也许创建一个表示验证规则的方法数组,然后对于每个验证规则,使用范围 1 和 2 调用它们并进行日志记录。通过这种方式,您可以在 foreach 中将 if 调用块替换为一个 if。这有意义吗?

相关内容

最新更新