0

你能帮我以更紧凑的方式组织下面的 if else 语句吗?

if (abciden != null ) {
    PERFORM SSS
}

if (abciden == null
        && subject
                .equalsIgnoreCase(IOAConstants.DDD_REPORT_SUBJECT_ert)) {
    //PERFORM CCC
}

if (abciden == null
        && subject
                .equalsIgnoreCase(IOAConstants.DDD_REPORT_SUBJECT_fgt)) {
    //PERFORM BBB
}

如果用速记条件三元运算符替换,请告诉我如何压缩这些条件?:

4

2 回答 2

4

您可以使用else

if (abciden != null) {
    // PERFORM SSS
}
else {
    if (subject.equalsIgnoreCase(IOAConstants.DDD_REPORT_SUBJECT_ert)) {
        //PERFORM CCC
    }
    if (subject.equalsIgnoreCase(IOAConstants.DDD_REPORT_SUBJECT_fgt)) {
        //PERFORM BBB
    }
}

或者我假设subject不能同时匹配这两个常量:

if (abciden != null) {
    // PERFORM SSS
}
else if (subject.equalsIgnoreCase(IOAConstants.DDD_REPORT_SUBJECT_ert)) {
     //PERFORM CCC
}
else if (subject.equalsIgnoreCase(IOAConstants.DDD_REPORT_SUBJECT_fgt)) {
     //PERFORM BBB
}

重新编辑:

想用速记条件三元运算符替换 if 吗?:

好的,如果您特别想要三元,请确保无论这些“执行”步骤是什么,它们都会返回一个值。然后你可以使用这个怪物:

rv = abciden != null ? performSSS() : subject.equalsIgnoreCase(IOAConstants.DDD_REPORT_SUBJECT_ert) ? performCCC() : subject.equalsIgnoreCase(IOAConstants.DDD_REPORT_SUBJECT_fgt) ? performCCC() : didNothingValue;

我做。不是。推荐。它。:-) 难以阅读、难以调试、难以维护。

于 2013-07-16T06:43:58.840 回答
0
if (abciden != null ) {
    // PERFORM SSS
}
else {
    if (subject.equalsIgnoreCase(IOAConstants.DDD_REPORT_SUBJECT_ert)) {
        //PERFORM CCC
    }
    else if (subject.equalsIgnoreCase(IOAConstants.DDD_REPORT_SUBJECT_fgt)) {
        //PERFORM BBB
    }
}

稍微修改了@TJ 代码:p

于 2013-07-16T06:47:22.917 回答