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

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

    +155

    1. 1
    2. 2
    3. 3
    $janres = serialize(isset($_POST['janres']) ? SafeEnv($_POST['janres'], 11, int) : array());
    
        if($tree->IdCats[$cat]['janres'] == "0") $janres = serialize(array());

    Бредокод

    Мартин, 01 Ноября 2011

    Комментарии (0)
  3. JavaScript / Говнокод #8294

    +155

    1. 1
    2. 2
    3. 3
    $(".rent_table._rent_list tbody input").each(function() {
                            $(this).attr("checked", "checked");
     });

    $(".rent_table._rent_list tbody input"). attr("checked", "checked");

    PEOPLE WHY Y NO RTFM?

    PS этот each отрабатывался на сотне inputов, чем вешал ie6

    Kakashulenka, 25 Октября 2011

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

    +155

    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
    #include <iostream>
    #include <memory>
    #include <assert.h>
    using namespace std;
     
    template <class T>
    class megaClass
    {
    public:
     
        void hello()
        {
            assert(dynamic_cast<T*>(this)!=NULL);
            static_cast<T*>(this)->hello();
        }
        virtual ~megaClass() {}
    };
     
    class cleft : public megaClass<cleft>
    {
    public:
     
        void hello()
        {
            std::cout << "left::hello()" << std::endl;
        }
    };
     
    class cright : public megaClass<cright>
    {
    public:
     
        void hello()
        {
            std::cout << "right::hello()" << std::endl;
        }
    };
     
     
    int main()
    {
        scoped_ptr<megaClass<cleft> > a1=new cleft;
        a1->hello();
        scoped_ptr<megaClass<cright> > a2=new cright;
        a2->hello();
        
        return 0;
    }

    Пытался продемонстрировать статический полиморфизм TarasB и получилась такая какашка. Кто действительно крут и может сабдж продемонстрировать? Я где-то видел пример, но не помню где...

    Ещё продемонстрировал статический полиморфизм через стратегии:

    struct Strategy1
    {
    static void do(){printf("Lol1");}
    };
    struct Strategy2
    {
    static void do(){printf("Lol2");}
    };
    template<class Strategy>
    class MegaClass
    {public:
    void do()
    {
    printf("Mega");
    Strategy::do();//Класс Strategy можно было и создать для хранения состояния.
    printf("/n\");
    }
    };
    //...

    Дальше в разных частях кода создаем:
    MegaClass<Strategy1> o;
    o.do();
    //...
    MegaClass<Strategy2> o;
    o.do();
    "Один" класс ведёт себя по разному. Понятно, что это не совсем полиморфизм. Но очень часто именно в таком контексте используют динамический полиморфизм, хотя такого статического здесь достаточно выше крыши.
    Плюсы этого подхода :
    1)Создаётся объект в стеке, значит быстро, а не в куче. Хотя можно и не в стеке.
    2)Используется шаблон, значит компиль будет инлайнить.

    Минус:
    1)Если понадобится резкой перейти от статического полиморфизма к динамическому - придётся переписывать на виртуальные функции или на истинный статический полиморфизм.

    Обсуждения здесь:
    http://govnokod.ru/8025#comment110773


    Сразу исключим детсадовский вариант статического функционального полиморфизма c перегрузкой функций:
    Class1 o1;
    foo(o1);
    Class2 o2;
    foo(o2);

    void foo(Class1 o){/*...*/};
    void foo(Class2 o){/*...*/};



    Кто-нибудь реально умеет can into нормальный статический полиморфизм?

    CPPGovno, 30 Сентября 2011

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

    +155

    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
    function otherString($str,$style)
    {
    	$str=trim($str);
    	switch($style)
    	{
    		case 1: $str=strip_tags($str); $str=str_replace("\n",'<br />',$str); break;
    		case 2:  break;
    		case 3: $str=strip_tags($str); $str=str_replace("\n",'',$str); $str=str_replace('<br />',"\n",$str); break;
    		case 4: $str=ereg_replace('(mailto:|mailto|http://|http:/|http:|http|ftp://|ftp:/|ftp:|ftp)','',$str);break;
    		case 5: $str=stripslashes($str); break;
    		case 6: $str=stripslashes($str); $str=strip_tags($str); break;
    		case 7: $str=strip_tags($str); break;
    	}
    	return $str;
    }

    web-based cms

    odmin, 24 Августа 2011

    Комментарии (6)
  6. PHP / Говнокод #7597

    +155

    1. 1
    2. 2
    $hour = date('H'); if ($hour>23){$hour=$hour-24;$day++;}
    echo "".$hour.":"."$minute."";

    Без комментариев...

    Marker689, 20 Августа 2011

    Комментарии (15)
  7. JavaScript / Говнокод #7513

    +155

    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
    Следующий код приводит в крутящийся восторг все рисунки, обнаруженные на странице :
    javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0);
    
    В этом классическом примере есть место индивидуальности. Например, заставить летать не рисунки, а ссылки (чем не леталки?):
    javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.links; DIL=DI.length; function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0);
    
    Тошниловка:
    javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24;x4=10; y4=10; x5=30; y5=20; DI=document.images; DIL=DI.length;function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style;DIS.position='relative'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5;DIS.top=Math .cos(R*y1+i*y2+y3)*y4+y5}R++ }setInterval('A()',5); void(0)
    
    Пятница:
    javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24;x4=3; y4=40; x5=30; y5=20; DI=document.images; DIL=DI.length;function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style;DIS.position='relative'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5;DIS.top=-Math.abs(Math .cos(R*y1*2+i*y2+y3)*y4)+y5}R+=2 }setInterval('A()',5); void(0)
    
    Иная_реальность (утро_понедельника):
    javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24;x4=3; y4=40; x5=30; y5=20; DI=document.images; DIW=new Array(); DIH=new Array(); DIL=DI.length; for(i=0;i<DIL;i++){DIW[i]=DI[i].width; DIH[i]=DI[i].height;} function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style;DIS.position='relative'; DIS.width=Math.abs(Math.sin(R*x1/2+i*x2+x3)*x4+x5)+DIW[i];DIS.height=Math.abs(Math.cos(R*y1/2+i*y2+y3)*y4+y5)+DIH[i];}R++; }setInterval('A()',5); void(0)

    CPPGovno, 11 Августа 2011

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

    +155

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    procedure TForm1.Image1Click(Sender: TObject);
    begin
     sPictureName := Label2.Caption;
     Form2.Show;
    end;
    
    procedure TForm1.Image2Click(Sender: TObject);
    begin
     sPictureName := Label3.Caption;
     Form2.Show;
    end;

    Знаю конечно что уныло, но по моему делать одну процедуру из-за этого слишком геморройно. С тем же массивом из 2-х элементов хотя бы. Говно ли?

    Govnocoder#0xFF, 26 Июля 2011

    Комментарии (57)
  9. JavaScript / Говнокод #7329

    +155

    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
    jQuery.each(elems, function(i, elem) {
                    if (typeof elem === "number") {
                        elem += "";
                    }
                    if (!elem) {
                        return;
                    }
                    if (typeof elem === "string" && !rhtml.test(elem)) {
                        elem = context.createTextNode(elem);
                    } else if (typeof elem === "string") {
                        elem = elem.replace(rxhtmlTag, fcloseTag);
                        var tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase(),
                            wrap = wrapMap[tag] || wrapMap._default,
                            depth = wrap[0],
                            div = context.createElement("div");
                        div.innerHTML = wrap[1] + elem + wrap[2];
                        while (depth--) {
                            div = div.lastChild;
                        }
                        if (!jQuery.support.tbody) {
                            var hasBody = rtbody.test(elem),
                                tbody = tag === "table" && !hasBody ? div.firstChild && div.firstChild.childNodes : wrap[1] === "<table>" && !hasBody ? div.childNodes : [];
                            for (var j = tbody.length - 1; j >= 0; --j) {
                                if (jQuery.nodeName(tbody[j], "tbody") && !tbody[j].childNodes.length) {
                                    tbody[j].parentNode.removeChild(tbody[j]);
                                }
                            }
                        }
                        if (!jQuery.support.leadingWhitespace && rleadingWhitespace.test(elem)) {
                            div.insertBefore(context.createTextNode(rleadingWhitespace.exec(elem)[0]), div.firstChild);
                        }
                        elem = jQuery.makeArray(div.childNodes);
                    }
                    if (elem.nodeType) {
                        ret.push(elem);
                    } else {
                        ret = jQuery.merge(ret, elem);
                    }
                });

    mark, 24 Июля 2011

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

    +155

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if($inc == true){
         $counter_val = $cat[$this->FileCounterKey] + 1;
    }else{
         $counter_val = $cat[$this->FileCounterKey] - 1;
    }

    Класс деревьев в одной русской CMS. Метод пересчитывает кол-во файлов в категории после добавления/удаления.

    Мартин, 02 Июля 2011

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

    +155

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    while($room_price_dbl = $room_price_list_dbl->GetNext())
    	{
    		$price_dbl=$room_price_dbl["PROPERTY_PRICE_DBL_VALUE"];
    		if($price_dbl==0)
    		{
    			$prop_price = "property_PRICE_SGL";
    		}
    		else
    		{
    			$prop_price = "property_PRICE_SGL";
    		}
    	}

    писал предыдущий программист. ужас! стыдно должно быть!
    разработчик сайта el-tour.com

    magistr_bender, 24 Июня 2011

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