Switch 문 안에 Switch 문법 (Nested switch-case)
코드를 작성하다보면 조건분기가 점점 많아지는 예외 상황이 생길 경우가 있다.
다중 if 문도 비슷하지만 switch 문안에 다중 switch가 생기는 경우에 대한 고민과 생각이 들어서 관련되서
찾아보고 포스팅하게 되었다.
Nested switch-case 라고 하는 표현은 가독성과 순환 복잡성이 늘어난다고 한다.
순환 복잡성이 높아지면 여러가지 케이스가 생기게되고 버그 및 사이드 이펙트, 결함이 비례한다는 이야기가 있다.
반응형
결론적으로 예시의 코드처럼 Nested switch-case문은 사용하는것을 지양해야 한다.
< 수정 전 코드 >
public void TestSwitchCase(int paramValue1, int paramValue2)
{
switch (paramValue1)
{
case 1:
{
// Nested Switch
switch (paramValue2)
{
case 2:
Debug.Log("Choice Value : 2");
break;
case 3:
Debug.Log("Choice Value : 3");
break;
}
}
break;
case 4:
Debug.Log("Choice Value : 3");
break;
default:
Debug.Log("Choice is other Value than 1, 2 3, or 4");
break;
}
}
<수정 후 코드>
public void TestSwitchCase(int paramValue1, int paramValue2)
{
string stringValue = string.Empty;
switch (paramValue1)
{
case 1:
{
// Nested Switch
stringValue = NestSwitchCase(paramValue2);
}
break;
case 4:
stringValue = "Choice Value : 3";
break;
default:
stringValue = "Choice is other Value than 1, 2 3, or 4";
break;
}
if (stringValue != string.Empty)
Debug.Log(stringValue);
}
public string NestSwitchCase(int parmaValue)
{
switch (parmaValue)
{
case 2:
return "Choice Value : 2";
case 3:
return "Choice Value : 3";
default:
return string.Empty;
}
}
반응형
개인적으로 코드의 가독성이 많은 위험(버그, 사이드이펙트, 결함, 오류)등을 많이 줄여준다고 생각하기 때문에 분리해서 작업하는 방식으로 작업하는것에 대한건 좋다고 생각한다. 개인적인 생각이기 때문에 Nested switch-case 사용한다고 해서 잘못된건 아니다. 결국 코드에 대한 스타일의 차이라고 생각한다.
if같은 조건 분기문도 중첩해서 사용하기 보다는 else if 를 사용을 권장하는것도 비슷한 맥락이라고 생각한다.
순환복잡성 : https://en.wikipedia.org/wiki/Cyclomatic_complexity
★☆☆☆☆
반응형
'개발 > 기본) 기본기' 카테고리의 다른 글
기본기)Event Handler 대리자 (0) | 2021.09.26 |
---|---|
기본기)c# switch statement on a range(switch 문 범위 조건) (0) | 2021.09.13 |
기본기)페어 프로그래밍(Pair Programing) (0) | 2021.08.09 |
기본기)c#) lock (0) | 2021.05.12 |
기본기) 소프트웨어 관리 버전(Semantic Versioning) (0) | 2021.04.19 |
댓글