皓月白熏 2022-09-06 14:07 采纳率: 80.8%
浏览 39
已结题

这段代码已经优化一版了,但是感觉还能优化?可以提个思路吗?

这段代码已经优化一版了,但是感觉还能优化?可以帮忙提个思路吗?
优化之后的代码如下:

protected void internalConsume(Command cmd) {
    //进入客户端时更新超时消息
    updateTimeoutMsgWhenEnterAdapter(cmd);
    
    Buffer contentBuffer = null;
    NCBuilder nb = NCBuilder.builder().cmd(cmd).build();
    try {
      //1.初始化参数
      initParameters(nb);
      //如果版本是2005之后走这个逻辑
      if(NcVersion.isNCC2005AfterVersion(nb.getVersion())){
        nclog.debug("Call " + nb.getVersion() +"u begin, senderId is " + cmd.getSenderID());
        Map<String, String> headerMap = initHeaderMap(nb);
        //2.获取token
        //获取参数的接口,不需要获取token。
        if (judgeRequestAccount(nb.getNcAcctContext())) {
          handleParametersRequest(nb, headerMap, RETRYNUM);
        } else {
          Boolean accountCodeIsNull = checkAccountCode(nb);
          //获取token
          if (!accountCodeIsNull) {
            getToken(nb, tokenRes -> {
              if (tokenRes.succeeded()) {
                //3.获取token成功拼到header里,请求业务接口
                Token token = tokenRes.result();
                headerMap.put("access_token", token.getAccess_token());
                headerMap.put("security_key", token.getSecurity_key());
                //请求业务接口  RETRYNUM 重试次数默认为3
                handleNCCBusinessRequest(nb, headerMap, RETRYNUM);
              } else {
                //处理失败结果
                handleResult(nb.getCmd(), nb.isAsyn(), null, StatusCode.GATEWAY_EXECUTE_FAIL,
                        tokenRes.cause());
              }
            });
          }
        }
        return;
      }
      if (!nb.isGet()) {
        Objects.requireNonNull(nb.getNcAcctContext(), "ncAcctContext can't be null");
        byte[] datas = nb.getNcAcctContext().toString().getBytes(StandardCharsets.UTF_8);
        contentBuffer = Buffer.buffer(datas);
      }
    }  catch (Exception e) {
      //解析参数异常
      cmd.fail(vertx, StatusCode.PARAMETER_ERROR.getValue(), e.getMessage());
      log(cmd, null, StatusCode.PARAMETER_ERROR.getValue(), e);
      return;
    }
    //打印适配器收到请求的日志
    printAdapterRequestLog(nb);
    //2005之前的处理逻辑
    handleRequest(nb, contentBuffer, RETRYNUM);
  }
  • 写回答

3条回答 默认 最新

  • 穿条秋裤到处跑 2022-09-06 15:16
    关注

    img


    这一大段放到另一个方法去,让当前方法的整体逻辑更加清晰明了一些

    contentBuffer的定义放到下面来,离初始化更近的位置

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月16日
  • 已采纳回答 9月8日
  • 创建了问题 9月6日

悬赏问题

  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作