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

    +58.4

    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 b__bl {
    #define e__bl }
    
    #define b__st {
    #define e__st }
    
    #define b__un {
    #define e__un }
    ...
    #define end_if else ;
    
    // Один коротенький метод
    
    void  Sud::vosstkdr()
    b__fu  int i=0, imv=0, imasOut=0, lpovt;
      for(; i<isl; i++) b__fo
        if(imv < lmv)
          if(i==(Pmvosst=mvosst+imv)->imkdrish)
    	{  lpovt=Pmvosst->nvosst+1; imv++;}
          else lpovt=1;
        else lpovt=1;
        for(int k=0; k<lpovt; k++) b__fo
          masOut[imasOut] = mkdrish[i];
          if(mdm) if(++imasOut == 35) return; end_if
          else    if(++imasOut == 32) return; end_if
        e__fo
      e__fo
    e__fu

    Вот так у нас пишет один матёрый программист (юникс). Привёл для примера коротенький метод.
    Особое внимание заслуживает идентификатор mkdrish. Это какая-то комбинация слов "массив", "кадр", "short"

    Запостил: Dimarius, 02 Сентября 2009

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

    • оторвать всё что можно
      Ответить
    • Ну мотивация его так-то понятна...
      Только уж больно извращенно
      Ответить
    • end_if хорош. Странно, что коммитет по стандартизации ANSI С++ не ввёл это в стандарт...
      Ответить
    • А комментарий после закрывающей скобки (к чему она относится) писать уже не кошерно?
      Ответить
    • Доблоёб.
      Ответить
      • Во все комментариях от Вас, что я только вижу, вы постоянно только материтесь, а ничего по делу не говорите... Надоедает :)
        Ответить
    • программист на дельфи со стажем detected
      Ответить
    • Хм. Мотивация пожалуй понятна, но зачем это делать если подстановки всё равно в скобочки превращаются и компилятор этот процесс не отслеживает. Пусть компилятор корректность отслеживает - нужна же польза от define.
      #define b__fu {bool foo=true;
      #define e__fu cout << foo << '\n';}

      #define b__fo {bool for_=true;
      #define e__fo cout << for_ << '\n';}
      Если ошибётся в названии закрывающей скобки - программа не скомпилится.
      Ответить

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