Лулзы из легаси кода

Тема в разделе "LANGS.C", создана пользователем Rel, 4 янв 2020.

  1. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Щас просматривал одни легаси сорсы одной компании, попросили меня баг им пофиксить. Так вот там некий гениальный из программистов для инкримента пишет: i+=+1 и i-=-1, эти конструкции ввели меня в ступор на несколько секунд, только спустя некоторое время до меня дошло, что это инкремент. Ппц, по голове бы сцаным венеком нахлестал этому кодеру, если бы делал код ревью этого. А какие ацкие вещи вы видели в легаси сорсах, которые вам доставались?
     
  2. LastNoob

    LastNoob Member

    Публикаций:
    0
    Регистрация:
    28 янв 2018
    Сообщения:
    80
    Это тоже инкремент, наверное... ибо минус на минус)

    Люблю код на подобии

    Код (Text):
    1. if(a = b){
    2. ...
    3. }
    Казалось, бы, операция сравнения, а на деле - присвоение, практически всегда дает True, как-то чуть с ума не сошел от такой заначки, на языках более высокого уровня автоматически выдает ошибку, а вот на си - спокойно компилит
     
  3. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Да-да, я же написал, что он делает инкременты таким образом.
     
  4. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Я не спец по сишке, но это какая то странная конструкция. Если бы это было разыменование, то у операции был бы смысл, те обращение по ссылке и inc/dec.
     
  5. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Даже догадываюсь зачем. Меня в универе когда-то учили помещать всё тело цикла в его кондишны и оставлять пустые {}, и это даже преподносилось как правильный почерк. Для этого очень удобно, когда операция присвоения дает true. Вообще если задача писать исходный код, соответствующий каким-то стандартам, не ставится, человек как бы может писать как ему больше нравится. А все претензии и лулзы можно направлять своему ссаному венику.
     
  6. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Ну это как минимум забавно, представь ситуацию, что тебя научили в инсте писать так, как ты описал, находишь после инста работу джуниором и начинаешь писать код в таком стиле для своей новой компании. Вопрос: уволят ли тебя сразу, или будут переучивать?
     
  7. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Специальность была не программистская, так что нормально. Глядя на то, какую хрень прививают другим (типа фибоначчи без букв алфавита), это еще не плинтус.
     
    2Hard2Forget нравится это.
  8. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Хах, да, я даже немного скучаю по этому персонажу и его бредовым задачам.
     
  9. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    из забавного
    1) имена переменных типа : schetchik, или cikl
    2) конструкции вида if (b_var == true) где b_var переменная типа bool
    3) комментарии попадались забавные типа: i++; //increment counter
     
  10. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Тут на реддите изобрели новый способ сделать инкремент на сишечке и плюсах - в самом правом столбике (сам пока не тестил, не уверен, что семантика инкремента сохраняется):
    [​IMG]
     
    Indy_ нравится это.
  11. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    Стрёмно представить что получится с выборкой в память с таким кривым скриптом или это фичи его хз. Хотя там по мойму просто логическое выражение, которое можно сократить(свернуть те). Но это не важно(не наглядно и не понятно).
     
  12. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Вообще говоря, ни в одном из указанных случаев ничего не должно случиться, тк все эти выражения должны соптимизироваться в обычный инкремент регистра.
    --- Сообщение объединено, 23 янв 2020 ---
    на самом деле все становится просто, если расставить скобки по дурацким правилам сишечки:
    Код (Text):
    1. i=!i?!i*!i:i+!!i;
    2. i = (!i) ? (!i * !i) : (i + !!i);
    3. // что эквивалентно:
    4. if(i == 0) { i = !i * !i; }
    5. else { i = i + !!i; }
    6. // что эквивалентно:
    7. if(i == 0) { i = 1 * 1; }
    8. else { i = i + 1; }
     
    Последнее редактирование: 23 янв 2020
  13. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    > i = (!i) ? (!i * !i) : (i + !!i);

    У вас случаем психиатра нет знакомого, в универе ведь должен быть факультет ?
    --- Сообщение объединено, 23 янв 2020 ---
    Rel,

    Да чуть не забыл тут в модерах матан есть, который такие выражения переварит как два пальца. Там предел конечно есть, но такое думаю сможет :laugh2:
     
    Последнее редактирование: 23 янв 2020
  14. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Психиатры знакомые есть, но не в РБ к сожалению, я бы тебя с удовольствием на принудительное лечение отправил, будь моя воля. Ты бы там отдохнул, попил веществ, психологам про визоры и всякие моторы рассказал бы. Вообще странное дело, что в СНГ почему-то постыдным считается обращение к психиатрам, хотя они в целом могут помочь со многими вещами в жизни. Например, есть знакомый, у которого от нервов образовалась язва желудка, долго пытался ее лечить у гастроэнтеролога, сидел на диетах, жрал таблетки. Потом случайно выяснил, что это от нервов, попил тройку месяцев вещества, что ему выписал психиатр, и все наладилось. Правда бухать и жрать фастфуд он все равно не может, но это даж к лучшему.
     
    Indy_ нравится это.
  15. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Не думаю что в рб проблема найти психиатра, тут диспансеры на каждом шагу, еще какие-то клиники за колючей проволокой, и традиции принудительного лечения походу тоже сохранились.

    Мля, походу это мой случай, прямо хоть иди сдаваться, как раз рядом с домом.
     
  16. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

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

    ormoulu,

    Тут по псих примитив, методы 40-х годов прошлого века, можно назвать методом брута(подбор препарата). Лишь в частной клиники сказали без мрт головы не приходить, а в гос такое не нужно, препарат подберут https://wasm.in/threads/kraeugolnyj...-soznanija-zalozhon.33201/page-10#post-415316
    Мне когда то подобрали хороший(флюанксон вроде), тогда я на себе понял почему люди вскрываются и что такое ощущение времени.

    Почему то все темы уходят в псих :preved:
     
  17. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Такие времена, да и люди здесь своеобразные собрались.

    Попробуй обратиться, как бы без серьезных проблем (типа шизофрении и других стремных диагнозов) тебя никто никуда не упечёт и насильно лечить не будет.
     
  18. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Сначала таки подамся на внж, а то кто их знает, поставят на учет и завернут потом.
     
  19. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Не совсем сорсы, но почерк дебила видно и под микроскопом.
    изображение_2022-04-16_063220.png

    Код (C):
    1. void memcpy00000DAA(BYTE* dst,BYTE* src,DWORD size){
    2.     for(int i=0;i<size;i++)dst[i]=src[i]
    3. }
    4. void f_000049F0(BYTE* dst,BYTE* src,DWORD size){
    5.     for(int i=0;i<(size>>2);i++)memcpy00000DAA(src[i<<2],dst[i<<2],4);
    6. }
    7. ...
    8. f_000049F0(somedst,somersc,somesize_dwords<<2);
     
  20. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Это же не на ассемблере писалось? Макросы наверное.
    Что за прошивка?