Количество инструкций

Количество инструкций на функцию

Описание

Эта метрика измеряет количество инструкций в теле функции.

Рекомендуемый верхний предел для этой метрики равняется 50. Для большего количества модульного кода попытайтесь осуществить верхний предел для этой метрики.

Чтобы осуществить пределы на метриках, смотрите, Вычисляют Метрики сложности кода.

Детали вычисления

Метрика вычисляется, используя следующие правила:

  • Простой оператор, заканчивающийся ;, является одной инструкцией.

    Если оператор пуст, он не рассчитывает как инструкция.

  • Объявление переменной рассчитывает как одна инструкция, только если переменная также инициализируется.

  • Операторы управления, такие как if, for, break, goto, return, switch, while, количество do-while как одна инструкция.

  • Следующее не рассчитывает как инструкции собой:

    • Начало блока кода

      Например, следующие количества как одна инструкция:

      {
          var = 1;
      }

    • Метки

      Например, следующие количества как две инструкции. Метки case не рассчитывают как инструкции.

      switch (1) {  // Instruction 1: switch 
          case 0: 
          case 1: 
          case 2: 
          default: 
          break;    // Instruction 2: break 
       } 

Примеры

развернуть все

int func(int* arr, int size) {
    int i, countPos=0, countNeg=0, countZero = 0;
    for(i=0; i<size; i++) {
        if(arr[i] >0)
            countPos++;
        else if(arr[i] ==0)
            countZero++;
        else
            countNeg++;
    }
}

В этом примере количество инструкций в func равняется 9. Инструкции:

  1. countPos=0

  2. countNeg=0

  3. countZero=0

  4. for(i=0;i<size;i++) { ... }

  5. if(arr[i] >=0)

  6. countPos++

  7. else if(arr[i]==0)

    Конечный else считается как часть инструкции if-else.

  8. countZero++

  9. countNeg++

Примечание

Эта метрика отличается от количества исполняемых строк. Например:

  • for(i=0;i<size;i++) имеет 1 инструкцию и 1 исполняемую строку.

  • Следующий код имеет 1 инструкцию, но 3 исполняемых строки.

    for(i=0;
        i<size;
        i++)

Метрическая информация

Группа: Функция
Акроним: STMT
Метрика HIS: да

Смотрите также