몇주 전에 소스 코드를 효율적으로 짜는 내용과 관련된 책(Effective 시리즈는 아니다)에서 'if 문을 사용하는 것은 비효율적이다.' 라고 주장하는 것을 보게 되었습니다. 그리고 종종 'switch case를 사용하는 경우는 위험하다.' 라고 이야기를 하는 경우도 보게 됩니다.

이런 이야기를 할 주제가 되지 않는 다는 것은 알지만, 두가지 의견에 대해서 모두 다 '이건 무슨 되도않는 이야기인가?' 하는 생각을 하고는 합니다.


우선 if문이 switch case보다 비효율적이다고 소개를 한 내용의 샘플 소스 코드는 아래와 같았습니다.





물론 정확하게 동일한 소스는 아닙니다만 논지는 같았습니다.
매번 if문을 들어가서 검사를 하기 때문에 비효율적이다. 라고 이야기를 하는 것입니다.
예를 들어 위의 경우 만약 첫번째 if가 해당이 되더라도 바로 빠져나오지 못하고 아래의 값들도 검사를 하게 됩니다.

하지만 이런 의견은 정말이지 그냥 switch case를 띄워보기 위해서 어거지로 짠 것이나 다름이 없지 않은가? 하는 생각을 하게 됩니다.

사실 아래의 경우처럼 else if 처리를 하면 그런 일이 없기 때문입니다.



모두 break point를 잡아놓고 돌려보도록 합시다. 가장 처음에 해당해서 if 문이 true로 처리가 되면 그 아래의 else if와 else에 대한 검사를 하지 않습니다.

즉, 어거지가 좀 심한 예제였던 것입니다.


그리고 switch case에 대해서 위험하다. 라는 이야기가 종종 보이고는 합니다.
이 경우에는 모두 break를 사용하지 않아서 생기는 문제입니다.


즉, 두 의견 다 좀 어거지가 심하다고만 생각이 듭니다.

개발을 하는 사람들의 취향에 맞게, 혹은 작성하는 프로젝트 등에 적합하게 짜면 되는 것이지 이건 이러니 쓰지 말아라... 이렇게 주장을 하기에는 어려움이 있습니다.

개인적인 의견을 이야기하는 것은 좋지만 혹 누군가가 보기에는 이게 좋고 저건 나쁜거다. 라고 오해를 할 수 있는 여지가 있습니다.
모두 조금씩만 주의하면 그럴 일이 없으리라 봅니다.
저작자 표시 비영리 변경 금지
신고
by 가우초 2012.02.18 10:33
| 1 2 |