Кресты / Говнокод #11368 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
input >> heap;
	while( heap[0] == '0' ) heap.erase( 0, 1 );

	heaps.push_back( heap );

	input >> heap;
	while( heap[0] == '0' ) heap.erase( 0, 1 );

	heaps.push_back( heap );

	input >> heap;
	while( heap[0] == '0' ) heap.erase( 0, 1 );

	heaps.push_back( heap );

Запостил: Fai Fai, (Updated )

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

  • // Повторенье - мать ученья.
    // Функции для ленивых.
    // Повторенье - мать ученья.
    // Функции для ленивых.
    // Повторенье - мать ученья.
    // Функции для ленивых.
    Ответить
      • Правильный индус, произнося эту мантру, должен не копипастить код, а набирать его с клавиатуры...
        Ответить
    • куда ты функцию воткнёшь?
      кресты не могут функцию в любом месте кода
      я тоже вынужден копипастить
      потому что впадлу листать вверх и в глобальном пространстве заводить говнофункцию
      Ответить
      • > куда ты функцию воткнёшь?
        - Тупо размещу в текущем модуле, и заключу в анонимный неймспейс (с++) или помечу как статик (с), если это чистая, и никому более не нужная функция.
        - Вынесу в приват в текущем классе, если ей надо иметь доступ ко многим членам класса.
        - Запилю отдельный класс\модуль, если она окажется достаточно обобщенной, и сможет пригодиться мне или кому-то еще во многих других ситуациях.

        > я тоже вынужден копипастить
        Не хочешь функцию - задача из топика отлично решается циклом от 0 до 2.

        > потому что впадлу листать вверх
        Есть такие интересные программки, IDE называются. Хватит уже насиловать труп ноутпада.
        Ответить
        • Это батл?
          - (1) Твои функции настолько тупые что их некуда засунуть!
          - (2) Твоя IDE настолько тупая, что не поддерживает навигацию!
          - (1) Твоя говнофункция настолько тупая, что мне впадлу её заводить!
          - (2) Твое программирование настолько тупое, что ты вручную развертываешь циклы!

          2:2 - ничья.
          Ответить
        • Тому, кто не работал с удобными локальными функциями в нормальных языках, не понять ограниченности С++.
          Ответить
          • Работал. В хаскеле. Действительно удобно. А та жалкая пародия на замыкания из нормальных языков, которая в паскале зовется локальной функцией - не особо и нужна.
            Ответить
            • Даже паскальные локальные функции намного удобнее, чем хренатень с локальными классами в С++.
              Ответить
              • Можно пример кода, в котором локальная функция действительно необходима?
                Ответить
          • >Тому, кто не работал с удобными локальными функциями в нормальных языках, не понять ограниченности С++.
            Local functions not suitable for test driven development. You can't test it.
            Ответить
        • Совет про макрос идеально вписывается в тематику этого сайта.
          Ответить
        • А после использования его можно андефнуть:
          #define A \
              input >> heap; \
              while( heap[0] == '0' ) heap.erase( 0, 1 ); \
              heaps.push_back( heap );
          A
          A
          A
          #undef A
          Ответить
  • А это точно говнокод? Ну запись цикла одной строкой это не так уж и страшно, а вообще очень похоже на неудачный мерж от СКВ.
    Ответить
    • Кажется, что как минимум можно было собрать функцию, которая получает input, heap и heaps (а может быть ещё какие параметры), и упрятать в неё код:
      input >> heap;
      while( heap[0] == '0' ) heap.erase( 0, 1 );
      heaps.push_back( heap );


      А затем вызвать функцию из цикла.

      Ваш Int/
      Ответить
      • пф
        а сделать сначала find_first_not_of или аналог, чтобы найти позицию первого не нуля, и лишь затем сделать erase, не?
        туда же - boost::algorithm::trim_left_if/trim_left_copy_if
        Ответить
        • Плевать как реализовывать, int прав - нужно выделить эти операции в функцию с хорошим названием.
          Ответить
      • Какой цикл? Я говорю что дублирования кода иногда появляются от того что системы контроля версий при обновлении ревизии не всегда правильно совмещают старый и новый код.
        Ответить
        • > не всегда правильно совмещают старый и новый код
          Зачем вы пользуетесь такими системами... Ни в git ни svn таких проблем никогда не встречал. Да, бывают мердж конфликты, но они к топику отношения не имеют, и о них система контроля сообщает в явном виде.
          Ответить
          • Встречал в СВН. В pom проекты все время добавлялся узел после мерджей - это был узел с настройкой surefire reports который нужно было всегда руками отключать на локальных машинах а у Дженкинса наоборот, включать обратно. Сначала все друг на друга грешили, что забываем, но потом провели эксперимент в присутствии независимых наблюдателей. После очередного коммита СВН таки произвольно добавил еще один узел вызывавший тесты после точно такого же, но закомментированного.

            Но, если честно, то у Гита мерджи вообще хреновые - пометить весь файл как изменившийся после изменения в одной-двух строках - такого сколько угодно случалось.
            Ответить
              • Кто чем, большинство работало с Идеей - наверное и коммиты делали через нее, а может и из графической оболочки типа контекстного меню. Я коммитил из p-svn (эмакс мод для работы с СВН), но иногда и просто из коммандной строки - что быстрее было. Там и эклипсом кто-то пользовался и студией. Проект большой...
                Ответить
                • IDE добавляла ваши узлы, инфа 100%
                  SVN-у вообще фиолетово, что там в ваших файлах лежит.
                  Ответить
                  • Я не знаю, если честно, мне все равно как именно это получилось. Мне очень сомнительно, что система контроля версий не имеет отношения к файлам, но я готов это списать на экзотические опеределения понятия файл, или возможно под SVN понималась страна в восточой Европе...
                    Ответить
            • > нужно было всегда руками отключать на локальных машинах а у Дженкинса наоборот, включать

              А профили мавеновские религия не позволила использовать?
              Ответить
              • Бессмысленно, закомментировать один тег быстрее, чем выбрать другой профайл. Тем более на каждую комбинацию из включить/отключить профайлов не наберешься.
                Ответить
                • Ой, да прям, один раз запихал дополнительный конфиг surface в профиль jenkins и на сервере с дженкинсом в ~/.m2/settings.xml дописал <activeProfile>jenkins</activeProfile>
                  Пять минут делов против часов недоразумений и кривых коммитов, ломающих билд.
                  Ответить
                  • Ну это ж сиюминутная работа. Сегодня кто-то добавил тесты, завтра его уволили, и его тесты выбросили, послезавтра пришла очень старательная девочка, которая написала 50 тестов транзакций трансформирующих миллионы фитюлек в одной базе в фитюльки в другой базе. Потом девочку тоже увлоли, но тесты не убрали и т.д. Если на каждый чих заводить по профайлу, то пом, надо сказать мало того, что уродская по своей гнилой сути и задумке система, так еще и написана финским гегзаметром: что ни действие += 100 строчек херни какой-нибудь добавить нужно.
                    В таком свете профайлы - это лишний мусор, где вместо того, чтобы следить за одним билдом, прийдется следить еще и за кучей профайлов (а что если супер-старательная девочка ошиблась профайлом и записала свои тесты не туда? а что если мудак, которого уволили собирал проект всегда со своим профайлом и менял конфигурацию сервера на свою, когда что-то не собиралось? и т.д.)
                    С мейвеном количество очень быстро переходит в плохое качество, т.как ну очень его много, а тестируемость самого мейвена нулевая.

                    В данном случае, высказываю не свое мнение, а отредактированный для пристойности пересказ со слов замечательной девушки заведовавшей в нашем отделении авотматическими сборками. Мне это все было высказано в ответ на попытку добавить профайл после мук вызванных бат скриптами написанными уволенным уродом и навечно застрявших где-то в билде.
                    Ответить
          • Поддерживаю: ни git, ни bazaar, ни merurial никогда меня так не подводили.
            SVN-ом не пользуюсь, может там действительно такие баги.
            Ведь бренчить и мержить там вроде как геморно.
            Ответить
              • Согласен, с другой стороны знатоком git себя не считаю, хотя единственная проблема которая возникла - попытка слить очень разные ветки.
                Сначала многое решал вручную, потом просто перестал доводить ветви до такого состояния.
                Но неудобств теперь никаких нет, полностью доволен. Жалею только, что не познакомился с git раньше.
                Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8