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

Discussion in 'LANGS.C' started by Rel, Jan 4, 2020.

  1. Rel

    Rel Well-Known Member

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

    LastNoob Member

    Blog Posts:
    0
    Joined:
    Jan 28, 2018
    Messages:
    80
    Это тоже инкремент, наверное... ибо минус на минус)

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

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

    Rel Well-Known Member

    Blog Posts:
    2
    Joined:
    Dec 11, 2008
    Messages:
    5,317
    Да-да, я же написал, что он делает инкременты таким образом.
     
  4. Indy_

    Indy_ Well-Known Member

    Blog Posts:
    4
    Joined:
    Apr 29, 2011
    Messages:
    4,788
    Я не спец по сишке, но это какая то странная конструкция. Если бы это было разыменование, то у операции был бы смысл, те обращение по ссылке и inc/dec.
     
  5. f13nd

    f13nd Well-Known Member

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

    Rel Well-Known Member

    Blog Posts:
    2
    Joined:
    Dec 11, 2008
    Messages:
    5,317
    Ну это как минимум забавно, представь ситуацию, что тебя научили в инсте писать так, как ты описал, находишь после инста работу джуниором и начинаешь писать код в таком стиле для своей новой компании. Вопрос: уволят ли тебя сразу, или будут переучивать?
     
  7. f13nd

    f13nd Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 22, 2009
    Messages:
    2,020
    Специальность была не программистская, так что нормально. Глядя на то, какую хрень прививают другим (типа фибоначчи без букв алфавита), это еще не плинтус.
     
    2Hard2Forget likes this.
  8. Rel

    Rel Well-Known Member

    Blog Posts:
    2
    Joined:
    Dec 11, 2008
    Messages:
    5,317
    Хах, да, я даже немного скучаю по этому персонажу и его бредовым задачам.
     
  9. TermoSINteZ

    TermoSINteZ Синоби даоса Staff Member

    Blog Posts:
    2
    Joined:
    Jun 11, 2004
    Messages:
    3,568
    Location:
    Russia
    из забавного
    1) имена переменных типа : schetchik, или cikl
    2) конструкции вида if (b_var == true) где b_var переменная типа bool
    3) комментарии попадались забавные типа: i++; //increment counter
     
  10. Rel

    Rel Well-Known Member

    Blog Posts:
    2
    Joined:
    Dec 11, 2008
    Messages:
    5,317
    Тут на реддите изобрели новый способ сделать инкремент на сишечке и плюсах - в самом правом столбике (сам пока не тестил, не уверен, что семантика инкремента сохраняется):
    [​IMG]
     
    Indy_ likes this.
  11. Indy_

    Indy_ Well-Known Member

    Blog Posts:
    4
    Joined:
    Apr 29, 2011
    Messages:
    4,788
    Rel,

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

    Rel Well-Known Member

    Blog Posts:
    2
    Joined:
    Dec 11, 2008
    Messages:
    5,317
    Вообще говоря, ни в одном из указанных случаев ничего не должно случиться, тк все эти выражения должны соптимизироваться в обычный инкремент регистра.
    --- Сообщение объединено, Jan 23, 2020 ---
    на самом деле все становится просто, если расставить скобки по дурацким правилам сишечки:
    Code (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; }
     
    Last edited: Jan 23, 2020
  13. Indy_

    Indy_ Well-Known Member

    Blog Posts:
    4
    Joined:
    Apr 29, 2011
    Messages:
    4,788
    Rel,

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

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

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

    Rel Well-Known Member

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

    ormoulu Well-Known Member

    Blog Posts:
    0
    Joined:
    Jan 24, 2011
    Messages:
    1,206
    Не думаю что в рб проблема найти психиатра, тут диспансеры на каждом шагу, еще какие-то клиники за колючей проволокой, и традиции принудительного лечения походу тоже сохранились.

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

    Indy_ Well-Known Member

    Blog Posts:
    4
    Joined:
    Apr 29, 2011
    Messages:
    4,788
    Rel,

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

    ormoulu,

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

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

    Rel Well-Known Member

    Blog Posts:
    2
    Joined:
    Dec 11, 2008
    Messages:
    5,317
    Такие времена, да и люди здесь своеобразные собрались.

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

    ormoulu Well-Known Member

    Blog Posts:
    0
    Joined:
    Jan 24, 2011
    Messages:
    1,206
    Сначала таки подамся на внж, а то кто их знает, поставят на учет и завернут потом.
     
  19. f13nd

    f13nd Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 22, 2009
    Messages:
    2,020
    Не совсем сорсы, но почерк дебила видно и под микроскопом.
    изображение_2022-04-16_063220.png

    Code (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

    Blog Posts:
    0
    Joined:
    Jan 24, 2011
    Messages:
    1,206
    Это же не на ассемблере писалось? Макросы наверное.
    Что за прошивка?