....其他业务逻辑
int num = 0; int num2 = 0;
int num3 = 0; int num4 = 0;
int num5 = 0;
for (int i = 0; i < fileDto.size(); i++) {
//...替他业务逻辑
fileType = fileDto.get(i).getFileType();
fileTypes.add(fileType);
//其他逻辑
if (fileType == 0){
fileIdentification = "businessLicense" + num;
num++;
}else if(fileType == 1){
fileIdentification = "agencyDocument" + num2;
num2++;
}else if(fileType == 2){
fileIdentification = "otherDocument" + num3;
num3++;
}else if(fileType == 3){
fileIdentification = "threeYearsAchievement" + num4;
num4++;
}else if(fileType == 4){
fileIdentification = "productsReport" + num5;
num5++;
}
(StringUtils.isEmpty(fileIdentification)){ continue;}
....其他业务逻辑
}
这段代码的逻辑是拼凑一段字符串:例如:agencyDocument0,agencyDocument1…
我们可以发现,这里存在一段 if 语句,并且有5个num变量。显得很不好看。接下来巧用数组进行优化,代码如下。
其中关键是:
fileIdentification = fileIdentificationArr[fileType] + numArr[fileType];
numArr[fileType]++;
//其他业务逻辑
fileType = fileDto.get(i).getFileType();
fileTypes.add(fileType);
//其他逻辑
int[] numArr = new int[5];
String[] fileIdentificationArr = new String[]{"businessLicense","agencyDocument",
"otherDocument","threeYearsAchievement","productsReport"};
for (int i = 0; i < fileDto.size(); i++) {
//...其他业务逻辑
fileIdentification = fileIdentificationArr[fileType] + numArr[fileType];
numArr[fileType]++;
if (StringUtils.isEmpty(fileIdentification)){ continue;}
}
将五个变量用数组声明存贮,将字符串也用数组声明存贮。
fileType在这里会变成数组的下标索引,从而可以替代 if 中的条件查询。就可以把多余的 if ;else if语句去掉了