예전에 할 때는, 타입이 함수포인터인 배열 만들고, 각 인덱스에 처리담당용 함수를 집어넣고 switch 쓰는곳에서 이 배열을 이용해서 함수호출해서 처리함. 그러면 초기화 부분 및 함수 만드는 양이 늘어나는데, switch쪽은 1줄로 줄어듬
switch로 전달하는 정수가 배열의 인덱스가 되는거고, 배열에 대입된 함수가 case에서 처리하는 로직임.
잘아네
표준에서 보장하는 내용이야 아니면 컴파일러 의존적인 내용이야? 표준에서 이런거까지 지정하지 않을거 같은데
뭔가 트릭키한 내용은 아니라서 어떤 플랫폼 어떤 언어든 대충 다구현할 수 있을걸?
case 여러개 묶어서 함수 하나에서 처리하게 하셈. case case case case .. handle_XXX(); break; case case case case ... handle_YYY(); 적어도 코드 길이는 줄일 수 있음
case 여러개 묶는 거는 case 1 ... 30 이것도 됙니 함
어떤 경운지 모르겠는데 서브타입에 대한거면 해당 메서드를 오버라이드 할 수 있을꺼고, 아닐 경우 위에서 큰 분기를 한번 태우면 됨.
큰 분기 태우는건 최적화에도 도움이 됨
오히려 100개면 if보다 switch가 적절할 확률이큼
다형성
예전에 할 때는, 타입이 함수포인터인 배열 만들고, 각 인덱스에 처리담당용 함수를 집어넣고 switch 쓰는곳에서 이 배열을 이용해서 함수호출해서 처리함. 그러면 초기화 부분 및 함수 만드는 양이 늘어나는데, switch쪽은 1줄로 줄어듬
switch로 전달하는 정수가 배열의 인덱스가 되는거고, 배열에 대입된 함수가 case에서 처리하는 로직임.
잘아네
표준에서 보장하는 내용이야 아니면 컴파일러 의존적인 내용이야? 표준에서 이런거까지 지정하지 않을거 같은데
뭔가 트릭키한 내용은 아니라서 어떤 플랫폼 어떤 언어든 대충 다구현할 수 있을걸?
case 여러개 묶어서 함수 하나에서 처리하게 하셈. case case case case .. handle_XXX(); break; case case case case ... handle_YYY(); 적어도 코드 길이는 줄일 수 있음
case 여러개 묶는 거는 case 1 ... 30 이것도 됙니 함
어떤 경운지 모르겠는데 서브타입에 대한거면 해당 메서드를 오버라이드 할 수 있을꺼고, 아닐 경우 위에서 큰 분기를 한번 태우면 됨.
큰 분기 태우는건 최적화에도 도움이 됨
오히려 100개면 if보다 switch가 적절할 확률이큼
다형성