Number of Instructions

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

Описание

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

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

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

Детали расчета

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

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

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

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

    • Переменная не является статической.

    • Переменная инициализируется.

  • Операторы управления, такие как ifдляпропуск, gotoвозврат, switchв то время как, 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: да

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