2013-12-19 方法命名:方法名称体现方法的功能,与谁调用无关
问题描述:磨课活动中有些步骤必须全部活动成员都操作才算完成,由于活动成员中存在一些无效用户导致该步骤无法完成(这些无效成员是不会执行操作的),活动管理员发现这些无效用户并删除后,逻辑上这个步骤应该算是完成了,但是完成标准的设置是在用户操作的时候判断的,因为删除用户后没有进行该步骤的操作,所以不会去判断完成标志。
增加了一个删除用户后重新计算完成标志的方法
public void updateFinishedWhenDeleteUser(Integer actId),当删除活动成员时调用该方法。
该方法的功能就是重新计算各步骤是否真正完成。
@Async//删除用户后通过事件调用
public void onApplicationEvent(DeleteActUserEvent event) {
actStepService.updateFinishedWhenDeleteUser((Integer)event.getSource());
}
后来发现之前的历史数据没法自动完成,需要通过一个操作重新触发,这时该方法的名称就不太合适了,因为和删除用户没有关系。方法功能的本意是重新计算,而不是什么时候重新计算。
//对历史数据进行处理,这时候updateFinishedWhenDeleteUser名称明显不合适
List<Activity> allacts=activityService.selectActivitys(formIds.toArray(new Integer[0]));
for(Activity act:allacts){
actStepService.updateFinishedWhenDeleteUser(act.getId());
}
将方法名称重构成updateFinishedStatus,上面两种情况的调用改成如下形式。
List<Activity> allacts=activityService.selectActivitys(formIds.toArray(new Integer[0]));
for(Activity act:allacts){
actStepService.updateFinishedStatus(act.getId());
}
@Async
public void onApplicationEvent(DeleteActUserEvent event) {
actStepService.updateFinishedStatus((Integer)event.getSource());
}