gpt4 book ai didi

java - 降低代码的复杂性

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:57:00 26 4
gpt4 key购买 nike

我现在被一些非常奇怪的类困住了,它们的逻辑很困惑。以下是生成数据库查询的代码示例:

if(realTraffic.getPvkp() != null) {
//Admission point
if(BeanUtils.isGuidEntity(realTraffic.getPvkp())) {
findParameters +=
" and (" + staticTableName() + ".guidPvkp = '" + realTraffic.getPvkp().getGuid()
+ "' or (" + staticTableName() + ".guidPvkpOut = '" + realTraffic.getPvkp().getGuid()
+ "' and " + staticTableName() + ".requestType = " + RequestBean.TRANSIT_TYPE
+ ")";
if (companyType == CompanyBean.PP_TYPE && !realTraffic.isSkipOther()) {
// TODO - add non-formed
findParameters += " or (" + staticTableName() + ".guidPvkpOut is null "
+ " and " + staticTableName() + ".requestType = " + RequestBean.TRANSIT_TYPE
+ ")";
}
findParameters += ") ";
} else {
// Territorial department
if(BeanUtils.isGuidEntity(realTraffic.getPvkp().getTerritorialDepartment())) {
findParameters +=
" and (Pvkp.guidTerritorialDepartment = '" + realTraffic.getPvkp().getTerritorialDepartment().getGuid()
+ "' or Pvkp.guidFtsDepartment = '" + realTraffic.getPvkp().getTerritorialDepartment().getGuid()
+ "' ) ";
}
}
}

这只是我在方法中进行的大量复杂检查的一部分。问题是——如何处理这样的代码——它有很多嵌套的 if 和检查。为了使这段代码更简单和更优雅,有哪些常用方法?

UPD:我了解在编写新项目时如何避免此类代码,但如何处理现有遗留代码?

最佳答案

Uncle Bob 的书“Clean Code”是处理此类事情的一个很好的指南。在你的情况下,我会说:

  • 将字符串连接放入一个方法中(并使用 StringBuilder)
  • else { if (condition) } 转换为 else if (condition)
  • 考虑将 companyType == CompanyBean.PP_TYPE && !realTraffic.isSkipOther() 放在一个单独的方法中,因为它似乎是某种业务逻辑,这对读者来说可能更清楚如果被放入一个名为 if (isCompanySkippedOver(companyType, realTraffic)
  • 的方法中
  • 考虑将 if(realTraffic.getPvkp() != null) 反转为

    if(realTraffic.getPvkp() == null) {return;}

减少 block 缩进。

关于java - 降低代码的复杂性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17231640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com