Java에서 조건문을 사용하는 경우가 상당히 많습니다.
그중에서도 많이 사용하는 조건문이 if문입니다.
if문의 기본 동작은 참일 때 처리와 거짓을 때 처리로 나눠집니다.
이러한 if문의 기본 동작과 동일하게 사용할 수 있는 작성 방법이 있습니다.
삼항연산자입니다.
이번에는 삼항연산자의 사용 방법을 알아보겠습니다.
삼항연산자
if문의 기본적인 작성 방법을 먼저 보겠습니다.
if(){
처리
} else {
처리
}
if문에서 작성한 조건과 일치하면 if문 블록 내에서 처리를 합니다.
그리고 if문 조건과 일치하지 않으면 else 블록 내에서 처리를 합니다.
if문으로 간단한 조건문을 작성해 보겠습니다.
int val = 10;
int result = 0;
if(val < 20){
result = 1;
} else {
result = 2;
}
변수 val이 20보다 작으면 변수 result에는 값 1이 저장됩니다.
val이 20보다 크면 result에는 값 2가 저장됩니다.
이것을 삼항연산자로 작성해 보겠습니다.
우선 삼항연산자 기본 작성 방법은 다음과 같습니다.
조건문 ? 참일 때 값 : 거짓일 때 값;
샘플을 보겠습니다.
int val = 10;
int result = 0;
result = val < 20 ? 1 : 2;
변수 val이 20보다 작으면 변수 result에 참일 때 값인 1이 반환됩니다.
val이 20보다 크면 result에는 거짓일 때 값인 2가 반환됩니다.
삼항연산자의 작성 방법과 동작은 if ~ else 문의 형식과 동일하다고 생각하면 됩니다.
코딩이 간략해지는데 왜 소스 코드가 길어지는 if ~ else을 사용하는 것일까요?
그것은 개인 적인 차이가 크다고 생각합니다.
개인적으로 if ~ else를 전부 삼항연산자로 작성하면 가독성이 안 좋게 느껴집니다.
그리고 유지 보수를 하는 경우에 삼항연산자에 조건 또는 처리 내용이 추가되었을 경우 if ~ else로 다시 변경해야 합니다.
이 과정에서 오타로 인한 버그 또는 삼항연산자에 익숙하지 않은 다른 개발자에 의한 버그등이 발생할 수 있습니다.
즉, 필요 없는 테스트도 늘어나게 됩니다.
하지만 삼항연산자가 무조건 나쁜 것만은 아닙니다.
지금 기억이 안 나지만 5~6년 전 프로젝트에서 if ~ else로 처리를 하면 원하는 값을 반환하지 못하는 경우가 있었는데
삼항연산자를 사용해 가능하게 한 적이 있었습니다.
당시에는 샘플과 이유를 명확하게 알고 있었는데 기록을 해두지 않으니 전형 기억기 안 나네요.
역시 기록을 남겨두어야 나중에도 써먹을 수 있는 거 같습니다.
개인에 따라 삼항연산자를 사용할 수도 사용하지 않을 수도 있습니다.
하지만 소스 작성 방법을 많이 알아두는 것이 다른 개발자의 소스를 볼 때 내용을 파악하고 흐름을 이해할 수 있기 때문에 여러 가지 작성방법을 알아두는 것도 좋을 거 같습니다.
댓글