项目经理说这种代码必须重构,我同意了,这代码是写的是有多烂!

本文讲述了作者在工作中遇到的一段糟糕的代码,代码中标志位和全局变量过多,逻辑复杂,函数设计不合理,可读性差,缺乏注释。作者强调这样的代码不应存在于生产环境中,并认为项目经理和架构师会要求进行重构,以追求更规范、更具可读性的代码。同时,作者鼓励读者分享自己遇到的奇葩代码。
摘要由CSDN通过智能技术生成

摘要

开发已过几载,阅代码无数,有人写的代码逻辑清晰,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("规则方案配置未生效
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值