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

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Ритчи, Томпсон, [s]Страуструп[/s] всё-таки охуенные дедки.
    Приклоняюсь перед ними.
    Придумали хуету хуй знает когда, которую, спустя 50 лет
    хуй кто смог переплюнуть. Ничего лучше за это время придумали.
    (Кроме «PHP», разумеется)
    И вряд ли придумают ещё лет сто.

    LinuxGovno, 10 Августа 2018

    Комментарии (18)
  3. Куча / Говнокод #24548

    −1

    1. 1
    Я 20 и мне бородат. :)

    Да будет хохлосрач!11

    shite, 27 Июля 2018

    Комментарии (18)
  4. Куча / Говнокод #24480

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    // Making Wrong Code Look Wrong
    // by Joel Spolsky
    // https://www.joelonsoftware.com/2005/05/11/making-wrong-code-look-wrong/
    
    us = UsRequest("name")
    usName = us
    recordset("usName") = usName
    sName = SFromUs(recordset("usName"))
    WriteS sName

    В упомянутой роскомговном статье «Making Wrong Code Look Wrong» Спольски упоминает венгерскую нотацию, как способ to make wrong code look wrong.
    Я хотел бы обсудить ЯП, в котором поверх (допустим, динамической) системы типов есть некоторый набор правил, основанный на Apps Hungarian. У переменных и функций сравниваются префиксы, и язык не даёт тебе присвоить количество мух в переменную, которая хранит количество слонов, хотя и то и то — int. Если же ты знаешь, что делаешь, можно использовать функции вида <prefix>From<suffix> и <prefix>To<suffix>, причем во избежание бойлерплейта, можно положить все такие функции существующими и тривиальными (возвращающими входное значение), если не определено другое.

    Что хорошего и плохого было бы в таком языке? Дискасс.

    vistefan, 11 Июля 2018

    Комментарии (18)
  5. Haskell / Говнокод #24452

    −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
    instance Arbitrary ProjectConfig where
        arbitrary =
          ProjectConfig
            <$> (map getPackageLocationString <$> arbitrary)
            <*> (map getPackageLocationString <$> arbitrary)
            <*> shortListOf 3 arbitrary
            <*> arbitrary
            <*> arbitrary
            <*> arbitrary
            <*> arbitrary
            <*> arbitrary
            <*> arbitrary
            <*> (MapMappend . fmap getNonMEmpty . Map.fromList
                   <$> shortListOf 3 arbitrary)
            -- package entries with no content are equivalent to
            -- the entry not existing at all, so exclude empty
    
        shrink ProjectConfig { projectPackages = x0
                             , projectPackagesOptional = x1
                             , projectPackagesRepo = x2
                             , projectPackagesNamed = x3
                             , projectConfigBuildOnly = x4
                             , projectConfigShared = x5
                             , projectConfigProvenance = x6
                             , projectConfigLocalPackages = x7
                             , projectConfigSpecificPackage = x8
                             , projectConfigAllPackages = x9 } =
          [ ProjectConfig { projectPackages = x0'
                          , projectPackagesOptional = x1'
                          , projectPackagesRepo = x2'
                          , projectPackagesNamed = x3'
                          , projectConfigBuildOnly = x4'
                          , projectConfigShared = x5'
                          , projectConfigProvenance = x6'
                          , projectConfigLocalPackages = x7'
                          , projectConfigSpecificPackage = (MapMappend
                                                             (fmap getNonMEmpty x8'))
                          , projectConfigAllPackages = x9' }
          | ((x0', x1', x2', x3'), (x4', x5', x6', x7', x8', x9'))
              <- shrink ((x0, x1, x2, x3),
                          (x4, x5, x6, x7, fmap NonMEmpty (getMapMappend x8), x9))
          ]

    В хачкеле мало бойлерплейта, говорили они. Это ещё далеко не самый длинный список, см. x43 ниже.

    https://github.com/haskell/cabal/blob/4e0c701a2feb520d369ef506a18288c47f64b06a/cabal-install/tests/UnitTests/Distribution/Client/ProjectConfig.hs

    roman-kashitsyn, 06 Июля 2018

    Комментарии (18)
  6. Си / Говнокод #24338

    −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
    // https://github.com/omonar/nginx-http-auth-digest/blob/38fd7eb04b862636e61b812bbbb8fd2cae4d9ab4/ngx_http_auth_digest_module.c#L910
    
            if (ngx_auth_digest_str2_casecmp(start, 'n', 'c'))
            {
                field = &ngx_http_auth_digest_fields.nc;
    
            } else if (ngx_auth_digest_str3_casecmp(start, 'q', 'o', 'p'))
            {
                field = &ngx_http_auth_digest_fields.qop;
    
            } else if (ngx_auth_digest_str3_casecmp(start, 'u', 'r', 'i'))
            {
                field = &ngx_http_auth_digest_fields.uri;
    
            } else if (ngx_auth_digest_str5_casecmp(start, 'n', 'o', 'n', 'c', 'e'))
            {
                field = &ngx_http_auth_digest_fields.nonce;
    
            } else if (ngx_auth_digest_str5_casecmp(start, 'r', 'e', 'a', 'l', 'm'))
            {
                field = &ngx_http_auth_digest_fields.realm;
    
            } else if (ngx_auth_digest_str6_casecmp(start, 'c', 'n', 'o', 'n', 'c', 'e'))
            {
                field = &ngx_http_auth_digest_fields.cnonce;
    
            } else if (ngx_auth_digest_str6_casecmp(start, 'o', 'p', 'a', 'q', 'u', 'e'))
            {
                field = &ngx_http_auth_digest_fields.opaque;
    
            } else if (ngx_auth_digest_str8_casecmp(start, 'u', 's', 'e', 'r', 'n', 'a', 'm', 'e'))
            {
                field = &ngx_http_auth_digest_fields.username;
    
            } else if (ngx_auth_digest_str8_casecmp(start, 'r', 'e', 's', 'p', 'o', 'n', 's', 'e'))
            {
                field = &ngx_http_auth_digest_fields.response;
    
            } else if (ngx_auth_digest_str9_casecmp(start, 'a', 'l', 'g', 'o', 'r', 'i', 't', 'h', 'm'))
            {
                field = &ngx_http_auth_digest_fields.algorithm;
    
            } else {
                goto skip;
    
            }

    Чем им strcasecmp не угодил?

    j123123, 29 Мая 2018

    Комментарии (18)
  7. Java / Говнокод #24245

    +3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    public static Date round(Date d) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("ddMMyyyy");
            return sdf.parse(sdf.format(d));
        } catch (ParseException ex) {
            //This exception will never be thrown, because sdf parses what it formats
            return d;
        }
    }

    Простейший коробочный способ округления даты до дня.

    3.14159265, 10 Мая 2018

    Комментарии (18)
  8. Java / Говнокод #24149

    +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
    private fun showTicketWithSerialNumber(numberField: EditText, dateField: EditText) {
    
           RxTextView.textChangeEvents(numberField).subscribe {
               if (it.text().isNotEmpty()) {
                   RxTextView.textChangeEvents(dateField).subscribe {
                       if (it.text().isNotEmpty()){
                           vCardSearch.vis { true }
                           vButtonAddFlight.alpha = 1f
                       }
                   }
               }
           }
    
        }
    
     private fun showTicketWithoutSerialNumber(airlineField: EditText, departureField: EditText, arrivalField: EditText, dateField: EditText) {
    
            RxTextView.textChangeEvents(airlineField).subscribe {
                if (it.text().isNotEmpty()) {
                    RxTextView.textChangeEvents(departureField).subscribe {
                        if (it.text().isNotEmpty()){
                            RxTextView.textChangeEvents(arrivalField).subscribe {
                                if (it.text().isNotEmpty()) {
                                    RxTextView.textChangeEvents(dateField).subscribe {
                                        if (it.text().isNotEmpty()){
                                            vCardSearch.vis { true }
                                            vButtonAddFlight.alpha = 1f
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
    
        }

    Открыл. Увидел. Охуел. RxJava(в данном случае RxKotlin) в действии блеать......

    scrobot, 19 Апреля 2018

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    catch
    {
        Assert.IsTrue(false);
    }

    Код в нутри теста

    AleXK, 27 Марта 2018

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

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    private static int CalcCheckSum(byte[] BinFile)
    {
          int length = ((IEnumerable<byte>) BinFile).Count<byte>();
          if (length > 0)
          {
                int num = 0;
                for (int index = 0; index < length; ++index)
                      num = num + (int) BinFile[index] & (int) ushort.MaxValue;
          }
          return num;
    }

    Израильский инновационный вариант rolling hash'а :facepalm:
    Здесь есть всё: и альтернативное определение длины массива, и обилие приведений к инту, и придающая особую таинственность битовая операция &
    На первый взгляд может показаться, что результатом будет простая сумма всех байт, но не дайте себя обмануть! Результат - это суперсекретная(!!!11) сумма всех байт.

    PsychoTeras, 14 Ноября 2017

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

    0

    1. 1
    https://webhamster.ru/mytetrashare/index/mtb0/1480776952mrczr7xk44

    Какие изменения предлагает инициативная группа стандарта C++!!, чтобы сделать язык C++ красивым, мощным и востребованным средством современной разработки?

    j123123, 10 Ноября 2017

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