1. Лучший говнокод

    В номинации:
    За время:
  2. C# / Говнокод #8006

    +136

    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
    eax = esp;
                    if (gB(eax + 0x19) == 0) {
                        uint edx = gD(eax + 8);
                        if (gB(edx + 0x19) == 0) {
                            eax = gD(edx);
                            if (gB(eax + 0x19) == 0) {
                                do {
                                    edx = eax;
                                    eax = gD(edx);
                                }
                                while (gB(eax + 0x19) == 0);
                            }
                            esp = edx;
                            //ret
                        }
                        else {
                            eax = gD(eax + 4);
                            if (gB(eax + 0x19) == 0) {
                                do {
                                    edx = esp;
                                    if (edx != gD(eax + 8)) break;
                                    esp = eax;
                                    eax = gD(eax + 4);
                                }
                                while (gB(eax + 0x19) == 0);
                            }
                            esp = eax;
                        }
                    }
                    eax = esp;

    X: я занялся написанием научной фантастики)
    Y: АИ? ИИ?
    X: /*код!!!111*/
    Y: декомпилятор пишешь?
    X: декомпилятор это не фантастика
    это реальность
    Y: А что пишешь?
    X: а это я сам не знаю что это)
    вообщем, в игре на земле валяются предметы
    нужно найти как они расположены в памяти
    Y: Это результат декомпиляции или что это?
    X: обычно это либо eax, [eax + idi * 4]
    или что то в этом духе
    просто постраничное считывание
    типа eax, [eax]
    eax, [eax]
    eax, [eax]
    а тут ни то ни другое)
    сама игра ищет предметы по какой то безумной логике
    Y: Это ты написал программы и обозвал так свои переменные?
    X: да)
    вообщем
    мне стало лень разбираться
    что и как делает игрушка
    и я просто скопировал код
    из дизасма
    в С№
    и перебил под синтаксис)
    на удивление четко работает)

    Говногость, 27 Сентября 2011

    Комментарии (47)
  3. C# / Говнокод #7855

    +964

    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
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    using System;
    using System.Reflection;
    using System.Reflection.Emit;
    
    namespace DynUnloop
    { // Суммирование в цикле
      class SumLooping
      { public int Summ(int valMax)
        { int result = 0;
          for (int i = 0; i <= valMax; i++)
            result += i;
          return result;
        }
      }
    
      // Плоское суммирование
      class SumFlat
      { interface ISumCode
        { int ComputeSumm(int valMax);
        }
        void WriteCode(int valMax)
        { AssemblyName assemblyName = new AssemblyName();
          assemblyName.Name = "SumFlatAssembly";
    
          AssemblyBuilder assemblyBuilder = 
            AppDomain.CurrentDomain.DefineDynamicAssembly(
            assemblyName, AssemblyBuilderAccess.Run);
    
          ModuleBuilder moduleBuilder = 
            assemblyBuilder.DefineDynamicModule("SumFlatModule");
    
          TypeBuilder typeBuilder = 
            moduleBuilder.DefineType("SumFlatClass"
                        , TypeAttributes.Public);
    
          typeBuilder.AddInterfaceImplementation(typeof(ISumCode));
    
          /// Задаём возвращаемое зачение и параметр
          Type[] paramTypes = { typeof(int) };
          Type   returnType = typeof(int);
    
          MethodBuilder methodBuilder = 
            typeBuilder.DefineMethod("ComputeSumm"
              , MethodAttributes.Public 
              | MethodAttributes.Virtual
              , returnType, paramTypes);
    
          ILGenerator il = methodBuilder.GetILGenerator();
    
          // Генерируем плоский код.
          il.Emit(OpCodes.Ldc_I4, 0);
          for (int i = 1; i <= valMax; i++)
          { il.Emit(OpCodes.Ldc_I4, i);
            il.Emit(OpCodes.Add);
          }
          il.Emit(OpCodes.Ret);
    
          // Перекрываем метод ComputeSumm и создаём тип SumFlatClass.
          MethodInfo methodInfo = 
                     typeof(ISumCode).GetMethod("ComputeSumm");
          typeBuilder.DefineMethodOverride(methodBuilder, methodInfo);
          typeBuilder.CreateType();
    
          /// Код готов, создаём объект и берем его интерфейс.
          code = (ISumCode)assemblyBuilder.CreateInstance("SumFlatClass");
        }
    
        public int Summ(int val)
        { if (this.code == null)
            WriteCode(val);
          return this.code.ComputeSumm(val);
        }
    
        ISumCode code;
      }

    Оригинальный стиль кода и комментарии сохранёны. (с), или как там.
    В коде - разворачивание цикла в "плоский" IL код, который, как доказывается должен выигрывать по производительности.

    Elvenfighter, 13 Сентября 2011

    Комментарии (47)
  4. Java / Говнокод #6946

    +85

    1. 1
    String methodName = (new Exception()).getStackTrace()[1].getMethodName();

    Вот как надо получать имя метода. Это вам не __func__ ...

    roman-kashitsyn, 14 Июня 2011

    Комментарии (47)
  5. bash / Говнокод #6437

    −118

    1. 1
    2. 2
    xxx: Знакомый попал в дтп, спорная ситуация, отдал гайцам флешку из регистратора, опечатали в конверт.
    xxx: Гайцы внимательно изучили - признали невиновность по ДТП, и за одно наштрафовали на много тысяч по 4 случаям записанным на флешке и в конце концов лишили прав за встречку, записанную в начале дня.

    fuckyounoob, 21 Апреля 2011

    Комментарии (47)
  6. Pascal / Говнокод #5668

    +107

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    procedure proc(a, b: integer);
    begin
    end;
    
    proc(1, 2,); // лишняя запятая после 2  !!!!11

    на Delphi7 компилится и работает!!! Я в шокенах, 8 лет на Делфи и не знал...

    StriderMan, 14 Февраля 2011

    Комментарии (47)
  7. PHP / Говнокод #4963

    +154

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    $src = fopen("0.txt", 'r');
    while(!feof($src))
    {
            $line[] = fgets($src);
            $line++;
    }

    Интересно чему в конце будет равно $line? :)

    Xander_Bass, 17 Декабря 2010

    Комментарии (47)
  8. Си / Говнокод #4713

    +145

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    /*----------------------------------------------------------------------------*/
    double XzMinSec( double XBOCT, unsigned int OKP){ /*Gr(Ch).dG(dC)->Gr(Ch)MS.dS*/
    signed int  min,  xz = XBOCT; XBOCT-=xz; min=60*XBOCT;  XBOCT=(XBOCT*60-min)*60;
    if (XBOCT>=59.5) { unsigned char teg[32]; double n =  pow(10,OKP) * (XBOCT-min);
    signed int z=n;n-=z; if(n>=0.5||n<=-0.5){ signed int x,y=0; sprintf(teg,"%d",z);
    while(teg[y]!='\0') y++;  z=1; for( x=0; x<OKP; x++ )  if ( teg[--y]!='9' ) z=0;
    if(z==1) if(abs(min)==59) if(min<0) XBOCT=-4100; else XBOCT=4100; else if(min<0)
    XBOCT=-100; else XBOCT=100; }}     return  xz * 10000  +  min * 100  +  XBOCT; }
    /*----------------------------------------------------------------------------*/

    гм... работает...

    BeardRED, 22 Ноября 2010

    Комментарии (47)
  9. PHP / Говнокод #4619

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    switch ($mode) {
                default:
                <не интересный код пропущен>
                break;
    }

    Догайтесь с какого это проекта?

    Я бы не запостил, если бы не увидел на хабре сообщение от некоторого striker_vlad:
    "буду рад, если найдете там что-то, что можно будет напостить на сам сайт ;)"

    Oleg_quadro, 13 Ноября 2010

    Комментарии (47)
  10. bash / Говнокод #3601

    −132

    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
    #!/bin/sh
    
    # ...
    
    # translate args from unix path to windows, if possible (eterbug #4933)
    args_to_winpath()
    {
        for i in "$@" ; do
            local TP="$i"
            local TR=${i/\~/$HOME}
            if [ -r "$TR" ] ; then
                WP=$(winepath -w "$TR" 2>/dev/null)
                [ -z "$WP" ] || TP="$WP"
            fi
            echo "$TP"
        done
    }
    
    # ...
    
    run_wine $(args_to_winpath "$@")

    Это WINE@Etersoft. Люди пытались преобразовать системные пути в командной строке во внутренние вайновские. В результате из C:\Program Files больше ничего не запускается.

    raorn, 30 Июня 2010

    Комментарии (47)
  11. C++ / Говнокод #3570

    +169

    1. 1
    2. 2
    3. 3
    4. 4
    //reversed for sorting
        inline bool operator< (const Weight & other) const {
            return (GetValue() > other.GetValue());
        };

    ton4eg, 25 Июня 2010

    Комментарии (47)