Code-Review-关键路径法

Code-Review-关键路径法

 

关键路径

解释:关键路径可以理解为项目的核心路径,可以总结出来的流程,或者已有项目中的重点业物流。

我们来举个例子,工程师A开发了一套SDK的服务端,功能包括登录,支付、实名制、积分、充值限制配置等等。我们拿其中的一个重要功能扩展来讲。

A.登录

以下代码是我临时写的,用于举例子。无法运行。请注意。

@Autowired
UserService userService;

public User login(long userId){

        //省略token等等认证
        User user = userService.getUser(userId);

        if (user!=null){
               System.out.println("login OK");
               return user;
        }else{
              //注册新用户。
             try{
                   user= new User();
                   //此处省略user的属性赋值
                   userService.register(user);
             }catch(Exception e){
                    System.out.println("login fail");
             }

             //写缓存
             userService.saveUserCache(user);

             //同步到全量数据表
             userService.synUser(user);
  
        }


        return user;
  

}

 

我们来看这段登录代码,其核心功能就是保证登录成功,用户登录,验证凭证和查询用户信息,如果用户存在,则返回用户信息。如果不存在,则创建用户。登录成功和创建成功后,都会更新用户的信息到缓存中,同时同步到全量表中。

 

 //写缓存
 userService.saveUserCache(user);

 //同步到全量数据表
 userService.synUser(user);

 

 

Code-Review-关键路径法:就是要非关键路径尽量减少对关键路径的影响,对于登录,login票据验证,返回用户信息(创建用户信息)来说,写缓存和同步全量数据表的操作就可以理解为非关键路径。非关键路径要减少对关键路径的影响。

所以,从代码来看,写缓存和同步到全量数据表的功能在有异常的情况下,会直接影响到关键路径。所以,需要正对这俩个非关键路径代码块进行异常处理。

 

try{
       //写缓存
      userService.saveuserCache(user);

}
catch(Exception e){ log.error("write user cache error:{}",e.getMessage()); }
try{ //同步到全量数据表 userService.synUser(user);
}
catch(Exception e){ log.error("write to syn table error:{}",e.getMessage()); }

 

增加了异常处理后,以上俩个代码块就不会影响到关键路径。可能大家会简单认为这是一个异常处理的问题,但是本质上是一种Code-Review的思路,就是关键路径法的思路。顺着这个思路来,我们能在代码review阶段发现很多问题,并且能及早的修复。

当然,异常处理的代码示例我只是简单的写了个例子,只是用来说明关键路径法的好处。

 

 

最后我要补充的内容是,关键路径法应用的场景还有很多,比如项目设计,需求、测试等等各个环境都可以应用,小时候大人常说的举一反三,就是这个道理,一个好的解决方案或者方法,一定是可以应用到多个不同的场合和场景的。

 

 

好了,今天就写到这里。后续会陆续补充Code-Review中用到的一些好的方法和思路。下回见,我是百灵。

 

posted @ 2020-12-08 15:33  jerry-Tom  阅读(143)  评论(0编辑  收藏  举报