FUMNC(Number of Call Levels, 제어문의 중첩수) 가 계산되는 방식

수정일 Thu, 09 Sep 2021 시간: 11:12 AM

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)수치를 줄일 수 있습니다.

아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.