Код
#подборки

Магия, драконы и Мистер Компилятор — забавные комментарии в коде

Комментируем комментарии программистов :)

 Анастасия Телесницкая для Skillbox

В прошлых выпусках мы постигали юмор разработчиков — смеялись и плакали вместе с ними. Кажется, даже выяснили, что программисты — вовсе не зануды или ботаники.

Сегодня подберёмся к ним ещё ближе: залезем в святая святых — в код. В алгоритмах разбираться не будем, а просто почитаем комментарии — пояснения к коду, которые разработчики пишут для себя и коллег.

Комментарии во многих языках программирования оформляются похоже. Однострочные следуют после символов //, а многострочные (блочные) заключаются между /* и */ — так в Java, C#, Kotlin и JavaScript.

Также применяются решётка # (например, в Python или Ruby) и -- (два дефиса подряд) — так в SQL.

Мы для единообразия везде будем использовать пару слешей //.

Белая и чёрная магия

Изображение: GIPHY

Жизнь программистов, похоже, полна волшебства и магических ритуалов.

Кто-то практикует примитивные бытовые заговоры:

// Работай, пожалуйста. 
Комментарий: Loud Programmer / перевод Skillbox Media

Другие — знакомы с магией истинной:

// Магия. Не трогать.
Комментарий: Loud Programmer / перевод Skillbox Media

А в самых глубинах кода водится сильная и страшная магия:

// Это чёрная магия.
Комментарий: BetterProgramming / перевод Skillbox Media

С такими заклинаниями шутки плохи, предупреждает следующий комментарий:

// Из какой-то ветки stackoverflow.
// Не играй с магией, иногда она кусается.
Комментарий: BetterProgramming / перевод Skillbox Media

Stack Overflow — это интернет-форум, где разработчики пишут о проблемах, которые не могут решить сами. А в ответ получают код, который похож на настоящие заклинания :)

Иногда подобные колдунства настолько непонятны, что пугают даже того, кто их в код принёс:

// Не уверен, что нам это нужно, но так страшно удалять.
Комментарий: Loud Programmer / перевод Skillbox Media

Преступление и извинение

Изображение: GIPHY

Временами авторам бывает настолько стыдно за свои творения, что они сами перед собой извиняются:

// Дорогой будущий я. Прости меня, пожалуйста.
// Я даже выразить не могу, как мне жаль.
Комментарий: Techie Delight / перевод Skillbox Media

Наверное, это хорошо, когда свой же код кажется плохим через какое-то время, — ведь это признак развития. Гораздо хуже, когда никакого развития нет. В таком случае можно свалить всё на кота, как сделал автор следующего комментария:

// Этот код работал, пока мой кот не решил
// прогуляться по клавиатуре.
Комментарий: BetterProgramming / перевод Skillbox Media

…или пожаловаться на жёсткие сроки:

// Да, это плохой код, но сейчас четвёртый час ночи, 
// а мне надо заставить его заработать.
Комментарий: Data Driven Investor / перевод Skillbox Media

…или честно описать, как обстоят дела:

// я сам не понял, что сделал
Комментарий: BetterProgramming / перевод Skillbox Media

Можно и вовсе снять с себя ответственность и переложить её на коллег или работодателя:

// Я был против, но они заставили меня написать это.
Комментарий: Loud Programmer / перевод Skillbox Media

Код, который просто и быстро устраняет последствия какой-то проблемы (но не её причину), русскоговорящие программисты называют ёмким словом «костыль». Или шифруют вот так:

// Устройство для поддержания веса тела пациента 
// при стоянии и ходьбе (костыль).
Комментарий: Хабр

Высокомерие и угрозы

Работа программистов, казалось бы, тихая и спокойная: сидят себе за компьютером и по клавиатуре стучат. Но, кажется, тишь да гладь у них далеко не всегда.

Порой в комментариях сквозит пассивная агрессия с лёгким налётом самооправданий:

// писать это было сложно
// так что и читать должно быть не проще
Комментарий: Loud Programmer / перевод Skillbox Media

Иногда от коллег высокомерно отмахиваются:

// для тебя — никаких комментариев
Комментарий: Loud Programmer / перевод Skillbox Media

А тут и до прямых угроз недалеко:

// Джон, если ты ещё раз удалишь этот фрагмент кода,
// честное слово, я тебя прибью!
// Это не «что-то странное»!
// Это АВТОМАТИЧЕСКАЯ ПРОВЕРКА! 
Комментарий: BetterProgramming / перевод Skillbox Media

