例子如下:
if (folderInfoRecord.getValueRequired()
&& ((!folderInfoData.getInfoType().equals(InfoType.NUMERIC)
&& !folderInfoData.getInfoType().equals(InfoType.DATE)
&& !folderInfoData.getInfoType().equals(InfoType.CHOOSE)
&& StringUtils.isBlank(folderInfoRecord.getInfoValue(), true))
|| (folderInfoData.getInfoType().equals(InfoType.NUMERIC)
&& folderInfoRecord.getInfoValueNumeric() == null)
|| (folderInfoData.getInfoType().equals(InfoType.DATE)
&& folderInfoRecord.getInfoValueDateTime() == null)
|| (folderInfoData.getInfoType().equals(InfoType.CHOOSE)
&& folderInfoData.getSelectedInfoRole() == null))) {
showNotification(pageResourceBundle.getText("JS_ALERT_FIELD_REQUIRED"));
return;
}
谁能告诉我如何优化这个 if 条件?
最佳答案
关于优化,如果您指的是运行时复杂性,那么我无话可说,因为我对每种方法的作用一无所知。 我强烈建议不要像您展示的那样使用意大利面条代码。对于令人困惑的 NOT 和 OR,我会避免在 if 语句中计算 .equals 或 .isBlank。在外面有一些外部 boolean 标志,比如
bool folderDataisNumeric = folderInfoData.getInfoType().equals(InfoType.NUMERIC)
然后简单地使用标志 !folderDataisNumeric 将使代码更易于阅读。
无论如何,我的两分钱。
关于java - 如何在 if 条件下重构一个复杂的表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21274858/