java - 避免多个 if/else 条件
问题描述
使用 Java 6
有 70 多个属性要检查如下。如下重构代码的最佳方法是什么?
if(0 == compareField1) {
if(0 == compareField2) {
if(0 == compareField3) {
if(0 == compareField4) {
if(0 == compareField5) {
......
} else {
return compareField5;
}
} else {
return compareField4;
}
} else {
return compareField3;
}
} else {
result = compareField2;
}
} else {
result = compareField1;
}
解决方案
您可以使用一个整数数组,其中索引为 X 的单元格将保留字段编号 X 的值
final int fieldsCount = 60;
int[] fields = new int[fieldsCount ];
fields = loadFields(); // here you are populating fields
for(int i = 0; i < fieldsCount ; i++) if(fields[i] != 0) return fields[i];
// further logic (else)
推荐阅读
- python - Pandas:如何仅删除列末尾的最后一个连字符
- google-forms - 如何根据其他用户过去的回复使 Google 表单自动填充?
- c - 我知道一个地址,但我应该如何判断在哪个部分?使用C的全局区域或堆区域或堆栈区域
- json - 如何解决“手势 RangeError(索引)捕获的异常:无效值:有效值范围为空:0”
- c++ - 什么会使多边形算法中的点仅在正向和反向运行时才能正常工作?
- php - PHP:如何使用键->值对每两个分隔符将一个字符串分解为一个数组
- kubernetes - 将 GKE 集群拆除为“全新”状态而不删除它?
- scala - Spark——自定义reduce函数保存到磁盘然后上传到s3
- javascript - XMLHttpRequest 返回事件对象而不是实际数据
- fortran - Fortran 将未知大小的文件读入数组