if (CURRENT_USER_TAG.equals(userId) || userId == null) { userId = loginFacade.getCurrentUser().getUserName(); }优化这段代码

时间: 2024-02-17 22:00:19 浏览: 24
这段代码可以优化为: ```java if (userId == null || CURRENT_USER_TAG.equals(userId)) { userId = loginFacade.getCurrentUser().getUserName(); } ``` 首先判断 `userId` 是否为空,如果为空则执行后面的语句;如果不为空,则判断 `userId` 是否等于 `CURRENT_USER_TAG`,如果相等则执行后面的语句。这样代码更加简洁易懂。
相关问题

String operateType = ""; if (null == userEdu.getId() || "".equals(userEdu.getId())) { if(StringUtil.isEmpty(userId) || CURRENT_USER_TAG.equals(userId)){ userId = loginFacade.getCurrentUser().getUserName(); } userEdu.setId(IdGen.getId()); userEdu.setCreateTime(new Date()); userEdu.setUserId(userId); userEduMapper.insert(userEdu); operateType = OPERATE_TYPE_INSERT_LOG; } else { userEdu.setUpdateTime(new Date()); userEduMapper.updateById(userEdu); operateType = OPERATE_TYPE_UPDATE_LOG; 怎么优化这段代码 }

这段代码可以进行如下优化: 1. 将重复的代码块提取成方法,避免重复代码。 2. 在进行 if 判断时,可以使用 StringUtils.isEmpty() 方法代替 null == ... || "".equals(...)。 3. 将 userId 的获取逻辑也提取成方法,避免重复代码。 4. 将操作类型 operateType 的赋值语句提取出来,避免重复代码。 优化后的代码如下所示: ```java public void saveUserEdu(UserEdu userEdu, String userId) { if (StringUtils.isEmpty(userEdu.getId())) { userEdu.setId(IdGen.getId()); userEdu.setCreateTime(new Date()); userEdu.setUserId(getUserId(userId)); userEduMapper.insert(userEdu); logOperate(OPERATE_TYPE_INSERT_LOG); } else { userEdu.setUpdateTime(new Date()); userEduMapper.updateById(userEdu); logOperate(OPERATE_TYPE_UPDATE_LOG); } } private String getUserId(String userId) { if (StringUtils.isEmpty(userId) || CURRENT_USER_TAG.equals(userId)) { return loginFacade.getCurrentUser().getUserName(); } return userId; } private void logOperate(String operateType) { // 记录操作日志 } ```

