java – 测试这个的最佳方法是什么?具有4个位置的二进制数字
发布时间:2020-05-28 13:38:35 所属栏目:Java 来源:互联网
导读:考虑Web表面上的4个输入字段A,B,C和D.用户可以任意填写任何这些.如何填充这些字段有16种组合.允许的是: A B C D-------1 0 0 01 1 0 01 1 1 01 1 1 1 其中1表示不为null,0表示null. 我正在使用jsf的MVC模式.我不希望逻辑在视图中,而是在控制器中.在Java中检
|
考虑Web表面上的4个输入字段A,B,C和D.用户可以任意填写任何这些.如何填充这些字段有16种组合.允许的是: A B C D ------- 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 其中1表示不为null,0表示null. 我正在使用jsf的MVC模式.我不希望逻辑在视图中,而是在控制器中.在Java中检查这个的最佳方法是什么? 到目前为止,我实施了两个解 解决方案1: @Override
public boolean isInputInvalid(Integer a,Integer b,Integer c,Integer d) {
if (isNotSet(a) && isNotSet(b) && isNotSet(c) && isNotSet(d) {
return true;
}
return (firstParameterDoesNotExistAndSecondDoesExist(a,b)) || (firstParameterDoesNotExistAndSecondDoesExist(b,c)) || (firstParameterDoesNotExistAndSecondDoesExist(c,d));
}
private boolean firstParameterDoesNotExistAndSecondDoesExist(Integer firstParameter,Integer secondParameter) {
return isNotSet(firstParameter) && !isNotSet(secondParameter);
}
private boolean isNotSet(Integer parameter) {
return parameter == null;
}
解决方案2: public boolean isInputValid(Integer a,Integer d) {
if (exists(a) && !exists(b) && !exists(c) && !exists(d) || //
exists(a) && exists(b) && !exists(c) && !exists(d) || //
exists(a) && exists(b) && exists(c) && !exists(d) || //
exists(a) && exists(b) && exists(c) && exists(d)) {
return true;
}
return false;
}
private boolean exists(Integer level) {
return level != null;
}
注意: 第一种方法检查输入是否无效,而第二种方法检查输入是否有效(注意方法的名称). 我写了16个单元测试用例,两个版本都运行绿色. 您是否有任何关于如何使代码更具可读性的提示/技巧/窍门? 解决方法
如果您只关心可读性: public static List<String> validOptions = Arrays.asList("1000","1100","1110","1111");
public boolean isValid(Integer a,Integer d)
{
StringBuilder sb = new StringBuilder();
sb.append(a==null ? 0 : 1);
sb.append(b==null ? 0 : 1),sb.append(c==null ? 0 : 1);
sb.append(d==null ? 0 : 1);
return validOptions.contains(sb.toString());
}
请注意,这不是最快或最干净的解决方案(浪费一些CPU和内存) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
