重构记录

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());
    }

猜你喜欢

转载自yourenyouyu2008.iteye.com/blog/1992321