zoukankan      html  css  js  c++  java
  • 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中用到的一些好的方法和思路。下回见,我是百灵。

  • 相关阅读:
    C#可视化程序设计第三章(3,4)
    "Can’t be opened because Apple cannot check it for malicious software" 解决方案
    Mac系统.DS_Store文件导致IOError: [Errno 20] Not a directory:解决方案
    读书笔记 《局外人》
    Chrome 67之后无法离线安装插件
    函数和方法的区别
    github|webstorm
    webstorm
    Markdown
    github
  • 原文地址:https://www.cnblogs.com/mbailing/p/14099649.html
Copyright © 2011-2022 走看看