Number of Instructions

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

Описание

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

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

Для обеспечения пределов на метрики:

Подробные данные расчетов

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

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

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

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

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

    • Переменная инициализирована.

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

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

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

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

      {
          var = 1;
      }

    • Метки

      Например, следующее отсчитывается как две инструкции. The 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
ЕГО Метрика: Да