当前位置: 首页 > news >正文

专业的外贸网站建设公司余姚网

专业的外贸网站建设公司,余姚网,肇庆seo排名外包,茂名手机网站建设公司在写代码业务逻辑的时候,有时候需求稍微变化一下都让代码变的很麻烦,如果只在现有代码基础上硬改,可能会让可读性降低,本文通过一个例子来演示字符串拼接的变化。 一开始的业务逻辑比较简单,是固定条件加一个需要判断…

在写代码业务逻辑的时候,有时候需求稍微变化一下都让代码变的很麻烦,如果只在现有代码基础上硬改,可能会让可读性降低,本文通过一个例子来演示字符串拼接的变化。

一开始的业务逻辑比较简单,是固定条件加一个需要判断再追加的条件:

List<String> currentUserDeptIds = getCurrentUserDeptIds();
return "forcetender = 1 " +(currentUserDeptIds.isEmpty() ? "" : " and cdeptid in (" + String.join(",", currentUserDeptIds) + ")");

后来连 forcetender = 1都要变成可选条件时,这里简单的字符串拼接就不可行了,例如改成下面:

String forceTenderPublish = Parameter.get("FORCE_TENDER_PUBLISH");
return ("1".equals(forceTenderPublish) ? "" : "forcetender = 1 ") +(currentUserDeptIds.isEmpty() ? "" : " and cdeptid in (" + String.join(",", currentUserDeptIds) + ")");

上面这种写法中如果 "1".equals(forceTenderPublish) 不满足,前面就是 "",此时如果后面条件满足,拼接时会额外带上 and 导致语法错误,如果不嫌麻烦把 and 改成条件判断就变成了:

String forceTenderPublish = Parameter.get("FORCE_TENDER_PUBLISH");
return ("1".equals(forceTenderPublish) ? "" : "forcetender = 1 ") +(currentUserDeptIds.isEmpty() ? "" : ("1".equals(forceTenderPublish) ? "" : "and ") + " cdeptid in (" + String.join(",", currentUserDeptIds) + ")");

这样倒是能实现功能了,但是不易于阅读,看着就很乱。

我们来看看GitHub Copilot会如何解决上面的变化。

Ask:

getDefaultCondition方法(基于上面第一次改动)最后的return有问题,当前面一个为空时,后面不需要有 and 前缀,请修改正确。

GitHub Copilot:

您的观察是正确的。在当前的实现中,如果forceTenderPublish不等于"1",那么返回的字符串将以" and “开始,这可能会导致SQL查询错误。我们可以通过将所有条件添加到一个列表中,然后使用String.join方法来解决这个问题。这样,只有当列表中有多个元素时,” and "才会被插入。

以下是修改后的getDefaultCondition方法:

String forceTenderPublish = Parameter.get("FORCE_TENDER_PUBLISH");List<String> conditions = new ArrayList<>();
if ("1".equals(forceTenderPublish)) {conditions.add("forcetender = 1");
}List<String> currentUserDeptIds = getCurrentUserDeptIds();
if (!currentUserDeptIds.isEmpty()) {conditions.add("cdeptid in (" + String.join(",", currentUserDeptIds) + ")");
}return String.join(" and ", conditions);

在这个修改后的版本中,我们首先创建一个空的conditions列表。然后,我们检查forceTenderPublish和currentUserDeptIds,如果它们满足条件,我们就将相应的条件添加到列表中。最后,我们使用String.join方法将所有条件连接起来,每个条件之间用" and “分隔。这样,只有当有多个条件时,” and "才会出现。

按照上面的方案,不仅方便我们增加更多的类似条件,而且可读性也大大提高了,遇到类似变化的时候,不能只实现功能,还要考虑易读性和后续可能的变化。

http://www.yayakq.cn/news/18856/

相关文章:

  • 网站做外链品牌排行榜哪个网站更权威
  • 崇川区城乡建设局网站龙华、宝安最新通告
  • 软件开发文档的重要性廊坊视频优化推广
  • 网站十大品牌成都自助建站软件
  • 村官 举措 村级网站建设怎么提交公司网站
  • 建设网站的颜色网站兼容浏览器服务
  • 网站建设 大纲wordpress 普通文本 quot
  • 网站不备案可以使用么南昌购物网站开发
  • 福州专业网站建设公司深圳做网站那家好
  • wordpress 设置站点地址?]后台的网站可以备案吗
  • php 公司网站源码wordpress media
  • 百度收录多的是哪些网站755权限 wordpress
  • 电子商务网站建设平台室内设计者联盟官网
  • 正能量不良网站推荐2020合肥本地网站
  • 教育网站制作下载常州酒店网站建设
  • 苏州做儿童场馆门票包票的网站商业规划设计公司
  • 微信开发者工具快捷键怎样优化网络速度
  • 关于动漫的网站建设宜宾市做网站多少钱
  • 网站标题修改微信小程序制作平台哪个好
  • 网站制作需要什么知识4399在线观看免费韩国
  • 网站开发报价明细家电网站建设
  • 东莞网站推广公司黄页滑县网站建设价格
  • 提供网站建设工具的品牌有哪些营销型网站建设申请域名时公司类型的域名后缀一般是?
  • 网站登陆口提交网站泸州市住房和城乡建设厅官方网站
  • h5自响应式网站模版wordpress点餐
  • seo网站推广专员直接可以秒玩的游戏
  • 哪个网站可以做签证在线ps修图编辑器
  • 网站多种语言是怎么做的如何用dw做网站框架
  • 外贸建设网站制作免费域名注册发卡网
  • 网站建设征求意见稿pinfinity wordpress主题