Java 代码优化:使用循环和辅助方法简化建议等级统计
以下是优化后的代码:
private SuggestedLevelSummaryVO createSuggestedLevelVO(final SuggestedLevelExportDTO suggestedLevelExport,
final Map<String, Long> suggestedLevelGroup,
final int suggestedLevelSum,
final String wightLevelName) {
final SuggestedLevelSummaryVO suggestedLevelVO = new SuggestedLevelSummaryVO();
suggestedLevelVO.setDept(suggestedLevelExport.getDeptName());
suggestedLevelVO.setEmpCode(suggestedLevelExport.getEmpCode());
suggestedLevelVO.setEmpName(suggestedLevelExport.getEmpName());
suggestedLevelVO.setLevelName(StringUtils.defaultIfBlank(wightLevelName, SheetDataConstants.COMPREHENSIVE_EVALUATION));
final String[] suggestedLevels = {SheetDataConstants.EXCELLENT_SUGGESTED_LEVEL, SheetDataConstants.BE_COMPETENT_SUGGESTED_LEVEL,
SheetDataConstants.BASIC_COMPETENT_SUGGESTED_LEVEL, SheetDataConstants.INCOMPETENT_SUGGESTED_LEVEL};
final Long[] suggestedLevelSums = {DEFAULT_NUMBER_OF_PEOPLE, DEFAULT_NUMBER_OF_PEOPLE, DEFAULT_NUMBER_OF_PEOPLE, DEFAULT_NUMBER_OF_PEOPLE};
for (int i = 0; i < suggestedLevels.length; i++) {
final Long sum = MapUtils.getObject(suggestedLevelGroup, suggestedLevels[i], suggestedLevelSums[i]);
setSuggestedLevelSum(suggestedLevelVO, suggestedLevels[i], sum);
setSuggestedLevelPercentage(suggestedLevelVO, suggestedLevels[i], sum, suggestedLevelSum);
}
suggestedLevelVO.setLevelNameSort(LevelNameEnum.getDutyLevelNameEnum(d -> StringUtils.equals(d.getName(),
StringUtils.defaultIfBlank(wightLevelName, SheetDataConstants.COMPREHENSIVE_EVALUATION)),
LevelNameEnum::getSort, () -> null));
return suggestedLevelVO;
}
private void setSuggestedLevelSum(SuggestedLevelSummaryVO suggestedLevelVO, String level, Long sum) {
switch (level) {
case SheetDataConstants.EXCELLENT_SUGGESTED_LEVEL:
suggestedLevelVO.setExcellentSum(sum);
break;
case SheetDataConstants.BE_COMPETENT_SUGGESTED_LEVEL:
suggestedLevelVO.setCompetentSum(sum);
break;
case SheetDataConstants.BASIC_COMPETENT_SUGGESTED_LEVEL:
suggestedLevelVO.setBaseCompetentSum(sum);
break;
case SheetDataConstants.INCOMPETENT_SUGGESTED_LEVEL:
suggestedLevelVO.setIncompetentSum(sum);
break;
default:
break;
}
}
private void setSuggestedLevelPercentage(SuggestedLevelSummaryVO suggestedLevelVO, String level, Long sum, int suggestedLevelSum) {
switch (level) {
case SheetDataConstants.EXCELLENT_SUGGESTED_LEVEL:
suggestedLevelVO.setExcellentPercentage(calculatePercentage(sum, suggestedLevelSum));
break;
case SheetDataConstants.BE_COMPETENT_SUGGESTED_LEVEL:
suggestedLevelVO.setCompetentPercentage(calculatePercentage(sum, suggestedLevelSum));
break;
case SheetDataConstants.BASIC_COMPETENT_SUGGESTED_LEVEL:
suggestedLevelVO.setBaseCompetentPercentage(calculatePercentage(sum, suggestedLevelSum));
break;
case SheetDataConstants.INCOMPETENT_SUGGESTED_LEVEL:
suggestedLevelVO.setIncompetentPercentage(calculatePercentage(sum, suggestedLevelSum));
break;
default:
break;
}
}
优化说明:
- 使用数组和循环来简化建议等级和总人数的设置过程,减少重复代码。
- 提取了两个辅助方法
setSuggestedLevelSum和setSuggestedLevelPercentage,用于设置建议等级的人数和百分比,使代码更加清晰和可维护。 - 使用
switch语句来替代多个if-else语句,提高代码的可读性和可扩展性。
原文地址: https://www.cveoy.top/t/topic/pe2v 著作权归作者所有。请勿转载和采集!