2013-07-16 1 views
0

아래의 if 문을 좀 더 간결하게 구성 할 수 있습니까?복수형을 간결하게 표현한 경우

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 
} 

이 조건을 압축하는 방법에 대한 조언을 구하려면 속기 조건부 삼항 연산자를 사용하려면 바꾸시겠습니까? :

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 있으리라 믿고있어 같은 양의 상수 일치하지 않을 수 있습니다 :

+2

여기에 'if-else' 문이 없습니다. 3 개의 독립형'if' 문이 있습니다. – zEro

답변

4

당신은 else를 사용하여 편집 다시

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를 속기 조건부로 대체한다. 3 차 연산자? : 특별히는 삼항 원하는 경우

좋아, 다음이 "수행"단계는 무엇이든, 그들은 값을 반환하는지 확인합니다. 그렇다면이 괴물을 사용할 수 있습니다 :

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

I. Do. 아니. 권하다. 그것. :-) 읽기 어렵고, 디버깅하기 어렵고, 유지하기가 어렵습니다.

+0

속기 연산자를 사용하여 컴팩트 버전을 찾고 있습니다 –

+0

속기 연산자를 사용하면 도움이 될 것 같지 않습니다. 나는 더 이상 단축 할 길이 없다. – ssindelar

+0

그건 당신의 요구 사항에 대한 논리를 작성하는 유일한 방법입니다. 더 짧게 원하는게 뭐야? – Reddy

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 
    } 
} 

약간 변형 된 @ T.J. code : p

+1

그것은 논리를 바꾼다. 원래 코드에서 "내부"-if는 둘 다 사용할 수 있습니다. – ssindelar

+0

@Casey :이 상수가 동일한 값 (대소 문자 독립적) 인 경우에만 :) – creinig

+0

"대상"이 모두 요구 사항을 볼 수는 없습니다. – Reddy

관련 문제