exponenta event banner

Плотность комментариев

Отношение количества комментариев к количеству заявлений

Описание

Метрика задает отношение комментариев к операторам, выраженное в процентах.

На основании спецификаций HIS:

  • Многострочные комментарии считаются одним комментарием.

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

    // This function implements
    // regular maintenance on an internal database

  • Комментарии, начинающиеся со строки исходного кода, не считаются комментариями.

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

     remove(i); // Remove employee record
  • Оператор обычно заканчивается точкой с запятой с некоторыми исключениями. Исключения включают точку с запятой в for циклы или объявления полей структуры.

    Например, инициализация, условие и приращение в скобках в for цикл считается одной инструкцией. В качестве одного оператора считается следующее:

    for(i=0; i <100; i++)
    Если при инициализации также объявляется счетчик цикла, он считается двумя инструкциями.

Рекомендуемый нижний предел для этой метрики - 20. Для удобства чтения кода попробуйте разместить хотя бы один комментарий на каждые пять операторов.

Сведения о наложении ограничений на метрики см. в разделе Метрики сложности вычислительного кода.

Примеры

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

    struct record {
    char name[40];
    long double salary;
    int isEmployed;
};

struct record dataBase[100];

struct record fetch(void);
void remove(int);

void maintenanceRoutines() {
// This function implements
// regular maintenance on an internal database
    int i;
    struct record tempRecord;

    for(i=0; i <100; i++) {
        tempRecord = fetch(); // This function fetches a record
        // from the database
        if(tempRecord.isEmployed == 0)
            remove(i);         // Remove employee record
        //from the database
    }
}

В этом примере плотность комментариев равна 38. Расчет выполняется следующим образом:

КодексОбщее количество комментариевВыполняется всего операторов
struct record {
    char name[40];
    long double salary;
    int isEmployed;
};

01
struct record dataBase[100];
struct record fetch(void);
void remove(int);
04
void maintenanceRoutines() {
04
// This function implements
// regular maintenance on an internal database
14
int i;
struct record tempRecord;
16
for(i=0; i <100; i++) {
16
 tempRecord = fetch(); // This function fetches a record
        // from the database
27
if(tempRecord.isEmployed == 0)
            remove(i);         // Remove employee record
        //from the database
  }
}
38

Есть 3 замечания и 8 заявлений. Плотность комментариев равна 3/8 * 100 = 38.

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

Группа: Файл
Акроним: COMF
ЕГО метрика: Да