Уроки > Зачем нужны комментарии? Зачем программисты пишут комментарии?
Мы не продаём знания — мы ими делимся!

Если для вас это ценно, то поддержите проект.

Ваша поддержка — топливо для новых уроков!

Что такое комментарии и зачем они нужны?

Возможно, вы заметили, что в листингах из примеров встречается не только код программ, но и мои пояснения, написанные после //. Это комментарии.

Комментарии предназначены для того, чтобы пояснять какую-нибудь сложную часть вашей программы или какой-нибудь неочевидный трюк. Кроме того, иногда их используют, чтобы на время отключить какую-то часть кода. Это возможно потому, что всё, что записано в комментарии, компилятор игнорирует. Если быть точнее, процесс перевода программы с языка программирования на язык, понятный компьютеру, состоит из нескольких этапов. На одном из самых ранних этапов все комментарии из программы удаляются. Поэтому в комментариях можно писать всё что угодно, они никак не повлияют на итоговую программу.

Пример использования комментариев в программе

Пример объёмного комментария в программе для численного решения дифференциальных уравнений. Язык программирования: Fortran

В программах на Си используются два вида комментариев. Первый вид тот, который я использую в коде. Такие комментарии однострочнымм комментариями. Однострочный комментарий действует с того момента как появился и до конца текущей строки.

Ещё есть многострочный комментарий. Начало такого комментария обозначается последовательностью /*, а конец — */. Всё, что будет записано между этими двумя последовательностями символов, будет проигнорировано компилятором. Обычно многострочные комментарии используют для документирования кода, указания авторства, описания возможных проблем в коде, исключения большого куска кода из программы и т.д.

Вы спросите, а зачем нужно исключать куски кода программы? Иногда это нужно для того, чтобы найти ошибку в программе или проверить как работают отдельные её части. Если просто удалить код (или вырезать в буфер обмена), то потом его придётся писать заново, а так, закомментировал на время, а потом обратно раскомментировал, когда потребовалось. Когда вы начнёте писать более-менее большие программы, тогда вы воочию убедитесь в пользе этого подхода.

Комментарии пишут программисты для программистов, которые будут читать/изменять этот код в будущем. Но даже если вы пишите код сугубо в личных целях, то я всё равно рекомендую вам оставлять комментарии. По прошествию нескольких месяцев бывает очень трудно вспомнить, что же ты тут такое делал и почему делал именно так, а не иначе.

Комментарии в коде могут быть как очень смешными:

Листинг 1.

// Магия. Не трогать.

//Этот код отстой, и мы оба это знаем.
//Так что двигайся дальше, а идиотом ты назовешь меня потом.

// Дорогой я_из_будущего! Пожалуйста, прости меня за этот код.

// Если я еще раз увижу такое, мне придется начать носить на работу оружие.

/* Если это условие когда-нибудь выполнится, пожалуйста,
 сообщите мне по тел. ххх-ххх-ххх за вознаграждение. */

// пьян, исправить позже

// Когда я начинал это писать, только Бог и я понимали, что я делаю
// Сейчас остался только Бог

Так и не очень:

Листинг 2.

//Пожалуйста, работай

// Я не несу ответственности за этот код.
// Они меня заставили написать его против моей воли.

/*
Если вы читаете эти строки, значит вам поручили мой предыдущий проект.
Я очень, очень сочувствую вам. Удачи.
*/

Практика

  • Откройте программу "Hello, World". Попробуйте закомментировать строку printf("Hello, World!\n");
    Как вы думаете, как изменится работа программы? Проверьте своё предположение, скомпилировав и запустив получившуюся программу.

  • Попробуйте добавить комментарий внутрь строки "Hello, World!\n"? Как думаете, сработает ли комментарий внутри строки? Проверьте своё предположение.

  • Закомментируйте в программе ниже часть строк так, чтобы на экране появился текст:

Wake up, Neo...

The Matrix has you...

Follow the white rabbit...

Программа для изменения

#include <stdio.h>

int main (void) {
        while (1 > 0) {
                printf("Wake up, Neo...\n\n");
        }

        if (0 > 1) {
                printf("The Matrix has you...\n\n");
        }

        printf("Follow the white rabbit...\n");
        
        return 0;
}

Не бойтесь неизвестных инструкция языка программирования Си! С ними мы ещё разберёмся. =) Программистам часто приходится работать с кодом, в котором они не всё до конца понимают.

Исследовательские задачи для хакеров

  • Самостоятельно изучите возможность писать вложенные комментарии.
    Попробуйте внутри многострочного комментария использовать однострочный или многострочный комментарий. И наоборот, попробуйте внутри однострочного комментария вставить многострочный комментарий.

Дополнительные материалы

  1. Подборки смешных и не очень комментариев: раз, два Увидели смешной комментарий? Напишите его в комменты.

  2. Немного о том, как и для чего [не]нужно писать комментарии

  3. В ранних стандартах языка Си (до С99) были только многострочные комментарии