当前位置:首页>家电维修>热水器>

vosmisi热水器是什么品牌(德国生产的热水器什么牌子的好)

vosmisi热水器是什么品牌(德国生产的热水器什么牌子的好)

更新时间:2022-03-08 16:34:25

摘要

开发已过几载,阅代码无数,有人写的代码逻辑清晰,bug难以隐藏;依赖最少,易于维护;错误处理完全根据一个明确的策略;性能接近最佳化,避免代码混乱和无原则的优化;后期阅读真是赏心悦目,就像是看一篇文章。

但今天我想DIss的是一些CV大佬,那写的代码真是惨不忍睹。

来吧,展示

标志位以及全局变量太多,看的头皮发麻,后期一旦有个地方忘了程序就会出错

/* 处理的业务的各种计算 */ public Result beginBusiness(Map<String, String> requestParmsMap,String myBusinessMessage,String ) throws RuntimeException { System.out.println("开始了"); // 规则方案ID String goodbusinessid = requestParmsMap.get("goodbusinessid"); // 项目GUID String myprojectKey = requestParmsMap.get("myprojectKey"); // 报表类型 String reportType = requestParmsMap.get("reportType"); // 数据配置ID String dataConfigId = requestParmsMap.get("dataConfigId"); // 数据配置编号 String dataConfigCode = requestParmsMap.get("dataConfigCode"); // 客户端请求ID String clientReqId = requestParmsMap.get("clientReqId"); // 客户端标识 String clientSymbol = requestParmsMap.get("clientSymbol"); // 数据期始时间 String startDateStr = requestParmsMap.get("startDate"); Date startDate = null; // 数据期末时间 String endDateStr = requestParmsMap.get("endDate"); Date endDate = null; String isCalYesterday = "true"; try { if("false".equalsIgnoreCase(requestParmsMap.get("isCalYesterday"))) { isCalYesterday = String.valueOf(Boolean.valueOf(requestParmsMap.get("isCalYesterday"))); } } catch (Exception e) { } // 判断其时间顺序是否满足四个时间依次递增关系 String agentTimeCheckEnable = requestParmsMap.get("agentTimeCheckEnable"); try { goodbusinessid = goodbusinessid.trim(); } catch (Exception e) { } try { myprojectKey = myprojectKey.trim(); } catch (Exception e) { } try { reportType = reportType.trim(); } catch (Exception e) { } try { dataConfigId = dataConfigId.trim(); } catch (Exception e) { } try { dataConfigCode = dataConfigCode.trim(); } catch (Exception e) { } try { clientReqId = clientReqId.trim(); } catch (Exception e) { } try { clientSymbol = clientSymbol.trim(); } catch (Exception e) { } try { agentTimeCheckEnable = String.valueOf(Boolean.valueOf(agentTimeCheckEnable.trim())); if("true".equalsIgnoreCase(agentTimeCheckEnable)) { agentTimeCheckEnable = "true"; }else { agentTimeCheckEnable = "false"; } } catch (Exception e) { agentTimeCheckEnable = "false"; } try { startDateStr = startDateStr.trim(); startDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(startDateStr); } catch (Exception e) { startDate = null; } try { endDateStr = endDateStr.trim(); endDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(endDateStr); } catch (Exception e) { endDate = null; } if( StringUtils.isBlank(goodbusinessid) && StringUtils.isBlank(myprojectKey)) { logger.info("请求参数有误,requestParmsMap:{}", JSON.toJSONString(requestParmsMap)); throw new RuntimeException("请求参数有误"); } if(StringUtils.isNotBlank(clientReqId) || StringUtils.isNotBlank(clientSymbol) ) { if(StringUtils.isBlank(clientReqId)||StringUtils.isBlank(clientSymbol)) { logger.info("请求参数有误,requestParmsMap:{}", JSON.toJSONString(requestParmsMap)); throw new RuntimeException("请求参数有误"); } List<EngineAchieveRequest> engineAchieveRequestList = this.engineAchieveRequestMapper.findByClientId(null, clientReqId, clientSymbol); if(CollectionUtils.isNotEmpty(engineAchieveRequestList)) { logger.info("请求参数有误,客户请求号有重复,requestParmsMap:{}", JSON.toJSONString(requestParmsMap)); throw new RuntimeException("请求参数有误:客户请求号有重复"); } }

// 报表类型 List<String> dataTypes = enginegoodbusinessMapper.findDataTypes(); // 有传goodbusinessid Enginegoodbusiness oneEnginegoodbusiness = null; try { if(StringUtils.isNotBlank(goodbusinessid)) { oneEnginegoodbusiness = enginegoodbusinessMapper.selectByPrimaryKey(Long.valueOf(goodbusinessid)); // 判断是否有效 if(oneEnginegoodbusiness.getStatus().intValue()!=3 && oneEnginegoodbusiness.getStatus().intValue()!=5) { throw new Exception("规则方案配置未生效"); } // 判断是否默认配置 if(StringUtils.isBlank(oneEnginegoodbusiness.getmyprojectKey())) { throw new Exception("默认规则方案不能直接执行"); } // 初始化ProjectId if(StringUtils.isBlank(myprojectKey)) { myprojectKey = oneEnginegoodbusiness.getmyprojectKey(); } } } catch (Exception e) { logger.info("规则方案配置有误,requestParmsMap:{},ex:{}", JSON.toJSONString(requestParmsMap), e); throw new RuntimeException("规则方案配置有误"); } // 传了 myprojectKey List<Enginegoodbusiness> pidEnginegoodbusinesss = null; if(oneEnginegoodbusiness==null || oneEnginegoodbusiness.getId()==null) { if(StringUtils.isNotBlank(myprojectKey)) { if(StringUtils.isNotBlank(dataConfigId)) { pidEnginegoodbusinesss = enginegoodbusinessMapper.findByCidIdAndPid(Long.valueOf(dataConfigId), myprojectKey); }else if(StringUtils.isNotBlank(dataConfigCode)) { DataConfig dc = dataConfigMapper.findByDataConfigCode(dataConfigCode); pidEnginegoodbusinesss = enginegoodbusinessMapper.findByCidIdAndPid(Long.valueOf(dc.getId()), myprojectKey); }else { pidEnginegoodbusinesss = enginegoodbusinessMapper.findByPid(myprojectKey); } if(CollectionUtils.isEmpty(pidEnginegoodbusinesss)) { if(StringUtils.isNotBlank(reportType)) { pidEnginegoodbusinesss = enginegoodbusinessMapper.findDefaultCngBygoodbusinessDataType(reportType); }else { pidEnginegoodbusinesss = enginegoodbusinessMapper.findDefaultCng(); } } } } // 是否添加默认的配置 List<Enginegoodbusiness> defaultEnginegoodbusinesss = enginegoodbusinessMapper.findDefaultCngsByDataTypes(dataTypes); List<Enginegoodbusiness> needDefaultEnginegoodbusinesss = new ArrayList<>(); for(Enginegoodbusiness defaultEnginegoodbusiness:defaultEnginegoodbusinesss) { boolean isNeedAdd = true; for(Enginegoodbusiness pidEnginegoodbusiness:pidEnginegoodbusinesss) { // 默认配置已经包含在内,直接跳过 if(defaultEnginegoodbusiness.getId().equals(pidEnginegoodbusiness.getId())) { isNeedAdd = false; break; } // 默认配置的时间是否重复 if(defaultEnginegoodbusiness.getgoodbusinessDataType().equals(pidEnginegoodbusiness.getgoodbusinessDataType()) && DateUtil.isInDate(pidEnginegoodbusiness.getStartDate(), pidEnginegoodbusiness.getEndDate(), defaultEnginegoodbusiness.getStartDate(), defaultEnginegoodbusiness.getEndDate())) { isNeedAdd = false; break; } } if(isNeedAdd) { needDefaultEnginegoodbusinesss.add(defaultEnginegoodbusiness); } } if(CollectionUtils.isNotEmpty(needDefaultEnginegoodbusinesss)) { pidEnginegoodbusinesss.addAll(needDefaultEnginegoodbusinesss); } // 基本数据校验 List<Enginegoodbusiness> enginegoodbusinesssNeedCk = new ArrayList<Enginegoodbusiness>(); if(oneEnginegoodbusiness!=null && oneEnginegoodbusiness.getId()!=null) { if(this.checkEnginegoodbusinessIsSimpleOk(oneEnginegoodbusiness, Arrays.asList(Integer.valueOf(3),Integer.valueOf(5)))) { enginegoodbusinesssNeedCk.add(oneEnginegoodbusiness); } }else { if(CollectionUtils.isNotEmpty(pidEnginegoodbusinesss)) { for(Enginegoodbusiness dbEnginegoodbusiness : pidEnginegoodbusinesss) { if(this.checkEnginegoodbusinessIsSimpleOk(dbEnginegoodbusiness, Arrays.asList(Integer.valueOf(3),Integer.valueOf(5)))) { enginegoodbusinesssNeedCk.add(dbEnginegoodbusiness); } } } } // 方案规则 List<Enginegoodbusiness> enginegoodbusinesss = new ArrayList<Enginegoodbusiness>(); // 数据配置校验 try { for(Enginegoodbusiness filterEnginegoodbusiness : enginegoodbusinesssNeedCk) { DataConfig dataConfigCk = dataConfigMapper.selectByPrimaryKey(Long.valueOf(filterEnginegoodbusiness.getDataConfigId())); // 不符合条件的数据模版过滤 if(this.checkDataConfigIsOk(dataConfigCk, Integer.valueOf(1))==false) { continue; } // 不符合条件的规则方案过滤 if(this.checkEnginegoodbusinessIsOk(filterEnginegoodbusiness, Arrays.asList(Integer.valueOf(3),Integer.valueOf(5)))==false) { continue; } enginegoodbusinesss.add(filterEnginegoodbusiness); } } catch (Exception e) { logger.error("数据配置不正确,requestParmsMap:{},ex:{}", JSON.toJSONString(requestParmsMap), e); throw new RuntimeException("数据配置不正确"); } if(CollectionUtils.isEmpty(enginegoodbusinesss)) { logger.error("找不到适合的方案规则,requestParmsMap:{}", JSON.toJSONString(requestParmsMap)); throw new RuntimeException("找不到适合的方案规则"); } // 方案规则是否可计算 boolean canCal = false; for(Enginegoodbusiness enginegoodbusiness : enginegoodbusinesss) { // 方案为“3:审核通过”、“5:生效”为可计算 if(enginegoodbusiness!=null && (enginegoodbusiness.getStatus().intValue()==3 || enginegoodbusiness.getStatus().intValue()==5)) { canCal = true; break; } } if(canCal==false) { logger.error("找不到适合的方案规则(canCal==false),requestParmsMap:{}", JSON.toJSONString(requestParmsMap)); throw new RuntimeException("找不到适合的方案规则"); } // 按时间过滤规则 if(startDate!=null || endDate!=null) { enginegoodbusinesssNeedCk.clear(); enginegoodbusinesssNeedCk.addAll(enginegoodbusinesss); enginegoodbusinesss.clear(); for(Enginegoodbusiness enginegoodbusinessCk : enginegoodbusinesssNeedCk) { if( (startDate==null || startDate.compareTo(enginegoodbusinessCk.getStartDate())<=0) && (endDate==null || endDate.compareTo(enginegoodbusinessCk.getEndDate())>=0) ) { enginegoodbusinesss.add(enginegoodbusinessCk); } } } // 检查规则是否唯一 if (!checkEnginegoodbusinesssIsUnique(enginegoodbusinesss)) { logger.error("找不到适合的方案规则,规则不唯一,requestParmsMap:{}", JSON.toJSONString(requestParmsMap)); throw new RuntimeException("找不到适合的方案规则"); } //判断project是否存在 Proj proj = this.projMapper.getProjIdBymyprojectKey(myprojectKey); if(proj==null) { logger.error("项目不存在,requestParmsMap:{}", JSON.toJSONString(requestParmsMap)); throw new RuntimeException("项目不存在"); } // 根据结束时间从大到小排序 Collections.sort(enginegoodbusinesss, new Comparator<Enginegoodbusiness>() { @Override public int compare(Enginegoodbusiness o1, Enginegoodbusiness o2) { if(o1==null||o1.getEndDate()==null) { return -1; } int dateCom = o2.getEndDate().compareTo(o1.getEndDate()); if(dateCom==0) { dateCom = o2.getStartDate().compareTo(o1.getStartDate()); } return dateCom; } }); // 再次校验请求号 if(StringUtils.isNotBlank(clientReqId) || StringUtils.isNotBlank(clientSymbol) ) { if(StringUtils.isBlank(clientReqId)||StringUtils.isBlank(clientSymbol)) { logger.info("请求参数有误,requestParmsMap:{}", JSON.toJSONString(requestParmsMap)); throw new RuntimeException("请求参数有误"); } List<EngineAchieveRequest> engineAchieveRequestList = this.engineAchieveRequestMapper.findByClientId(null, clientReqId, clientSymbol); if(CollectionUtils.isNotEmpty(engineAchieveRequestList)) { logger.info("请求参数有误,客户请求号有重复,requestParmsMap:{}", JSON.toJSONString(requestParmsMap)); throw new RuntimeException("请求参数有误:客户请求号有重复"); } } EngineAchieveRequest engineAchieveRequest = new EngineAchieveRequest(); engineAchieveRequest.setRequestId(CommissionUtil.buildgoodbusinessId("Req")); engineAchieveRequest.setCaltype(0); engineAchieveRequest.setStatus(3); engineAchieveRequest.setMessage("初始化"); engineAchieveRequest.setClientRequestId(clientReqId); engineAchieveRequest.setClientSymbol(clientSymbol); this.engineAchieveRequestMapper.insertSelective(engineAchieveRequest); // 再次校验请求号,防止并发重复的问题 if(StringUtils.isNotBlank(clientReqId) || StringUtils.isNotBlank(clientSymbol) ) { if(StringUtils.isBlank(clientReqId)||StringUtils.isBlank(clientSymbol)) { logger.info("请求参数有误,requestParmsMap:{}", JSON.toJSONString(requestParmsMap)); throw new RuntimeException("请求参数有误"); } List<EngineAchieveRequest> engineAchieveRequestList = this.engineAchieveRequestMapper.findByClientId(null, clientReqId, clientSymbol); if(CollectionUtils.isNotEmpty(engineAchieveRequestList)&&engineAchieveRequestList.size()>1) { logger.info("请求参数有误,客户请求号有重复,requestParmsMap:{}", JSON.toJSONString(requestParmsMap)); throw new RuntimeException("请求参数有误:客户请求号有重复"); } }

这一大坨是啥,

// 异步执行 final String finalRequestId = engineAchieveRequest.getRequestId(); final Long finalEngineAchieveRequestId = engineAchieveRequest.getId(); final String finalClientRequestId = clientReqId; final String finalClientSymbol = clientSymbol; final String finalAgentTimeCheckEnable = agentTimeCheckEnable; final List<Enginegoodbusiness> finalEnginegoodbusinesss = enginegoodbusinesss; final String finalmyprojectKey = myprojectKey; final String finalIsCalYesterday = isCalYesterday; final Map<String, String> reqMap = new HashMap<String, String>(); reqMap.put("myprojectKey", finalmyprojectKey); reqMap.put("isCalYesterday", finalIsCalYesterday); enginegoodbusinessServiceExecutor.execute(() -> { StringBuilder sb = new StringBuilder(); sb.append("1.enginegoodbusinessServiceExecutor-finalmyprojectKey=" finalmyprojectKey " "); sb.append("1.enginegoodbusinessServiceExecutor-finalRequestId=" finalRequestId " "); sb.append("1.enginegoodbusinessServiceExecutor-finalClientRequestId=" finalClientRequestId " "); EngineAchieveRequest preEngineAchieveRequest = this.engineAchieveRequestMapper.selectByPrimaryKey(finalEngineAchieveRequestId); preEngineAchieveRequest.setMessage("运行中"); preEngineAchieveRequest.setStatus(2); this.engineAchieveRequestMapper.updateByPrimaryKeySelective(preEngineAchieveRequest); Enginegoodbusiness enginegoodbusinessNow = null; try { // 成功 Map<String, EngineAchieveRequestResult> sucessAchieveRequestResults = new HashMap<>(); // 失败 Map<String, EngineAchieveRequestResult> failAchieveRequestResults = new HashMap<>(); // 一次执行一条规则内容 for(Enginegoodbusiness enginegoodbusiness : finalEnginegoodbusinesss) { sb.append("2.enginegoodbusinessServiceExecutor-enginegoodbusiness=" enginegoodbusiness.getId() "," enginegoodbusiness.getgoodbusinessName() " "); try { EngineAchieveRequest eAchieveRequest = new EngineAchieveRequest(); eAchieveRequest.setRequestId(finalRequestId); eAchieveRequest.setCaltype(0); eAchieveRequest.setStatus(2); eAchieveRequest.setMessage("运行中"); eAchieveRequest.setClientRequestId(finalClientRequestId); eAchieveRequest.setClientSymbol(finalClientSymbol); eAchieveRequest.setgoodbusinessId(enginegoodbusiness.getId()); this.engineAchieveRequestMapper.insertSelective(eAchieveRequest); enginegoodbusinessNow = enginegoodbusiness; String batchNo = null; // 方案为“3:审核通过”、“5:生效”为可计算 if(enginegoodbusiness!=null && (enginegoodbusiness.getStatus().intValue()==3 || enginegoodbusiness.getStatus().intValue()==5)) { // 转换对象 ClassUtil<EnginegoodbusinessVo> classUtil = new ClassUtil<EnginegoodbusinessVo>(EnginegoodbusinessVo.class); EnginegoodbusinessVo enginegoodbusinessVo = classUtil.changeTo(enginegoodbusiness); // 根据规则配置,组建数据对象EngineFactVo List<EngineFactVo> engineFactVos = goodbusinessEngineHandler.buildEngineFactVos(enginegoodbusinessVo, reqMap,sb); // 开始处理数据 if(CollectionUtils.isNotEmpty(engineFactVos)) { logger.info("EngineFact数据库查询,List<EngineFactVo> engineFactVos,Size:{},enginegoodbusinessVo:{},reqMap:{}", String.valueOf(engineFactVos.size()), enginegoodbusinessVo, reqMap); List<EngineFactVo> dualEngineFactVos = new ArrayList<EngineFactVo>(); // 需分批处理数据,防止内存使用过大 int engineFactVosIndex = 0; for (EngineFactVo engineFactVo : engineFactVos) { engineFactVosIndex ; dualEngineFactVos.add(engineFactVo); if(engineFactVosIndex%this.goodbusinessEngineHandler.Batch_Engine_Cal_Size==0||engineFactVos.size()==engineFactVosIndex) { List<EnginegoodbusinessVo> egoodbusinessVos = new ArrayList<EnginegoodbusinessVo>(); egoodbusinessVos.add(enginegoodbusinessVo); // 加载引擎规则 KieContainer kieContainer = goodbusinessEngineHandler.getKieContainer(egoodbusinessVos); goodbusinessEngineHandler.factExcute(kieContainer, dualEngineFactVos); dualEngineFactVos.clear(); } sb.append("4.2-for.end engineFactVo.getHitgoodbusinessMessage().getEnginegoodbusinessid()=" engineFactVo.getHitgoodbusinessMessage().getEnginegoodbusinessid() " "); } sb.append("4.3-for循环engineFactVos "); int mathSize = 0; for(EngineFactVo engineFactVo : engineFactVos) { // 设置其时间顺序是否满足四个时间依次递增关系 engineFactVo.getgoodbusinessOtherMessage().setAgentTimeCheckEnable(finalAgentTimeCheckEnable.trim()); // 计算匹配的数目 if(engineFactVo.getHitgoodbusinessMessage()!=null&&StringUtils.isNotBlank(engineFactVo.getHitgoodbusinessMessage().getHitgoodbusinessExpressionPosition())) { mathSize ; } } // 数据处理引擎的结果 String batchRequestId = String.valueOf(finalRequestId); DealEngineFactDataResult dualResult = this.dealEngineFactData(enginegoodbusiness, engineFactVos, null, null, batchRequestId,sb); batchNo = dualResult.getBatchNo(); // 处理结果信息 List<EngineAchieveRequestResult> dualAchieveRequestResults = dualResult.getDualAchieveRequestResults(); if(CollectionUtils.isNotEmpty(dualAchieveRequestResults)) { for(EngineAchieveRequestResult engineAchieveRequestResult : dualAchieveRequestResults) { if(engineAchieveRequestResult!=null && engineAchieveRequestResult.getStatus()!=null && StringUtils.isNotBlank(engineAchieveRequestResult.getPk1())) { if(engineAchieveRequestResult.getStatus().intValue()==1) { // 处理成功 sucessAchieveRequestResults.put(engineAchieveRequestResult.getPksKey(), engineAchieveRequestResult); failAchieveRequestResults.remove(engineAchieveRequestResult.getPksKey()); }else { // 处理失败 if(!sucessAchieveRequestResults.keySet().contains(engineAchieveRequestResult.getPksKey())) { failAchieveRequestResults.put(engineAchieveRequestResult.getPksKey(), engineAchieveRequestResult); } } } else { } } } else { } // 计算报表 goodbusinessReportTypeEnum rrtEnum = goodbusinessReportTypeEnum.getByKey(enginegoodbusiness.getgoodbusinessDataType()); if(goodbusinessReportTypeEnum.Agent.equals(rrtEnum)) { this.agentCommisionToReportService.ToReport(batchNo, reqMap.get("myprojectKey")); } } else { } } else { } eAchieveRequest.setMessage("成功"); eAchieveRequest.setStatus(1); eAchieveRequest.setCalcommissionbatchno(batchNo); this.engineAchieveRequestMapper.updateByPrimaryKeySelective(eAchieveRequest); } catch (Exception e) { logger.error("计算处理失败,exception:{}", e); } }

被纠结死

List<EngineAchieveRequest> newEegAchieveRequests = this.engineAchieveRequestMapper.findByReqId(finalRequestId); if(CollectionUtils.isNotEmpty(newEegAchieveRequests)&&newEegAchieveRequests.size()>1) { this.engineAchieveRequestMapper.deleteByPrimaryKey(preEngineAchieveRequest.getId()); } if(MapUtils.isNotEmpty(sucessAchieveRequestResults) && CollectionUtils.isNotEmpty(sucessAchieveRequestResults.values())) { List<EngineAchieveRequestResult> sucessResults = new ArrayList<>(); sucessResults.addAll(sucessAchieveRequestResults.values()); this.engineAchieveRequestResultMapper.insertBatch(sucessResults); } if(MapUtils.isNotEmpty(failAchieveRequestResults) && CollectionUtils.isNotEmpty(failAchieveRequestResults.values())) { List<EngineAchieveRequestResult> failResults = new ArrayList<>(); failResults.addAll(failAchieveRequestResults.values()); this.engineAchieveRequestResultMapper.insertBatch(failResults); } sb.append("6.2 计算结束finish "); logger.info("计算结束,enginegoodbusinessServiceExecutor.execute(),finalEnginegoodbusinesss:{},reqMap:{}", JSON.toJSONString(finalEnginegoodbusinesss), JSON.toJSONString(reqMap)); } catch (Exception e) { sb.append("7.1 计算异常" e.getMessage() " "); List<EngineAchieveRequest> errAchieveRequests = this.engineAchieveRequestMapper.findByReqId(finalRequestId); String errMsg = e.getMessage(); if(errMsg.length()>200) { errMsg = errMsg.substring(0, 200); } if(CollectionUtils.isNotEmpty(errAchieveRequests)) { for(EngineAchieveRequest errAchieveRequest : errAchieveRequests) { errAchieveRequest.setMessage(errMsg); errAchieveRequest.setStatus(0); this.engineAchieveRequestMapper.updateByPrimaryKeySelective(errAchieveRequest); } } if(CollectionUtils.isNotEmpty(errAchieveRequests)&&errAchieveRequests.size()>1) { this.engineAchieveRequestMapper.deleteByPrimaryKey(preEngineAchieveRequest.getId()); } logger.error("计算处理失败,enginegoodbusiness:{},exception:{}", enginegoodbusinessNow, e); } finally { logger.info(sb.toString()); } }); logger.info("佣金计算请求成功calCommonCommission(),requestParmsMap:{}", JSON.toJSONString(requestParmsMap)); Result result=new Result(); result.setStatus(StatusCode.SUCCESS); result.setMessage("佣金计算请求成功"); result.setData(engineAchieveRequest.getRequestId()); return result; //完。大功告成。 }

展示 完毕

这是我在公司接触的真实的代码,列举几点问题

  • 标志位以及全局变量太多
  • 逻辑不够简单
  • 函数设计不合理
  • 可读性差(可能只有自己看得懂)
  • 重复判断没有注释

作为一名合格的程序员,这样的代码不应出现在我们的生产上,严格的项目经理、架构师一定会让你重构,我们要写出规范有自己风格的代码把你们遇到的奇葩代码也评论出来吧

公众号:程序零世界(C0W1024) 获取更多文章资料

,