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

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

    +170

    1. 1
    const volatile void

    Тибетская философия С++. Постоянная изменчивая пустота.

    Говногость, 20 Июня 2010

    Комментарии (83)
  3. Pascal / Говнокод #3143

    +102

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    // тут обычный паскалевский код...
    if x > y then asm // если икс больше игрека
      mov eax, x  // то меняем их значения местами
      mov edx, y
      mov x, edx
      mov y, eax
    end;

    Как поменять значения двух целочисленных переменных, не заводя третью? Года 3 назад я делал примерно так.

    TarasB, 01 Мая 2010

    Комментарии (83)
  4. Python / Говнокод #28524

    +1

    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
    def __get_column_names(table: str) -> tuple:
        try:
            with conn:
                cur.execute("SELECT name FROM PRAGMA_TABLE_INFO(?)", (table,))
                column_names = cur.fetchall()
        except Exception as excpt:
            print(excpt)
        column_names = tuple(i[0] for i in column_names)
        return column_names
    
    
    def db_register_user(user_data: types.User):
        """
        SQL запрос для внесения данных о пользователе
    
        Args:
            user_data: telebot User объект, содержащий словарь с параметрами пользователя
        """
        user_data = user_data.to_dict()
        column_names: tuple = __get_column_names('Users')
        user_values = tuple(user_data.get(key) for key in column_names if key in user_data)
        try:
            with conn:
                query = 'INSERT INTO Users cn'.replace('cn', str(column_names))+' VALUES (?,?,?,?,0,3)'
                parameters = (*user_values,)
                conn.execute(query, parameters)
        except Exception as excpt:
            print(excpt)
        conn.close()

    На сколько в такой ситуации .format не безопасен? Идея в том, чтобы не объебошится программисту в коде введя неверное значение колонки. Для этого имена колонок берутся из самой базы (есть мысль ещё и типы брать). Есть вариант реализации получше? Спасибо

    rockkley94, 26 Декабря 2022

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

    +1

    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
    from vk_bot.vk_config import GROUP_ID, TOKEN
    import vk_api
    from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
    import random
    from vk_bot.db_session import *
    from vk_bot.__all_models import BugReport, Comment
    import datetime
    from vk_bot.vacancies import get_vacancies, ServerError
    
    
    def main():
        global_init("feedback/feedback.sqlite")
        vk_session = vk_api.VkApi(
            token=TOKEN)
        vk = vk_session.get_api()
    
        longpoll = VkBotLongPoll(vk_session, GROUP_ID)
        bot_state = {}
    
        def send_msg(msg):
            vk.messages.send(user_id=event.obj.message['from_id'],
                             message=msg,
                             random_id=random.randint(0, 2 ** 64))
    
        for event in longpoll.listen():
            if event.type == VkBotEventType.MESSAGE_NEW:
                if event.obj.message['from_id'] in bot_state and bot_state[event.obj.message['from_id']]:
                    state = bot_state[event.obj.message['from_id']]
                    if state == 1:
                        send_msg('Спасибо, ваше мнение для нас очень важно.')
                        Comment().new(event.obj.message['from_id'], datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
                                      event.obj.message['text'])
                        bot_state[event.obj.message['from_id']] = 0
                    elif state == 2:
                        BugReport().new(event.obj.message['from_id'], datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
                                        event.obj.message['text'])
                        send_msg('Спасибо за ваш отзыв, мы постараемся исправить проблему в ближайшем будущем.')
                        bot_state[event.obj.message['from_id']] = 0
                    elif state == 4:
                        parameters = [r.strip() for r in event.obj.message['text'].split(',')]
                        try:
                            vacancies = get_vacancies(parameters[0], parameters[1])
                        except ServerError:
                            send_msg('Не удалось получить ответ от сервера, попробуйте позже')
                            bot_state[event.obj.message['from_id']] = 0
                        except Exception:
                            send_msg('Данные введены некорректно, попробуйте заново.')
                            send_msg('Формат: <должность>, <мин. зарплата>')
                        else:
                            if len(vacancies) == 0:
                                send_msg('По данным критериям ничего не найдено')
                            else:
                                vacancy_list = [f"{i}) {v['title']}, {v['salary']}" for i, v in enumerate(vacancies)]
                                send_msg('\n'.join(vacancy_list))
    
                    if bot_state[event.obj.message['from_id']] == 0:
                        send_msg('1 - написать отзыв или предложение\n 2 - сообщить о неправильной работе сайта\n 3 - документация к api\n 4 - посмотреть список доступных вакансий\n иначе напишите сообщение и модератор вскоре на него ответит')
    
                elif event.obj.message['from_id'] not in bot_state:
                    send_msg('1 - написать отзыв или предложение\n 2 - сообщить о неправильной работе сайта\n 3 - документация к api\n 4 - посмотреть список доступных вакансий\n иначе напишите сообщение и модератор вскоре на него ответит')
                    bot_state[event.obj.message['from_id']] = 0
                else:
                    key = event.obj.message['text'][0]
                    if key == '1':
                        send_msg('Пожалуйста, поделитесь вашим мнением по поводу сайта.')
                        bot_state[event.obj.message['from_id']] = 1
                    elif key == '2':
                        send_msg('Пожалуйста, максимально подробно опишите вашу проблему.')
                        bot_state[event.obj.message['from_id']] = 2
                    elif key == '3':
                        send_msg('https://www.youtube.com/watch?v=dQw4w9WgXcQ')
                    elif key == '4':
                        send_msg('Введите название должности и минимальную желаемую зарплату по образцу:<должность>, <мин. зарплата>')
                        bot_state[event.obj.message['from_id']] = 4
                    else:
                        send_msg('Модератор вам скоро ответит, пожалуйста подождите.')
    
    
    if __name__ == '__main__':
        main()

    Код бота поддержки.
    Один из товарищей по проекту ничего в нем не делал,
    а потом чтобы его не выгоняли попросил дать ему хотя бы бота.
    Вот результат.
    Модели и вспомогательные файлы оставлять думаю не имеет смысла, все и так очевидно

    AlexandrovRoman, 13 Мая 2020

    Комментарии (82)
  6. Куча / Говнокод #25722

    0

    1. 1
    2. 2
    Vistefan, пойдёшь дядьку навестить?
    https://habr.com/ru/company/jugru/blog/455936/

    BoeHHblu_nemyx, 16 Июля 2019

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

    −6

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    + (NSString*)enumToString:(SomeEnum)someEnumValue
    {
    	NSDictionary *strings =
    	@{
    		@(SomeEnumUndefined) : @"Undefined",
    		@(SomeEnumValue1) : @"Value1",
    		@(SomeEnumValue2) : @"Value2",
    		// Ещё 100500 пар
    	};
    
    	return strings[@(someEnumValue)];
    }

    Имена изменены, но смысл понятен. Точнее, непонятен.

    Desktop, 14 Апреля 2018

    Комментарии (82)
  8. PHP / Говнокод #20303

    +6

    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
    $query_list_builder = array(
    	'1000' => " and account = $account_id and creator = $creator_id",
    	'0100' => " and account = $account_id and salepoint = $salepoint_id and creator <> $creator_id ",
    	'0010' => " and account = $account_id and creator <> $creator_id and salepoint <> $salepoint_id ",
    	'0001' => " and account IN ($watchlist) and creator <> $creator_id and salepoint <> $salepoint_id and account <> $account_id ",
    
    	'1100' => " and salepoint = $salepoint_id or creator = $creator_id and account = $account_id ",
    	'1010' => " and account = $account_id and salepoint <> $salepoint_id or creator = $creator_id ",
    	'1001' => " and account IN ($watchlist) and account <> $account_id or creator = $creator_id ",
    
    	'1110' => " and account = $account_id or creator = $creator_id and salepoint = $salepoint_id ",
    	'1101' => " and account IN ($watchlist) and account <> $account_id or creator = $creator_id or salepoint = $salepoint_id ",
    
    	'1111' => " and account IN ($watchlist) or account = $account_id or creator = $creator_id or salepoint = $salepoint_id ",
    	'0000' => " and creator <> $creator_id and salepoint <> $salepoint_id and account NOT IN ($watchlist) ",
    
    	'0011' => " and account IN ($watchlist) and salepoint <> $salepoint_id and creator <> $creator_id ",
    	'0111' => " and account IN ($watchlist) and creator <> $creator_id ",
    	'0110' => " and account = $account_id and creator <> $creator_id ",
    	'0101' => " and account IN ($watchlist) and account <> $account_id or salepoint = $salepoint_id and creator <> $creator_id ",
    	'1011' => " and account IN ($watchlist) and salepoint <> $salepoint_id or creator = $creator_id ",
    );

    daniser, 30 Июня 2016

    Комментарии (82)
  9. C# / Говнокод #20075

    +6

    1. 1
    https://github.com/pascalabcnet/pascalabcnet

    ШОК! Говном компилируется говно. Это рекорд

    dm_fomenok, 25 Мая 2016

    Комментарии (82)
  10. Куча / Говнокод #19922

    +5

    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
    op =: (*&_1@|.@],[)/
    do =:  >:@>@{. ; op@>@{:
    check =: *./@(>:&0)*.*./@(2&(</\))
    ((,do@{:)`]@.(check@>@{:@{:))^:_ (,: do)0&;(i. 36)
    
    
    ┌──┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │0 │0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35                                   │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │1 │_1 _3 _5 _7 _9 _11 _13 _15 _17 _19 _21 _23 _25 _27 _29 _31 _33 _35 34 32 30 28 26 24 22 20 18 16 14 12 10 8 6 4 2 0                 │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │2 │3 7 11 15 19 23 27 31 35 _32 _28 _24 _20 _16 _12 _8 _4 0 2 6 10 14 18 22 26 30 34 _33 _29 _25 _21 _17 _13 _9 _5 _1                  │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │3 │_7 _15 _23 _31 32 24 16 8 0 _6 _14 _22 _30 33 25 17 9 1 _5 _13 _21 _29 34 26 18 10 2 _4 _12 _20 _28 35 27 19 11 3                   │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │4 │15 31 _24 _8 6 22 _33 _17 _1 13 29 _26 _10 4 20 _35 _19 _3 11 27 _28 _12 2 18 34 _21 _5 9 25 _30 _14 0 16 32 _23 _7                 │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │5 │_31 8 _22 17 _13 26 _4 35 3 _27 12 _18 21 _9 30 0 _32 7 _23 16 _14 25 _5 34 2 _28 11 _19 20 _10 29 _1 _33 6 _24 15                  │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │6 │_8 _17 _26 _35 27 18 9 0 _7 _16 _25 _34 28 19 10 1 _6 _15 _24 _33 29 20 11 2 _5 _14 _23 _32 30 21 12 3 _4 _13 _22 _31               │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │7 │17 35 _18 0 16 34 _19 _1 15 33 _20 _2 14 32 _21 _3 13 31 _22 _4 12 30 _23 _5 11 29 _24 _6 10 28 _25 _7 9 27 _26 _8                  │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │8 │_35 0 _34 1 _33 2 _32 3 _31 4 _30 5 _29 6 _28 7 _27 8 _26 9 _25 10 _24 11 _23 12 _22 13 _21 14 _20 15 _19 16 _18 17                 │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │9 │0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28 _29 _30 _31 _32 _33 _34 _35│
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │10│1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 _34 _32 _30 _28 _26 _24 _22 _20 _18 _16 _14 _12 _10 _8 _6 _4 _2 0                  │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │11│_3 _7 _11 _15 _19 _23 _27 _31 _35 32 28 24 20 16 12 8 4 0 _2 _6 _10 _14 _18 _22 _26 _30 _34 33 29 25 21 17 13 9 5 1                 │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │12│7 15 23 31 _32 _24 _16 _8 0 6 14 22 30 _33 _25 _17 _9 _1 5 13 21 29 _34 _26 _18 _10 _2 4 12 20 28 _35 _27 _19 _11 _3                │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │13│_15 _31 24 8 _6 _22 33 17 1 _13 _29 26 10 _4 _20 35 19 3 _11 _27 28 12 _2 _18 _34 21 5 _9 _25 30 14 0 _16 _32 23 7                  │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │14│31 _8 22 _17 13 _26 4 _35 _3 27 _12 18 _21 9 _30 0 32 _7 23 _16 14 _25 5 _34 _2 28 _11 19 _20 10 _29 1 33 _6 24 _15                 │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │15│8 17 26 35 _27 _18 _9 0 7 16 25 34 _28 _19 _10 _1 6 15 24 33 _29 _20 _11 _2 5 14 23 32 _30 _21 _12 _3 4 13 22 31                    │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │16│_17 _35 18 0 _16 _34 19 1 _15 _33 20 2 _14 _32 21 3 _13 _31 22 4 _12 _30 23 5 _11 _29 24 6 _10 _28 25 7 _9 _27 26 8                 │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │17│35 0 34 _1 33 _2 32 _3 31 _4 30 _5 29 _6 28 _7 27 _8 26 _9 25 _10 24 _11 23 _12 22 _13 21 _14 20 _15 19 _16 18 _17                  │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │18│0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35                                   │
    └──┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

    В общем суть такова...

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

    И тут я подумал - а сколько раз нужно проделать такие манипуляции что бы колода вернулась в исходное состояние? - открыл j, и...

    kegdan, 03 Мая 2016

    Комментарии (82)
  11. PHP / Говнокод #15808

    +157

    1. 1
    setcookie('password', $passHash , time() + $this::TIME_COOKIE * 1000 +  $remember ? $this::TIME_COOKIE_REMEMBER : 0  * 1000 );

    И я то думал, почему кука не появляется...

    Dart_Sergius, 21 Апреля 2014

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