exponenta event banner

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

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

Описание

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

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