FUMNC(Number of Call Levels, 제어문의 최대 중첩개수) 수치는 함수 매트릭의 한 종류이며,

함수의 문장들이 얼마나 중첩(Nesting)되어 있는지 깊이를 나타냅니다.

국방분야에서는 해당 수치(Number of Call Levels) 의 값을 6이하로 제한하고 있습니다.


아래의 2가지 코드를 보겠습니다.


1. test1 함수 (swtich-case 문 사용)

int test1(int index)
{
  int result = 0;
  
  switch(index)
  {
  case 1:
    result = 1;
    break;

  case 2:
   result = 2;
   break;

  case 3:
   result = 3;
   break;

  default:
   result = -1;
   break;
  }

  return result;
}


2. test2 함수 (if문 사용)

int test2(int index)
{
  int result = 0;
  
  if(index == 1)
  {
    result = 1;
  }
  else if(index == 2)
  {
    result = 2;
  }
  else if(index == 3)
  {
    result = 3;
  }
  else
  {
    result = -1;
  }

  return result;
}


test1, test2 함수 모두 동일한 로직을 수행하는 함수입니다.

하지만 FUMNC 수치를 측정해보면 test1 함수는 1, test2 함수는 3으로 측정됩니다.

test1 함수의 switch 문의 경우, 함수의 매개변수 index에 해당하는 case로 바로 이동하여 실행되는 반면,

test2 함수의 if문의 경우, 조건에 맞는 코드가 실행될 때까지 else if 구문을 차례로 수행하기 때문입니다.


따라서, 어떠한 입력값이 정형화 되어 있는 경우 if문보다는 switch-case문을 사용하여 코드를 작성하면

가독성에서도 좀 더 유리하며, 제어문의 최대 중첩개수(FUMNC)수치를 줄일 수 있습니다.