И даже до очень-очень серьёзных угроз:

// Если я ещё раз это увижу, начну ходить на работу с оружием.
Комментарий: plainenglish.io / перевод Skillbox Media

Я, снова я и Мистер Компилятор

Думаете, разговаривать с коллегами и самим собой в комментах странно? Общаться с компилятором — вот что на самом деле странно:

// Мистер Компилятор, не читайте это, пожалуйста.
Комментарий: plainenglish.io / перевод Skillbox Media

И ведь знают прекрасно, что компилятор и так не видит комментарии. Или, по крайней мере, подозревают:

// Иногда мне кажется, что компилятор игнорирует все мои комментарии.
Комментарий: plainenglish.io / перевод Skillbox Media

Компилятору комментарии действительно не нужны. Их пишут люди — для людей. Причём есть мнение, что лучше бы не писали: хороший код должен быть понятен, а потому не нуждается в комментировании.

Как говорил Мартин Фаулер, когда вам в следующий раз захочется написать комментарий, попробуйте сперва отрефакторить (переписать) код так, чтобы комментарий стал не нужен.

А если комментарии всё же есть — не доверяйте им. Зачастую они нагло врут:

// Всегда возвращает true
public boolean isAvailable() {
   return false;
}
Комментарий: BetterProgramming / перевод Skillbox Media

На самом деле этот метод всегда возвращает логическое значение false («ложь»), хотя комментарий утверждает обратное.

А как вам такое получение случайного числа:

// Этот метод, очевидно, возвращает случайное число,
// выбранное счастливым кубиком
int getRandom() {
    return 4;
}
Комментарий: Techie Delight / перевод Skillbox Media

Ирония в том, что этот метод всегда возвращает число 4. Возможно, оно и правда счастливое, но от метода с таким названием ждёшь, что он будет возвращать разные случайные числа, а не каждый раз одно и то же.

Драконы и свинка безопасности

Если где-то есть место магии, то и до драконов недалеко:

//        .==.        .==.         
//       //`^\\      //^`\\    
//      // ^ ^\(\__/)/^ ^^\\
//     //^ ^^ ^/6  6\ ^^ ^ \\   
//    //^ ^^ ^/( .. )\^ ^ ^ \\    
//   // ^^ ^/\| v""v |/\^ ^ ^\\
//  // ^^/\/ /  `~~`  \ \/\^ ^\\
//  -----------------------------
//  здесь обитают драконы
Комментарий: plainenglish.io / перевод Skillbox Media

Будьте осторожнее, копаясь в комментариях: вместо драконов вам могут подложить свинью. Но эта свинка окажется полезной. Называют её Safety Pig. Она предупреждает об особенно забористом и сложном коде:

// Внимание! Код ниже может довести до слёз. 
// Да хранит вас священная свинка
//                         _
// _._ _..._ .-',     _.._(`))
//'-. `     '  /-._.-'    ',/
//   )         \            '.
//  / _    _    |             \
// |  a    a    /              |
// \   .-.                     ;  
//  '-('' ).-'       ,'       ;
//     '-;           |      .'
//        \           \    /
//        | 7  .__  _.-\   \
//        | |  |  ``/  /`  /
//       /,_|  |   /,_/   /
//          /,_/      '`-' 
Комментарий: Хабр / перевод Skillbox Media

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

Как говорили Гари Мак-Гроу и Эдвард Фельтен, если пользователям дать выбор между пляшущими свиньями и безопасностью, они всегда выберут свиней.

И «Оскар» достаётся…

Комментарии — это целая фантазийная Вселенная, в которой есть место магии и драконам, драмам и сожалениям. Про неё можно написать не статью, а целую книгу или снять фильм. Может, он даже удостоился бы «Оскара» — хотя бы за эту речь:

// Я посвящаю этот код, да и вообще всю мою работу, моей жене Дарлин. 
// Ведь именно ей придётся содержать меня, троих наших детей и собаку, 
// когда мои творения войдут в релиз.
Комментарий: Loud Programmer / перевод Skillbox Media

Что дальше?

Если хотите ещё больше узнать о языке айтишников, почитайте об истории словечек из цифрового мира: «жучки»-баги и «печеньки»-куки, «заплатки»-патчи и прочие «облака» — про это вот всё. А если думаете, что и так прекрасно переводите с программерского на русский, — пройдите наш тест и подтвердите это.




Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована