1. C++ / Говнокод #3357

    +998

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    #define TRACE_VAR	ATraceClass *mTrace
    #define TRACE_VAR_INIT	mTrace = ATraceClass::getInstance()
    
    class ATraceClass {
    public:
    	void log(int severity, const char *format, ...);
    	/* ... */
    }
    
    class ATraceUser {
    public:
    	ATraceUser::ATraceUser() {
    		TRACE_VAR_INIT;
    	}
            int SomeMethod1();
    	/* ... */
    	TRACE_VAR;
    }
    
    int ATraceUser::SomeMethod1()
    {
      /* ... */
      if (errorCondition)
      {
        return mTrace->log( ERR, "Something went terribly"\
                            "wrong when doing the operation %s\n",\
                            mOperation),-1;
      }
      /* ... */
    }

    в догонку к #3355 - это уже как бы пример стиля использования логгера егоным же автором.

    пришел ко мне как-то народ, показал нечто что я тут иллюстрирую в SomeMethod1() и спросил:
    (1) а на кой эти слеши? может нам и весь остальной код нужно ими разукрасить??
    (2) а как это void можно из int функции возвращать? и как это вообще работает? вроде в С/С++ такое нельзя....

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

    Запостил: Dummy00001, 31 Мая 2010

    Комментарии (28) RSS

    • (1) Чем шире монитор, тем меньше бэк-слешей ;)
      (2) оператор "запятая" попутал человеков.
      Ответить
      • 1. Хрена! Тем больше труъшных 80-символьных терминалов на нем помещается!
        Ответить
        • Ну-ну. Можно подумать люди покупают 24" моники и сидят в текстовых режимах программят.
          Ответить
          • В графических, а на экране терминальчики, терминальчики и emacs с окнами, каждое в ширину 80.
            Это лично я. За других не скажу.
            Ответить
            • Зачем такое "счастье" в повседневной жизни ?
              Ответить
              • Ну, мне это удобно:) По крайней мере, удобнее, чем другие IDE (наверное, я их не научился готовить).

                А чего я так держусь за ширину кода в 80... По двум причинам:
                1. техника просматривания кода, когда глаза не должны влево-вправо бегать, а только по вертикали (как в быстром чтении).
                2. никогда не знаешь, на какой железяке придется этот код читать (например, на экране телефона все время прокручивать код влево-вправо, потому что он не влазит, тяжело).

                Вообще, мы с мобильными устройствами возвращаемся в каменный век обратно:) лимитированный размер экрана и лимитированные ресурсы заставляют вспомнить то, что делали 15 лет назад. Пока, например, в моем телефоне 400 мгц на 128 памяти, и это накладывает!
                Ответить
                • Так а в высоту стало быть не 25 строк и можно варьировать ? Может быть экран тогда в портретный режим повернуть.
                  На экране телефона код читать - это жОстко ;)
                  UPD: Хорошо, что еще не писать через Т9.
                  Ответить
                  • В высоту насколько экрана хватит, ага.

                    У нас есть сотрудник, у которого экран в портретнике, но я, наверное, ретроград:) И еще, в стандартной комплектации у рабочего монитора это не предусмотрено.
                    Кстати, если экран долог по вертикали, это тоже плохо, функции становятся слишком длинными:)))) Было же правило "абзац не больше страницы" "функция должна помещаться на один экран".

                    Насчет телефона - читать-не читать, а править приходится:) Консоль - главный инструмент, епта!
                    Ответить
                  • Не, писать на тачскрине, на нарисованной клаве, с двух стилусов:)
                    Ответить
                    • А вообще, мне понравилось, T9 для сисадминов со словами вроде fsck, mkfs, chmod и /dev/null.

                      PS. Пока не захочешь СМС-ку девушке написать:)
                      PPS. Хотя, зависит от девушки.
                      Ответить
                • ну я надеюсь что ты все таки улавливаешь что здесь слеши это говно?

                  в С/С++ "аааа" == "аа" "аа", так как соседние строковые литералы компилером автоматом соединяются.
                  Ответить
                  • Стопудов!
                    Лично я когда разбиваю длинные строки, слеши не использую:)))
                    Ну, то есть, два варианта, либо в конце слеш, но без кавычек, либо кавычки, и в начале следующей кавычки. В последнем случае emacs автоматом правильно индентит и все красиво, а в первом строка прилипает к левому краю. Фи.
                    Ответить
      • да меня бы слеши тоже попутали - если бы я Ц препроцессор на паре оказий не по назначению не использовал. я мнгновенно догадался что слеши будут им съедены и выражение в одну строку будет преобразовано.

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

        со слешами там на самом деле больше проблем: половина сырцов ими разукрашена и после их удаления в Сабвершене такие реально не хилые дельты появляются которые создают впечатление что код полностью переписали.
        Ответить
        • У меня специальная прога есть на елиспе для автоматического решения конфликтов. Грубо говоря, идет по файлу, анализирует конфликты и мочит его, если на самом деле не конфликт (в данный момент для CVS если разница в пробелах).
          Но принцип тот же. Впрочем, тут, наверное, это не проблема, нет веток со слешами и без слешей, на которых параллельно пишут и таскают туда-сюда?:)
          Ответить
          • > нет веток со слешами и без слешей, на которых параллельно пишут и таскают туда-сюда?

            жди и надейся. это в нормально ненормально браченом перебранченом коде висит.

            я во всех брачах главных релизов это поубирал, но если какую фичу кто делал в другом бранче, то копи-пастом кусками и в главные релизы опять попадает.

            в твоем случае это как бы "исправать" можно: слеш на конце и не внутри строки нужно просто игнорировать как и пробел. если внутри строки - количестно двойных ковычек нечетное - громко кричать что код с ошибкой бо даже в С многостроковые литералы запрещены.
            Ответить
            • Я чтобы не бороться с пробелами, сделал скрипт, который приводит к общему знаменателю на коммите.
              Может, так же сделать?
              Перед употреблением патча приводить его к божескому виду:) Тогда потихоньку оно отомрет вместе со старыми ветками. И наступит светлое радостное завтра!
              Ответить
              • на мелком проекте я бы просто всех построил. включая начальника.

                а на большом проекте... там в репы лузут около 120 человек из 3 отделов - да и еще и контрактники. скриптов вешать и не разрешат да и не кузяво это менять файл на чек-ине. (и я как правило первый кто такие идеи отстреливает уже на подлете.)
                Ответить
                • Я за внушение, но если оно не помогает (на корпоративный стиль оформления кода плюют, ироды!), то жесткие меры. Но опасно, да... Вот весело будет, когда indent файл зажует:)
                  Ответить
    • Почему не набежали анонимусы сраться из-за троеточия?
      Ответить
      • ... - говно
        Ответить
      • из за говна не сражаемся
        Ответить
        • дефис забыл.
          Ответить
        • - Скажите, поручик. Вы когда-нибудь стрелялись на дуэли из-за бабы?
          - Из-за дерева бывало-с, из-за бабы не помню.
          Ответить
          • представляю себе стреляющего из-за говна
            Ответить
      • троеточие нельзя выебать
        Ответить
        • А тебе лишь бы поне.
          Ответить
        • мы ебали всё, что можно
          кроме шила и гвоздя
          шило больно колет жопу
          а гвоздя ебать нельзя
          Ответить
          • стенка, стеночка моя
            заменю тебе гвоздя
            Ответить

    Добавить комментарий