아래와 같은 코드는 어떤가요?
핑크펄
안녕하세요.. ^^
요즘, 짜고있는 코드들을 보다가.. 왜케 지저분하지? 라는 생각을 참 많이 합니다..
코딩의 가독성 측면에서 제게 가장 큰 이슈중 하나는 IF vs SWITCH 였는데요.
사실상 두 코드를 비교해보면..
if ( 1 == a ) {
...
}
else if ( 2 == a ){
...
}
보다는
switch (a){
case 1:
...
break;
case 2:
...
break;
}
가 훨씬 가독성이 좋다는 것이 일반론입니다.
혹자는 switch-case 구문이 더 좋은 performance 를 내어 준다 하지만, 구글링 해본 결과 compiler-dependent 한 문제로 사실상 big-deal 이 아니라고 하는군요..(실제로 테스트를 해보지는 않았지만..)
저는 일반적으로 String 에 대한 분기처리를 많이 합니다.(업무상..)
이제 질문 들어갑니다.
아래와 같은 코드가 과연 performance 와 readability 를 모두 충족시켜 줄 수 있을까 라는 것입니다.
String input...
switch(input.hashcode())
{
case 1.hashcode():
break;
case 2.hashcode():
break;
....
}
혹은 아래와 같은 방법이 아닌, 다른 코딩 스타일이 있는지도 궁금합니다.
그럼 이만..~
-
풋내
수다님/보통 string 에 대한 비교를.. == 연산자로 하지는 않겠죠? equals 로 하는 경우, 각각의 charsequence 를 비교하기 때문에 퍼포먼스는 별반 다르지 않을거라고 생각됩니다.
-
히메
저도 가독성 향상을 위해서 switch 구문을 많이 씁니다.
if else는 프로그래머가 너무 멋대로 짜맞추기 십상이라 보기는 힘들지만,
속도는 if else가 빠르다고 하더군요. 말씀대로 최적화엔 별 도움 안된다고 하지만요. -
수예
가독성은 당연 스위치가 좋습니다. 정확한 규칙이 있는 데이터들의 처리라면 스위치를 저는 주로 씁니다. 보기 편하거든요.. if 문은 그냥 막때려박음 편하긴 한데 ㅡㅡ;; 나중에 다시볼때,, 또 if 만약 그렇다면 그렇다면 주저리 하게 생각해보게 된다는 ㅡㅡ;;;
-
누리별
일단 위의 코드는 컴파일 타임에 에러가 발생하는군요 -_-; 좀더 알아보는 중입니다. 저녁쯤에 다시 코멘트 하도록 하겠습니다.. ㅎㅎㅎ
-
딥와인
저 같은 경우는 switch - case문은 학교다니면서 수업시간 외엔 써본적이 없는거 같아요.. 실제 업무에서는 다 if문으로 처리하죠.. 보통 String에 대한 비교하기때문에 switch문을 사용할때 변환해 주는과정이 들어가면 더 성능이 떨어지지 않을까라는 생각을 가지고 있어서 switch는 잘 사용하지 않게 되더라구요..