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

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

Описание

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

Рекомендуемый верхний предел для этой метрики равняется 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: да

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