这是我的代码,我需要知道有没有办法减少程序中的行数。
因为if语句中涉及到方法调用,所以我不能使用枚举来替换它们。
public class AgreementQueryBuilder { @SuppressWarnings("unchecked") public static String searchQueryBuilder(FetchAgreementsModel agreementsModel, @SuppressWarnings("rawtypes") List obj) { StringBuilder selectQuery = new StringBuilder( "select *,e.id as agreementid from eglams_agreement e left outer join eglams_rentincrementtype t on e.rent_increment_method=t.id where"); // if statement to check the arguments and build the where criteria if (agreementsModel.getAgreementId() != null || agreementsModel.getAgreementNumber() != null || agreementsModel.getStatus() != null || agreementsModel.getTenantId() != null || (agreementsModel.getFromDate() != null && agreementsModel.getToDate() != null) || agreementsModel.getTenderNumber() != null || agreementsModel.getTinNumber() != null || agreementsModel.getTradeLicense_number() != null) return null; boolean isAllFieldsNull = true; if (agreementsModel.getAgreementId() != null) { if (isAllFieldsNull == true) { selectQuery.append(" e.id=?"); isAllFieldsNull = false; obj.add(agreementsModel.getAgreementId()); } } if (agreementsModel.getAgreementNumber() != null) { if (isAllFieldsNull == true) { selectQuery.append(" e.agreement_number=?"); isAllFieldsNull = false; } else selectQuery.append(" and e.agreement_number=?"); obj.add(agreementsModel.getAgreementNumber()); } if (agreementsModel.getStatus() != null) { if (isAllFieldsNull == true) { selectQuery.append(" e.status=?"); isAllFieldsNull = false; } else selectQuery.append(" and e.status=?"); obj.add(agreementsModel.getStatus()); } if (agreementsModel.getTenantId() != null) { if (isAllFieldsNull == true) { selectQuery.append(" e.tenant_id=?"); isAllFieldsNull = false; } else selectQuery.append(" and e.tenant_id=?"); obj.add(agreementsModel.getTenantId()); } if (agreementsModel.getTenderNumber() != null) { if (isAllFieldsNull == true) { selectQuery.append(" e.tender_number=?"); isAllFieldsNull = false; } else selectQuery.append(" and e.tender_number=?"); obj.add(agreementsModel.getTenderNumber()); } if (agreementsModel.getTinNumber() != null) { if (isAllFieldsNull == true) { selectQuery.append(" e.tin_number=?"); isAllFieldsNull = false; } else selectQuery.append(" and e.tin_number=?"); obj.add(agreementsModel.getTinNumber()); } if (agreementsModel.getTradeLicense_number() != null) { if (isAllFieldsNull == true) { selectQuery.append(" e.TradeLicense_number=?"); isAllFieldsNull = false; } else selectQuery.append(" and e.TradeLicense_number=?"); obj.add(agreementsModel.getTradeLicense_number()); } if (agreementsModel.getFromDate() != null) { if (agreementsModel.getToDate() != null) { if (isAllFieldsNull == true) { selectQuery.append(" t.FromDate=?"); isAllFieldsNull = false; } else selectQuery.append(" and t.FromDate=?"); obj.add(agreementsModel.getFromDate()); selectQuery.append(" and t.ToDate=?"); obj.add(agreementsModel.getToDate()); } } System.err.println(selectQuery); return selectQuery.toString(); } }
查看您的代码:
if (agreementsModel.getAgreementId() != null || ... )
return null;
因此,我们知道,如果getAgreementId()!=null
,该方法将返回null,并且不会进一步执行。但在那之后你会写:
if (agreementsModel.getAgreementId() != null) {
selectQuery.append(" e.id=?");
isAllFieldsNull = false;
obj.add(agreementsModel.getAgreementId());
}
}
我们知道不能输入整个块,因为如果getAgreementId()!=null
为true,方法就会返回。
if (agreementsModel.getAgreementId() != null || agreementsModel.getAgreementNumber() != null
|| agreementsModel.getStatus() != null || agreementsModel.getTenantId() != null
|| (agreementsModel.getFromDate() != null && agreementsModel.getToDate() != null)
|| agreementsModel.getTenderNumber() != null || agreementsModel.getTinNumber() != null
|| agreementsModel.getTradeLicense_number() != null)
return null;
问题内容: 对于我的工作,我必须开发一个小型Java应用程序,该应用程序可以解析非常大的XML文件(约30万行)以选择非常具体的数据(使用),因此我试图对其进行一些优化。我想知道这两个摘要之间哪个更好: 要么 其他详情: 这些if语句在循环内的每次迭代中执行(约20k次迭代) 的是一种在利用外部函数每次迭代计算 如果将设置为,则无需测试正则表达式是否匹配 谢谢你的帮助。 问题答案: 我遵循的一条黄
我正在开发一个java程序,它接受输入的分数,给出输入的总数和平均值,但是我很难计算出如何获得当前输入的最高分数“我使用了大量嵌套的else-if语句,但必须有一种简单的方法来实现这一点,而不是键入100个else-if语句这是我的代码。我在else-if语句开始的地方添加了一条注释,以确定最高级别
我有下面的代码,有太多的if语句。 有没有其他方法可以让这更干净? 我有太多if语句的代码块。我想做得更干净。有没有其他方法可以做到这一点?
我自己找到了一种从熊猫数据帧中删除nan行的方法。给定一个包含nan值的列为的数据帧,是否有更优雅的方法来删除列中包含nan值的每一行?
问题内容: 一个简单的问题,但是Google并没有提供太多帮助。 我有一个带很多条件的if语句(必须检查10或15个常量以查看是否存在任何常量。) 而不是这样写: 有没有办法格式化它 只是想知道是否有更简单的方法来编写此代码,对您的帮助表示赞赏。 编辑 :答案非常有帮助,但是一些人要求我添加更多细节,所以我会这样做以缓解他们的好奇心。我正在创建一个日期验证类,该类需要确保在只有30天的月份中天数不