제가 맞게 이해한 것인지는 모르겠지만, if else if 대신 nested 구조를 줄이기 위해 if - if 구조를 사용하게되면 참거짓을 계산하는 과정이 중복되지 않나요? 간단한 계산이면 모르겠지만 복잡해지면 그에 따른 시간 손실이 있지 않을까 싶습니다.
그리고 다른 프로그래머가 봤을때는, if - elseif가 서로 배타적인 case임을 읽어보지않고도 알 수 있지만, if - if 가 이어져있다면 직접 평가되는 boolean 값을 해석하고나서야 아 서로 연관이 있구나내지는 동시에 실행되지는 않겠구나라는 것을 알게되는 불편함이 있을 것 같습니다.(물론 코딩스타일에 대한 우선적인 합의가 되었다면 이 쪽이 가독성은 더 좋을수도 있겠습니다)
말씀하면 대로 if elseif가 추할정도로 이어지는 상황이면 개별적인 if보다는 switch문(없는 언어도 있지만..)을 사용하는 것은 어떨까 싶네요.
nahwasa 4년 전 7
전 이제 일주일차 늅늅이라 감히 이런글을 적긴 좀 그렇지만
문제 풀고난 후 다른분들 코드도 어떤식인지 구경하는편입니다.
솔직히 주석 달아놔도 복잡하게 짜여져있으면 아마 본인도 다시 읽기 힘들것같은 코드들이 꽤 보입니다.
그래서 올려봅니다.
제 개인적인 방식이므로 물론 정답은 아닐 수 있습니다.
아마 댓글에 달아주실 고수분들의 의견이 더 팁이될것같습니다.
- 예외의 경우 최대한 else 쓰지말고, 그냥 바로 거기서 끝내세요.
[1]
if (n == 0) {
출력;
} else {
n이 0이 아닌 경우 처리;
}
[2]
if (n == 0) {
출력;
return;
}
n이 0이아닌경우 처리;
- 처리 순서가 복잡할 경우에도 역시 else를 최대한 아끼세요.
[1]
if ( a ) {
a가 true일경우 처리;
} else {
if ( b ) {
a가 false이고 b가 true일경우 처리;
} ...
} ...
[2]
if ( a ) {
a가 true일 경우 처리;
} else if ( b ) {
a가 false이고 b가 true일 경우 처리;
}...
a가 false일경우 처리할 양이 많다고 else로 나눠서 처리하는 방식으로 할 경우
복잡하지 않을때면 그게 더 이해가 잘 될수 있으나,
문제가 복잡해질수록 인덴테이션은 점점 안쪽으로 복잡해지고..
(a가 false고 b가 true면서 c는 true고 d는 false일경우!)
결국 주석 달아도 나중엔 그냥 보기도 싫은 코드가 됩니다. 일종의 습관이죠.
... {
...
{
{
....
}
}
}
이런거요.. 주석 달아놔도 가독성은 노답입니다.
- 어쩔수없이 중첩이 많이되야한다면 적당한 선에서 함수로 빼버리세요.
[1]
for (.. ) {
for (.. ) {
for (.. ) {
if(.. )
}
if(.. )
for (.. ) {
}
}
}
[2]
for (.. ) {
for (.. ) {
doSomething(.. );
}
}