Language Scope

Осциллограф языка

Описание

Эта метрика измеряет стоимость поддержания или изменения функции. Это вычисляется как:

(N1 + N2)/(n1 + n2)
Здесь:

  • N1 количество случаев операторов.

    Кроме идентификаторов (имена переменных или имена функций) и литеральные константы, все остальное рассчитывает как операторы.

  • N2 количество случаев операндов.

  • n1 количество отличных операторов.

  • n2 количество отличных операндов.

    Метрика рассматривает литеральную константу с суффиксом как отличающуюся от константы без суффикса. Например, 0 и 0U рассматриваются отличающимися.

Совет

Найти N1 + N2, считайте общее количество лексем. Найти n1 + n2, считайте количество уникальных лексем.

Рекомендуемый верхний предел для этой метрики равняется 4. Для более низкой стоимости обслуживания для функции попытайтесь осуществить верхний предел этой метрики. Например, если тот же операнд много раз происходит, чтобы изменить название операнда, необходимо сделать много замен.

Осуществлять пределы на метриках:

Примеры

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

int f(int i)
{
    if (i == 1)
        return i;
    else
        return i * g(i-1);
}

В этом примере:

  • N1 = 19.

  • N2 = 9.

  • n1 = 12.

    Отличными операторами является int, (, ), {, if, ==возврат, else, *, -, ;, }.

  • n2 = 4.

    Отличными операндами является fi, 1 и g.

Осциллограф языка f (17 + 9) / (12 + 4) = 1.8.

namespace std {
  int func2() {
    return 123;
  }
};

namespace my_namespace {
  using namespace std;
  int func1(int a, int b) {
    return func2();
  }
};

В этом примере, пространство имен std неявно сопоставлен с func2. Расчет осциллографа языка обрабатывает func2() как std::func2(). Аналогично, расчет обрабатывает func1() как my_namespace::func1().

Например, значение осциллографа языка для func1 1.3. Сломать это вычисление:

  • N1 + N2 = 20.

  • n1 + n2 = 15.

    Отличными операторами является int, ::, (, запятая, ), {возврат, ;, и }.

    Отличными операндами является my_namespace, func1ABстанд, и func2.

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

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

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