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

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

  1. Rel

    Rel Well-Known Member

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

    LastNoob Member

    Публикаций:
    0
    Это тоже инкремент, наверное... ибо минус на минус)

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

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

    Rel Well-Known Member

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

    Indy_ Well-Known Member

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

    f13nd Well-Known Member

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

    Rel Well-Known Member

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

    f13nd Well-Known Member

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

    Rel Well-Known Member

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

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

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

    Rel Well-Known Member

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

    Indy_ Well-Known Member

    Публикаций:
    4
    Rel,

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

    Rel Well-Known Member

    Публикаций:
    2
    Вообще говоря, ни в одном из указанных случаев ничего не должно случиться, тк все эти выражения должны соптимизироваться в обычный инкремент регистра.
    --- Сообщение объединено, 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
    Rel,

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

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

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

    Rel Well-Known Member

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

    ormoulu Well-Known Member

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

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

    Indy_ Well-Known Member

    Публикаций:
    4
    Rel,

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

    ormoulu,

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

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

    Rel Well-Known Member

    Публикаций:
    2
    Такие времена, да и люди здесь своеобразные собрались.

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

    ormoulu Well-Known Member

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

    f13nd Well-Known Member

    Публикаций:
    0
    Не совсем сорсы, но почерк дебила видно и под микроскопом.
    изображение_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
    Это же не на ассемблере писалось? Макросы наверное.
    Что за прошивка?