Лучшие комменты в исходном коде

    Привет, хабровчане. Я здесь писал еще не очень много, но успел попробовать несколько форматов статей. Здесь были интервью с некоторыми IT специалистами из компании в которой я работаю, переводы, гайды… Что-то зашло, что-то нет. И вот, сегодня я решил попробовать новый для себя формат.



    В свободное время я иногда люблю посидеть на Quora — отвечаю на вопросы других участников, или просто читаю ответы на интересные вопросы. На днях мне попался один, довольно популярный вопрос. У треда больше тысячи подписчиков и 100+ ответов. А вопрос такой: какой лучший комментарий вам встречался в исходном коде? (Ориг. What is the best comment in source code that you have ever encountered?)

    Знаю, что такие треды есть и на stackoverflow, и на reddit, но т.к. я вдохновился ответами из Quora, решил сделать подборку именно оттуда. Просмотрел большую часть ответов и выбрал парочку, которые зашли больше всего.

    Ответ пользователя Costya Perepelitsa


    Лучший комментарий, который я когда-либо видел, наверное, Safety Pig (Свинья Безопасности):



    Я никогда не был полностью уверен, как именно она должна была помочь мне в обработке кода, но что бы там ни было, это работало.

    В итоге, мы включили Safety Pig в часть нашего процесса отладки и повышения безопасности:
    «То, как этот код структурирован, особенно затрудняет обнаружение утечек памяти. Добавьте Safety Pig и проводите свои изменения через Valgrind перед каждым коммитом».
    «Здесь компилятор не может обеспечить безопасность типов, поэтому мы добавили Safety Pig на всякий случай».
    «У меня пока нет юнит-тестов, но я добавил в них свинью». (почти сработало)

    Для тех из вас, кто хотел бы иметь собственную Safety Pig — игнорируйте первую строку. Блоки кода Quora автоматически удаляют начальные пробелы в первой строке.

    1. .
    2.                         _
    3. _._ _..._ .-',     _.._(`))
    4.'-. `     '  /-._.-'    ',/
    5.   )         \            '.
    6.  / _    _    |             \
    7. |  a    a    /              |
    8. \   .-.                     ;  
    9.  '-('' ).-'       ,'       ;
    10.     '-;           |      .'
    11.        \           \    /
    12.        | 7  .__  _.-\   \
    13.        | |  |  ``/  /`  /
    14.       /,_|  |   /,_/   /
    15.          /,_/      '`-'

    Ответ пользователя Sasha Krassovsky


    Однажды я просматривал исходный код каких-то рандомных студенческих игр, которые я нашел на DigiPen, когда вдруг увидел это:

    /* Do NOT delete this comment */

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

    Там была ошибка LNK1000: «неизвестная ошибка; обратитесь к документации для вариантов технической поддержки». Почему этот комментарий был необходим, навсегда останется загадкой.

    Ответ пользователя Rishi Kumar


    Лучшее, что мне приходилось видеть, попалось в сложной программе:

    1. //Fu*k whoever wrote this shit

    И потом, примерно через пять строк это:

    //oh god it was me

    Ответ пользователя Chen Xu


    Однажды я увидел это:

    
    1. //
    2. //                       _oo0oo_
    3. //                      o8888888o
    4. //                      88" . "88
    5. //                      (| -_- |)
    6. //                      0\  =  /0
    7. //                    ___/`---'\___
    8. //                  .' \\|     |// '.
    9. //                 / \\|||  :  |||// \
    10.   //             / _||||| -:- |||||- \
    11.   //            |   | \\\  -  /// |   |
    12.   //            | \_|  ''\---/''  |_/ |
    13.   //            \  .-\__  '-'  ___/-. /
    14.   //          ___'. .'  /--.--\  `. .'___
    15.   //       ."" '<  `.___\_<|>_/___.' >' "".
    16.   //      | | :  `- \`.;`\ _ /`;.`/ - ` : | |
    17.   //      \  \ `_.   \_ __\ /__ _/   .-` /  /
    18.   //  =====`-.____`.___ \_____/___.-`___.-'=====
    19.   //                       `=---='
    19.   //
    20.   //
    21.   //  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    22.  //
    23.  //            God Bless         No Bugs
    24.  //

    Статуя Будды благословляет твой код быть свободным от багов. Смеялся над этим какое-то время.

    Из ответа пользователя Somnath Mishra


    Когда-то давно я видел похожий тред на Stackoverflow и там поделился некоторыми самыми забавными комментариями, с которыми я сталкивался. Да я и сам писал много забавных комментариев, но не буду делиться ими здесь по понятным причинам.

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

    1. // Replaces with spaces the braces in cases where braces
    2. // in places cause stasis                                                           
    3. $str = str_replace(array("\{","\}")," ",$str);

    (пер. Заменяет пробелами скобки в тех местах, где они вызывают стаз)
    На английском звучит впечатляюще — две строчки комментария, а в них 6 рифмующихся слов.

    Немного черного юмора:

    1. double penetration; // ouch

    Код может сделать человека атеистом:

    1. //When I wrote this, only God and I understood what I was doing    
    2. //Now, God only knows                                                  
    3. // Update: I am an atheist now!

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

    1. // I am not sure if we need this, but too scared to delete.

    Раздраженный программист:

    1. // I am not responsible of this code.
    2. // They made me write it, against my will.

    (пер. Я не отвечаю за этот код. Они заставили меня писать его против моей воли)

    Злой программист:

    1. // no comments for you
    2. // it was hard to write
    3. // so it should be hard to read

    Заключение


    В треде было еще очень много интересного, прочитать все на английском можно здесь. Вообще, если этот пост зайдет, думаю, что позже соберу список самых интересных комментариев, которые встречались именно в моей практике. А какие встречались вам? Буду рад почитать в комментах.

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 51

      +3
      Есть и у русскоязычных подобные примеры:

      обнаружил в своем коде двух(или трёх)летней давности такие комментарии:
      1. //легче было написать эту фигню на С......
      2. // где-то здесь должен быть главный большой цикл, но я его потерял :-(
      3. //здесь и далее идут извращения. детям до 16 не смотреть!
      4. //бл*.............
      5. //эту функцию НЕ ТРОГАТЬ!!! она каким-то образом работает!
      6. //тум-пурум-пурум, APIлки!
      7. //удалить рука не подымается... пусть будет.
      8. // осторожно! здесь я тупил два дня!
      9. // в принципе здесь можно и без дополнтельного массива, но так както эстетичнее, культурнее ё**ныврот!

      © ibash.org.ru.
        +3
        Ещё:
        // Устройство для поддержания веса тела пациента при стоянии и ходьбе (костыль)
          +12
          Один бывший коллега отмечал подобные места
          // ГОСТ 5812-82
            +2

            Тонкий юмор, да :)

              0
              Ржем «падсталом» всем отделом
                +1
                У нас используется выражение «узкоспециализированное решение».
                0
                Нужно поправить.

                // Устройство для поддержания устойчивости вертикального положения тела. (костыль)
                или
                // Устройство для поддержания устойчивости. (костыль)

              +3
              У кого есть идеи в чем причина?
              /* Do NOT delete this comment */
                +7

                Может быть, где-то выше не был закрыт блок комментария

                  +3
                  У меня была схожая ошибка на базах Access (кажется на 2010).

                  В какой-то момент она повреждается, иногда такое бывает при сжатии, обмене данными с MS SQL или просто снятии задачи при зависании.

                  После этого VBA-скрипт начинает останавливаться на произвольной строке кода и выкидывать неизвестную ошибку. Но если на эту строчку написать комментарий, то всё будет работать нормально.
                    +3
                    if (__LINE__ == n) {} 


                    Можно как-то так заморочиться, например.
                      +2

                      Может быть, баг в компиляторе.

                        +2
                        Не раз встречал такое и все это было связано с автогенеригуемым кодом. Например, сегенерирован шаблон кода, дальше программист в определенных секциях пишет код. А вот в такие комменты или разделяют секции, или потом заменяются на код.
                          0
                          я однажды в лигаси проекте похожую штуку нашел (когда удаляешь непонятную строку — и магия компиляции пропадает), после чего раскопал — кто ее использует (и заодно еще парочку макросов, которые им обрабатывались).
                        +1
                        Смежная тема — commit message. Наткнулся на бота, хоть и по сменой тематике: twitter.com/gitlost
                          +1
                          Будду забрал. Спасибо.
                            +6
                            Не коммент, но сразу вспомнился знаменитый "Lexa Lexa ty mogu~ movet dave zloebu~" ))
                              +6
                              Вот тут шедевральный комментарий на английском к коду, работающему с PSD.
                              github.com/gco/xee/blob/master/XeePhotoshopLoader.m#L108
                                +1
                                Много таких…
                                /*Получение постов*/
                                public function getPosts() {
                                }

                                  +3
                                  тогда стоит вспомнить такое:
                                  int getRandomNumber()
                                  {
                                     return 4; // chosen by fair dice roll.
                                               // guaranteed to be random.
                                  }
                                  
                                  +3
                                  Комментарий с упоминанием Бога напомнил древнюю программистскую шутку: «God is real, unless explicitly declared as integer»
                                  +2
                                  Ещё студентами в тех.институте мы баловались и в дипломах (требование было чтобы написан был от руки) делая внутри текста вставки о том, что раз диплом читать никто не будет, то рекомендуется делать ДВС (двигатель внутреннего сгорания) из дерева )))
                                  Одному из нас не повезло — прочли…
                                    +1
                                    «Так как всё равно никто это читать не будет, для простоты принимаю „пи“ равным 5»
                                      +1
                                      У нас валы в редукторах, корпуса микросхем, и еще много всего в дипломах делали из дерева.
                                      0
                                      Немного черного юмора

                                      на самом деле, не обязательно черного...

                                        +1
                                        Моё, в процессе попытки разобраться с кодом для 80286 процессора
                                        xor bx, bx
                                        mov si, cs:[bx-0E718h] ; покажите мне этого извращенца или дайте телефон его диллера
                                          +1
                                          Когда-то давно участвовал в разработке одной опенсорсной многопользовательской игры, и благодаря довольно эксцентричному сообществу комментарии были довольно «живыми»
                                          Обсценная лексика
                                          //DNA - Because fuck you and your magic numbers being all over the codebase.
                                          #define DNA_BLOCK_SIZE 3

                                          eatverb = pick("devour","nibble","gnaw","gobble","chomp") 
                                          //who the fuck gnaws and devours on a salad

                                          L.client.give_award(/datum/award/achievement/misc/vendor_squish, L) 
                                          // good job losing a fight with an inanimate object idiot

                                          if(HAS_TRAIT(src, TRAIT_NOHUNGER))
                                          		return //hunger is for BABIES


                                            0
                                            Space Station 13? Тоже принимал участие, в старых репозиториях и пожёстче комментарии бывали
                                              0
                                              Ага. TgStation при переезде на гитхаб самую жесть выкинул вроде как, чтобы репозиторий не забанили.
                                            +4
                                            Сообщения пользователю тоже бывают неплохи. Однажды Windows мне выдала текст, над которым я медитировал минуты три: «Диалог выбора объектов не может быть найден, так как отсутствует место, где его можно было бы найти». (Цитируется по памяти, плюс-минус пара слов).
                                              +2

                                              В Windows XP и 2000 был скрытый ресурс в библиотеке, содержащей диалог выключения питания. Представлял собой то же самое большое окно со вводом причины внезапного отключения, как в серверных версиях винды, только в заголовке было указано:
                                              image

                                                0
                                                Про это не знал. Тоже ничего так. :-)
                                                Единственное, что такое «скрытый» ресурс? У ресурсов вроде нет такого признака.
                                                  +1
                                                  Думаю, что имеется ввиду ресурс, который запихали в длл, но нигде не используют.
                                                    +1
                                                    За 2000-ый сервер не скажу, но в 2003-м этот диалог используется — появляется при входе в профиль после «неожиданного» завершения работы. В несерверных версиях видимо его не активировали просто.
                                                      0

                                                      Используется, но не этот, а соседний, без подписи под комбобоксом :-)

                                                        0
                                                        Окошко настолько примелькалось, что эту подпись я как-то и не прочитал :)
                                              +2

                                              А где плашка "перевод"?

                                                0
                                                Мне нравятся комментарии к комментариям, видно как развивается продукт

                                                // 17,01,2020  не переходим в ошибку сразу
                                                // 07.11.2018  ХХХ просил для УУУ, пусть будет много смс, но не состояние ошибки 
                                                //              ERROR_BILL = 1;
                                                // 02.10.2019  ХХХ просил отправлять смс только один раз
                                                

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

                                                  // tryapochka
                                                  

                                                  Смысл так и остался неясен )))
                                                  0
                                                  image
                                                  На украинском внезапный коммент!
                                                    –1
                                                    Причём достаточно неграмотно написан. Надеюсь, что с php у автора лучше, чем с украинским
                                                    +1

                                                    @SuppressWarnings("PMD.NPathComplexity")
                                                    //NPathComplexity: it's not really complex

                                                        +1


                                                        Перед особо страшным куском кода

                                                          0
                                                          Никогда не понимал, зачем в комментах звездочки ставить)))
                                                          Со звездочками выразительнее же.
                                                          Постоянно так делаю)))
                                                            +1
                                                            попросил коллегу исправить одну функцию в совместном проекте. через некоторое время спрашиваю, почему он этого до сих пор не сделал. он показывает мне комментарий, который я оставил там давным-давно и забыл о его существовании:
                                                            // don't touch
                                                            // function is already fixed
                                                            
                                                              0
                                                              встречал такую отладочную переменную:
                                                              bool shit = false; // changes when test isn't passed
                                                                0
                                                                вот такое помню:
                                                                timeout = 10
                                                                twoMinutesTurkish = 300  # bigger timeout
                                                                
                                                                  +2

                                                                  У нас была внесистемная единица времени "один ЩАС" (промежуток времени между ответом на просьбу сделать что-то и реальным началом делания), эмпирически равная 8 минутам.

                                                                Only users with full accounts can post comments. Log in, please.