if((valueSet(chargeSettingValueStr) && (Constant.EV_CONNECTION_STATUS_CHARGING.equals(evConnectionStatus) || Constant.EV_CONNECTION_STATUS_DISCHARGE.equals(evConnectionStatus))) && (valueSet(dischargeSettingValueStr) && (Constant.EV_CONNECTION_STATUS_CHARGING_DISCHARGE.equals(evConnectionStatus) || Constant.EV_CONNECTION_STATUS_DISCHARGE.equals(evConnectionStatus))) && (!valueSet(chargeSettingValueStr) && !valueSet(dischargeSettingValueStr))) {优化这个代码

这段代码比较复杂,可以考虑进行代码重构,以提高可读性和可维护性。以下是一些可能的优化方法: 1. 提取常量 将常用的常量值提取出来,可以使代码更加可读。例如,将`Constant.EV_CONNECTION_STATUS_CHARGING`和`Constant.EV_CONNECTION_STATUS_DISCHARGE`提取为常量。 2. 简化条件语句 将条件语句简化,可以使代码更加清晰。例如,将`(Constant.EV_CONNECTION_STATUS_CHARGING.equals(evConnectionStatus) || Constant.EV_CONNECTION_STATUS_DISCHARGE.equals(evConnectionStatus))`提取为一个方法`isChargingOrDischargeStatus()`,可以让代码更加简洁。 3. 提取方法 将条件语句提取为方法,可以使代码更加模块化。例如,将`valueSet(chargeSettingValueStr)`提取为一个方法`isChargeSettingValueSet()`,将`valueSet(dischargeSettingValueStr)`提取为一个方法`isDischargeSettingValueSet()`。 综上所述,可以将原始代码重构为以下形式: ``` public boolean isValid() { boolean isChargeSettingValueSet = isChargeSettingValueSet(); boolean isDischargeSettingValueSet = isDischargeSettingValueSet(); boolean isChargingOrDischargeStatus = isChargingOrDischargeStatus(); if (isChargeSettingValueSet && isChargingOrDischargeStatus) { return true; } if (isDischargeSettingValueSet && (isChargingOrDischargeStatus || Constant.EV_CONNECTION_STATUS_DISCHARGE.equals(evConnectionStatus))) { return true; } if (!isChargeSettingValueSet && !isDischargeSettingValueSet) { return true; } return false; } private boolean isChargeSettingValueSet() { return valueSet(chargeSettingValueStr); } private boolean isDischargeSettingValueSet() { return valueSet(dischargeSettingValueStr); } private boolean isChargingOrDischargeStatus() { return Constant.EV_CONNECTION_STATUS_CHARGING.equals(evConnectionStatus) || Constant.EV_CONNECTION_STATUS_DISCHARGE.equals(evConnectionStatus); } private boolean valueSet(String value) { return value != null && !value.trim().isEmpty(); } ``` 通过重构,代码变得更加简洁,易于阅读和维护。

相关推荐

private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); if (Intent.ACTION_TIME_TICK.equals(action) || Intent.ACTION_TIME_CHANGED.equals(action) || Intent.ACTION_TIMEZONE_CHANGED.equals(action) || Intent.ACTION_LOCALE_CHANGED.equals(action)) { if (Intent.ACTION_LOCALE_CHANGED.equals(action) || Intent.ACTION_TIMEZONE_CHANGED.equals(action)) { // need to get a fresh date format mDateFormat = null; } updateClock(); } } }; public DateView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_TIME_TICK); filter.addAction(Intent.ACTION_TIME_CHANGED); filter.addAction(Intent.ACTION_TIMEZONE_CHANGED); filter.addAction(Intent.ACTION_LOCALE_CHANGED); mContext.registerReceiver(mIntentReceiver, filter, null, null); updateClock(); } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); mDateFormat = null; // reload the locale next time mContext.unregisterReceiver(mIntentReceiver); } protected void updateClock() { if (mDateFormat == null) { final String dateFormat = getContext().getString(R.string.system_ui_date_pattern); final Locale l = Locale.getDefault(); final String fmt = ICU.getBestDateTimePattern(dateFormat, l.toString()); mDateFormat = new SimpleDateFormat(fmt, l); } mCurrentTime.setTime(System.currentTimeMillis()); final String text = mDateFormat.format(mCurrentTime); if (!text.equals(mLastText)) { setText(text); mLastText = text; } } }

public static String wuxing(String gzYear, String gzMonth, String gzDay, String gzTime) { // 天干年 String gYear = gzYear.substring(0, 1); if ("甲".equals(gYear) || "乙".equals(gYear)) { gYear = "木"; } if ("丙".equals(gYear) || "丁".equals(gYear)) { gYear = "火"; } if ("戊".equals(gYear) || "己".equals(gYear)) { gYear = "土"; } if ("庚".equals(gYear) || "辛".equals(gYear)) { gYear = "金"; } if ("壬".equals(gYear) || "癸".equals(gYear)) { gYear = "水"; } // 天干月 String gMonth = gzMonth.substring(0, 1); if ("甲".equals(gMonth) || "乙".equals(gMonth)) { gMonth = "木"; } if ("丙".equals(gMonth) || "丁".equals(gMonth)) { gMonth = "火"; } if ("戊".equals(gMonth) || "己".equals(gMonth)) { gMonth = "土"; } if ("庚".equals(gMonth) || "辛".equals(gMonth)) { gMonth = "金"; } if ("壬".equals(gMonth) || "癸".equals(gMonth)) { gMonth = "水"; } // 天干日 String gDay = gzDay.substring(0, 1); if ("甲".equals(gDay) || "乙".equals(gDay)) { gDay = "木"; } if ("丙".equals(gDay) || "丁".equals(gDay)) { gDay = "火"; } if ("戊".equals(gDay) || "己".equals(gDay)) { gDay = "土"; } if ("庚".equals(gDay) || "辛".equals(gDay)) { gDay = "金"; } if ("壬".equals(gDay) || "癸".equals(gDay)) { gDay = "水"; } // 天干时 String gTime = gzTime.substring(0, 1); if ("甲".equals(gTime) || "乙".equals(gTime)) { gTime = "木"; } if ("丙".equals(gTime) || "丁".equals(gTime)) { gTime = "火"; } if ("戊".equals(gTime) || "己".equals(gTime)) { gTime = "土"; } if ("庚".equals(gTime) || "辛".equals(gTime)) { gTime = "金"; } if ("壬".equals(gTime) || "癸".equals(gTime)) { gTime = "水"; }

PoiSearchInfo pi = null; String result = intent.getStringExtra("object"); Log.d(TAG, "json: " + result); JSONObject res = new JSONObject(result); JSONObject object = res.getJSONObject("object"); query = intent.getStringExtra(KEY_RULE_RAW); String api = object.getString("api"); String action1 = object.getString("action"); if (API_SEARCH_NEAR_BY.equals(api)) { pi = new PoiSearchInfo(Constant.MAP_SEARCH_NEARBY, 5000, false, null, object.getString("keyword")); } else if (API_SEARCH_IN_CITY.equals(api)) { pi = new PoiSearchInfo(Constant.MAP_SEARCH_CITY, 5000, false, null, object.getString("keyword")); } else if (API_SEARCH_IN_CITY.equals(action1)) { pi = new PoiSearchInfo(Constant.MAP_SEARCH_CITY, 5000, false, null, object.getString("keyword")); } else if (API_MAP_SETTING.equals(api) || API_MAP_QUERY.equals(api)) { String action = object.getString("action"); Activity tempActivity = App.getMultiRoundActivity(); if (tempActivity != null && tempActivity instanceof MapBaseActivity) { MapBaseActivity mapActivity = ((MapBaseActivity) tempActivity); if (mapActivity.isSupportAction(action)) { mapActivity.doAction(action); if (API_MAP_SETTING.equals(api)) { if ("end_navigation".equals(action)) { displayText = "导航结束"; } else { ttsText = getOkAnswer(); } } else if (API_MAP_QUERY.equals(api)) { displayText = "查询中..."; } } else { ttsText = "当前版本暂不支持此功能"; } } else { ttsText = "仅地图页面支持此功能"; } } 这段代码中的String action1 = object.getString("action");只有在某个fragment中查询“添加加油站为途经点”命令后,才会返回,我这样写的话,我首次进入搜索POI页面没反应,该怎么修改?

优化这段代码if (ResMeta.PROTOCOL_HTTPS.equals(token.getLoginProtocol()) || ResMeta.PROTOCOL_HTTP.equals(token.getLoginProtocol())) { ssoTicket.setHostDomainName(token.getTargetIp()); ssoTicket.setWebappUrl(token.getLoginProtocol() + "://" + token.getTargetIp()); ssoTicket.setAgreementType(token.getLoginProtocol()); if (!this.fillIssuerInfo(ssoTicket, token.getIssuerId(), token.getIssuerToolId(), token.getResType(), sid)) { String err = "加载应用发布错误"; rv.setDetail(err); rv.setStatus(DataResult.STA_SSO_REGISTER_TICKET_ERR); logger.error(err); return null; } } else if (ResMeta.RESTYPE_CSAPP.equals(token.getResType())){ if (!this.fillIssuerInfo(ssoTicket, token.getIssuerId(), token.getIssuerToolId(), token.getResType(), sid)) { String err = "加载应用发布错误"; rv.setDetail(err); rv.setStatus(DataResult.STA_SSO_REGISTER_TICKET_ERR); logger.error(err); return null; } } else if (ResMeta.PROTOCOL_RDP.equals(token.getLoginProtocol())) { if (ssoAcc != null && ssoAcc.getWinAccType() == AccMeta.WIN_ACC_DOMAIN_TYPE) { this.fillHostDomain(ssoAcc, ssoTicket, token.getAccName()); } else if (resInfo.getHostName() != null && resInfo.getHostName().length() > 0) { ssoTicket.setAcc(resInfo.getHostName() + "\\" + ssoTicket.getAcc()); } } else if (ResMeta.PROTOCOL_SSH2.equals(token.getLoginProtocol()) || ResMeta.PROTOCOL_SSH1.equals(token.getLoginProtocol()) || ResMeta.PROTOCOL_TELNET.equals(token.getLoginProtocol())) { CMDSSOTicket cmdTicket = (CMDSSOTicket) ssoTicket; /* 设置提权(原5.0的扩展策略)如果存在工单号 按工单处理 规则授权暂时不支持设置提权 */ if (token.getWorkId() != null && token.getWorkId().length() > 0) { try { SSOWorkOrderAuthz authz = new SSOWorkOrderAuthz(); authz.setWorkOrderId(token.getWorkId()); authz.setResId(token.getResId()); int suPermission = ssoWorkOrderRepository.findWorkOrderAuthcSuPermission(authz); if (SSORegisterMeta.SU_PERMISSION_YES_VALUE == suPermission && ResMeta.SU_PRIVILEGE_YES_VALUE == resInfo.getSuPrivilege()) { cmdTicket.setSu_cmd(resInfo.getSuCmd()); cmdTicket.setSu_pwd(this.getPasswd(resInfo.getId(), resInfo.getSuManagerAcc())); cmdTicket.setSu_pwd_prompt(resInfo.getSuPwdPrompt()); } } catch (Exception e) { } } else if (token.getAuthzId() != null && token.getAuthzId().length() > 0) { try { int suPermission = ssoResroleRepository.findResroleAuthcSuPermission(token.getAuthzId()); if (SSORegisterMeta.SU_PERMISSION_YES_VALUE == suPermission && ResMeta.SU_PRIVILEGE_YES_VALUE == resInfo.getSuPrivilege()) { cmdTicket.setSu_cmd(resInfo.getSuCmd()); cmdTicket.setSu_pwd(this.getPasswd(resInfo.getId(), resInfo.getSuManagerAcc())); cmdTicket.setSu_pwd_prompt(resInfo.getSuPwdPrompt()); } } catch (Exception e) { } }

最新推荐

recommend-type

Java中Object.equals和String.equals的区别详解

主要给大家介绍了Java中Object.equals和String.equals的区别,文中通过一个小示例让大家轻松的明白这两者的区别,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
recommend-type

计算机专业毕业设计范例845篇jsp2118基于Web停车场管理系统的设计与实现_Servlet_MySql演示录像.rar

博主给大家详细整理了计算机毕业设计最新项目,对项目有任何疑问(部署跟文档),都可以问博主哦~ 一、JavaWeb管理系统毕设项目【计算机毕设选题】计算机毕业设计选题,500个热门选题推荐,更多作品展示 计算机毕业设计|PHP毕业设计|JSP毕业程序设计|Android毕业设计|Python设计论文|微信小程序设计
recommend-type

Windows 10 平台 FFmpeg 开发环境搭建 博客资源

【FFmpeg】Windows 10 平台 FFmpeg 开发环境搭建 ④ ( FFmpeg 开发库内容说明 | 创建并配置 FFmpeg 项目 | 拷贝 DLL 动态库到 SysWOW64 目录 ) https://hanshuliang.blog.csdn.net/article/details/139172564 博客资源 一、FFmpeg 开发库 1、FFmpeg 开发库编译 2、FFmpeg 开发库内容说明 二、创建并配置 FFmpeg 项目 1、拷贝 dll 动态库到 C:\Windows\SysWOW64 目录 - 必须操作 特别关注 2、创建 Qt 项目 - C 语言程序 3、配置 FFmpeg 开发库 - C 语言项目 4、创建并配置 FFmpeg 开发库 - C++ 项目
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

深入了解MATLAB开根号的最新研究和应用:获取开根号领域的最新动态

![matlab开根号](https://www.mathworks.com/discovery/image-segmentation/_jcr_content/mainParsys3/discoverysubsection_1185333930/mainParsys3/image_copy.adapt.full.medium.jpg/1712813808277.jpg) # 1. MATLAB开根号的理论基础 开根号运算在数学和科学计算中无处不在。在MATLAB中,开根号可以通过多种函数实现,包括`sqrt()`和`nthroot()`。`sqrt()`函数用于计算正实数的平方根,而`nt
recommend-type

react的函数组件的使用

React 的函数组件是一种简单的组件类型,用于定义无状态或者只读组件。 它们通常接受一个 props 对象作为参数并返回一个 React 元素。 函数组件的优点是代码简洁、易于测试和重用,并且它们使 React 应用程序的性能更加出色。 您可以使用函数组件来呈现简单的 UI 组件,例如按钮、菜单、标签或其他部件。 您还可以将它们与 React 中的其他组件类型(如类组件或 Hooks)结合使用,以实现更复杂的 UI 交互和功能。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

解决MATLAB开根号常见问题:提供开根号运算的解决方案

![解决MATLAB开根号常见问题:提供开根号运算的解决方案](https://img-blog.csdnimg.cn/d939d1781acc404d8c826e8af207e68f.png) # 1. MATLAB开根号运算基础** MATLAB开根号运算用于计算一个数的平方根。其语法为: ``` y = sqrt(x) ``` 其中: * `x`:要开根号的数或数组 * `y`:开根号的结果 开根号运算的输入可以是实数、复数、矩阵或数组。对于实数,开根号运算返回一个非负实数。对于复数,开根号运算返回一个复数。对于矩阵或数组,开根号运算逐元素执行,对每个元素进行开根号运算。 #