Comment Density

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

Описание

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

На основе технических требований 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
Метрика HIS: да

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