重复代码lambda试着使用高阶函数消除重复代码 case BASE_DATA return unionAllRelationAppraiseesfindExamineBasicAppraiseesappraiseesConfig activityId g - findExamineBasicByEmpGroupg activit
可以使用一个高阶函数来消除重复代码。首先,将两个case中的代码块提取出来作为一个函数,然后将需要根据不同情况执行的代码作为参数传入该函数。
private List<Appraisee> getAppraisees(AppraiseesConfig appraiseesConfig, int activityId, String empGroupId, Function<String, List<Appraisee>> getAppraiseesByEmpGroup) {
return unionAllRelationAppraisees(appraiseesConfig.getAppraisees(activityId), getAppraiseesByEmpGroup, empGroupId);
}
switch (dataType) {
case BASE_DATA:
return getAppraisees(appraiseesConfig, activityId, empGroupId, (g) -> findExamineBasicByEmpGroup(g, activityId));
case EXAMINER_APPRAISEES_DATA:
return getAppraisees(appraiseesConfig, activityId, empGroupId, (g) -> findEvaluationAppraiseesByEmpGroup(g, activityId));
default:
break;
}
在这个例子中,我们将重复的代码块提取出来作为函数getAppraisees,并将需要根据不同情况执行的代码作为getAppraiseesByEmpGroup参数传入。这样就消除了重复代码,并且使得代码更加清晰和可维护
原文地址: http://www.cveoy.top/t/topic/iXE1 著作权归作者所有。请勿转载和采集!