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

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

    +164

    1. 1
    2. 2
    3. 3
    4. 4
    $data_array = file('./dir/file.txt'); //Прочитали файл в массив
    $count = count($data_array); //Подсчитали количество элементов массива
    $chislo = rand(0,$count-1); //Так как элементы массива имеют ключи с 0 до $count-1
    echo $data_array[$chislo]; //Вот вам и произвольная строка из файла

    Основная говнистость в том, что это статья, т.е. человек этому учит других, ни в чём не повинных людей.

    DeaDrash, 07 Января 2011

    Комментарии (49)
  3. Си / Говнокод #5069

    +141

    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
    char *nvram_get(int index, char *name)
    {
            /* Initial value should be NULL */
            char *recv = NULL;
    
            //LIBNV_PRINT("--> nvram_get\n");
            nvram_init(index);
    
            recv = nvram_bufget(index, name);
    
            //btw, we don't return NULL anymore!
            if (!recv)
                recv = "";
    
            //Always need close nvram
            nvram_close(index);
    
        return recv;
    }
    
    char *nvram_bufget(int index, char *name)
    {
            int idx;
            /* Initial value should be NULL */
            static char *ret = NULL;
    
            //LIBNV_PRINT("--> nvram_bufget %d\n", index);
            LIBNV_CHECK_INDEX("");
            LIBNV_CHECK_VALID();
            idx = cache_idx(index, name);
    
            if (-1 != idx) {
                    if (fb[index].cache[idx].value) {
                            //duplicate the value in case caller modify it
                            //Tom.Hung 2010-5-7, strdup() will cause memory leakage
                            //but if we return value directly, it will cause many other crash or delete value to nvram error.
                            ret = strdup(fb[index].cache[idx].value);
                            LIBNV_PRINT("bufget %d '%s'->'%s'\n", index, name, ret);
    
                            //btw, we don't return NULL anymore!
                            if (!ret)
                                ret = "";
    
                        return ret;
                    }
            }
    
            //no default value set?
            //btw, we don't return NULL anymore!
            LIBNV_PRINT("bufget %d '%s'->''(empty) Warning!\n", index, name);
            return "";
    }

    Кусочек кода из библиотеки работы с nvram для железок на SoC Ralink. Китайцы плакали, кололись о утечки памяти, но продолжали настойчиво мешать указатели на статические строки с указателями на динамически выделенные в куче...

    NiTr0man, 27 Декабря 2010

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

    +118

    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
    static double SingleToDouble(Single v)
    {
        return double.Parse(v.ToString());
    }
    
    static void Scan()
    {
        double q = 0.0;
        while (q <= 10.0)
        {
            Single s = (Single)q;
            Double d = SingleToDouble(s);
    
            if (d == q)
                MessageBox.Show(q.ToString());
            q = q + 0.1;
        }
    }

    народ, кто-нибудь знает чем можно заменить код "return double.Parse(v.ToString());" в SingleToDouble?
    "return v;" не подходит - на экран выводятся только 0, 0.5 и 4.5. А нужно чтобы все выводились 0, 0.1, 0.2 ... 0.9.

    4eburashka, 16 Декабря 2010

    Комментарии (49)
  5. PHP / Говнокод #4083

    +167

    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
    function suka($str){
    
    $length = strlen($str);
    for($i=1; $i<=$length; $i++){
    
    $b = (-1)*$i;
    $substrl .= substr($str, $b, 1);
                  }
    
    echo $substrl;
    
    }
    $govno='jizni';
    suka($govno);

    Попросил соискателя написать функцию, которая перевернет строку. Просто хотелось посмотреть подход к коду.

    zorbis, 23 Августа 2010

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

    +82

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    <HTML>
    <HEAD>
    <TITLE>Коммерческий банк "ХОУМ-БАНК"</TITLE>
    </HEAD>
    <BODY>
    <table border="0" width="100%">
       <tr align="center">
       <img src="/img/home.jpg" align="top">
       </tr>
    </table>
    </BODY>
    </HTML>

    Сайт банка "Хоум-банк" (http://www.home-bank.ru). Никаких тебе пхп и жабаскрипт! Новое слово в сайтостроении! При изменении информации соответствующе фотошоппится картинка!
    Неудивительно, что у банка отозвана лицензия: http://www.lenta.ru/news/2010/07/08/homebank/

    Webkill, 08 Июля 2010

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

    +116

    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
    class DllContainer
    {
      DllContainer()
      {
        // тут грузятся дллки в количестве N.
        // LoadLibrary() + некоторые операции
      }
      
      ~DllContainer()
      {
        // FreeLibrary() и т.п.
      }
    
      template <class T>
      T* GetComponent(ComponentID id)
      {
        // аналог QueryInterface.
        // ищет компонент, проверяет можно ли статик_кастить
        // и вертает указатель нужного типа
      }  
    };
    
    class ComponentUser
    {
      void Method1()
      {
        DllContainer loader;
        SomethingDoer* comp = loader.GetComponent<SomethingDoer>(ID1);
        comp->DoSomething();
      }
      
      void Method2()
      {
        DllContainer loader;
        SomethingElseDoer* comp = loader.GetComponent<SomethingElseDoer>(ID2);
        comp->DoSomethingElse();
      }
      
      void MethodN()
      {
        DllContainer loader;
        ShitPerformer* comp = loader.GetComponent<ShitPerformer>(IDN);
        comp->PerformSomeShit();
      }
    };

    недавно обнаружил код примерно такого плана.
    крупный коммерческий проект...

    g26g, 12 Мая 2010

    Комментарии (49)
  8. 1C / Говнокод #1723

    −117.8

    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
    Если Приказ.Выбран() = 1 Тогда
    			Если Приказ.Вид() = "Приказ" Тогда
    				// это все-таки приказ
    				Если Приказ.ТипПриказа <> Перечисление.ТипыПриказов.НаВнутреннееСовмещение Тогда
    					// но приказ другой, не внутреннее совмещение
    					Продолжить;
    				КонецЕсли;
    			Иначе
    				Продолжить;
    			КонецЕсли;
    		Иначе
    			Продолжить;
    		КонецЕсли;

    Долой минимализм!

    Наговнокодили: Ингресс-лайн

    Полупрограммисты, 29 Августа 2009

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

    +848.7

    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
    int p,k,l,i,j,d,q,R,t,r;
      S1:    s=0; p=1;
      S2:    if (s==0) { i=1; j=n; k=n; l=2*n+1; }
             if (s==1) { i=n+1; j=2*n; k=0; l=n+1; }
             d=1; q=p; r=p;
      S3:    if (x[i]>K>x[j]->K) goto S8;
      S4:    k=k+d; x[k]=x[i]; c[k]=c[i];
      S5:    i+=1; q-=1; if (q>0) goto S3;
      S6:    k+=d; if (k==l) goto S13; else x[k]=x[j];c[k]=c[j];
      S7:    j-=1; r-=1; if (r>0) goto S6; else goto S12;
      S8:    k+=d; x[k]=x[j]; c[k]=c[j];
      S9:    j-=1; r-=1; if (r>0) goto S3;
      S10:   k+=d; if (k==l) goto S13; else x[k]=x[i];c[k]=c[i];
      S11:   i+=1; q-=1; if (q>0) goto S10;
      S12:   q=p; r=p; d=-d; t=k; k=l; l=t; if (j-i<p) goto S10; else goto S3;
      S13:   p+=p; if (p<n) { s=1-s; goto S2; }
             if (s==0) for (t=1; t<=n; t+=1) { x[t]=x[t+n];c[t]=c[t+n] }

    Вот такой вариант сортировки предложен в одной известной книге. Оно работает...

    guest, 26 Декабря 2008

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

    +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
    constexpr int add(int a, int b) 
    {
        return a + b;
    }
    
    static_assert(1 |> add(2) == and(1, 2));
    
    FILE* file = fopen( “a.txt”, “wb” );
    if (file) {
        fputs(“Hello world”, file);
        file |> fseek(9, SEEK_SET);
        file |> fclose();
    }
    
    auto dangerous_teams(std::string const& s) -> bool {
        return s
             |> views::group_by(std::equal_to{})
             |> views::transform(ranges::distance)
             |> ranges::any_of([](std::size_t s){
                    return s >= 7;
                });
    }

    http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p2011r0.html

    какой C++)))

    kcalbCube, 19 Февраля 2022

    Комментарии (48)
  11. Python / Говнокод #27912

    +1

    1. 1
    description = f"""У тебя , **{ctx.author}** вот столько балов!**{cursor.execute("SELECT cash FROM users WHERE id = {}".format(ctx.author.id)).fetchone()[0]} :polegar_para_cima:**"""

    Насмотревшиеся Хауди Хо ботопейсатели - это, конечно, нечто.
    1. Выполнение SQL-запроса вставлено прямо в шаблонизируемую строку
    2. Сам запрос формируется через форматирование строки (привет, Бобби Тейблз!)
    3. Не проверяется, вернула ли база хоть что-то.

    "Не могу понять в чем проблема?" (с)

    Vindicar, 02 Января 2022

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