1. C# / Говнокод #11907

    +139

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    switch (!_data.Provider)
    {
            case true: _currentState = states.DT2F; break;
            case false: _currentState = states.DT2P; break;
    }

    Проверка двух условий

    Prafesor, 10 Октября 2012

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

    +156

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    getControlValues : function(isSimpleValue){
        return this._getControlData(function(tab){
            return tab.getControlValues(isSimpleValue);
        });
    }

    Образец "самодокументируемого кода"
    Маленький метод, но как много в нем загадок.

    jangot, 10 Октября 2012

    Комментарии (2)
  3. SQL / Говнокод #11904

    −153

    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
    create table ISU.Н_ЛЮДИ
    (
      ИД             NUMBER(9) not null,
      ФАМИЛИЯ        VARCHAR2(25) not null,
      ИМЯ            VARCHAR2(15) not null,
      ОТЧЕСТВО       VARCHAR2(20),
      ПИН            VARCHAR2(20),
      ИНН            VARCHAR2(20),
      ДАТА_РОЖДЕНИЯ  DATE not null,
      ПОЛ            CHAR(1) not null,
      МЕСТО_РОЖДЕНИЯ VARCHAR2(200),
      ИНОСТРАН       VARCHAR2(3) not null,
      ФИО            VARCHAR2(80),
      ДАТА_СМЕРТИ    DATE default '09.09.9999' not null,
      КТО_СОЗДАЛ     VARCHAR2(40) default USER not null,
      КОГДА_СОЗДАЛ   DATE default SYSDATE not null,
      КТО_ИЗМЕНИЛ    VARCHAR2(40) not null,
      КОГДА_ИЗМЕНИЛ  DATE default SYSDATE not null
    )

    Мопед не мой.
    PL/SQL, крупная организация.
    Oracle, зачем ты разрешил кириллицу в именах полей?

    Miketsukami, 10 Октября 2012

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

    −121

    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
    Процедура аСсылкиПриЗаписиПриЗаписи(Источник, Отказ) Экспорт
    	
    	Если аСервер.ЗагрузкаПоОбменуРиб(Источник) Тогда
    		Возврат
    	КонецЕсли;
    	
    	Если ТипЗнч(Источник)=Тип("СправочникОбъект.Корреспонденты") Тогда
    		
    		Если Источник.ОбменДанными.Загрузка Тогда Возврат; КонецЕсли;
    		Если Источник.Ссылка.ЭтоГруппа Тогда Возврат; КонецЕсли;
    		Если Источник.Предопределенный Тогда Возврат; КонецЕсли;
    		Источник.ОбменДанными.Загрузка=Истина;
    		Источник.Записать(); //Записать() в подписке ПриЗаписи() - крутой костыль
    		Источник.ОбменДанными.Загрузка=Ложь;
    		Источник.Комментарий = ...

    Вот такая вот подписка при записи любых ссылок. 3 Если подряд? Логическое умножение - не, не слышал. Зато Записать() в подписке ПриЗаписи - слышал. Автор Хан Юрий Валентинович.

    ilya2184, 10 Октября 2012

    Комментарии (8)
  5. JavaScript / Говнокод #11901

    +156

    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
    function isProperty(object, property) {
        "use strict";
        var p, names, original = object,
            ecmaTypes = [Object, Array, String, Number, Date];
        try {
            for (p = 0; p < ecmaTypes.length; p += 1) {
                if (ecmaTypes[p] == object) {
                    console.log("looking up: " + ecmaTypes[p]);
                    names = Object.getOwnPropertyNames(ecmaTypes[p]);
                    if ('prototype' in ecmaTypes[p]) {
                        names = names.concat(
                            Object.getOwnPropertyNames(
                                ecmaTypes[p].prototype));
                    }
                    break;
                }
            }
            do {
                object = object.prototype.__proto__.constructor;
                names = names ?
                    names.concat(Object.getOwnPropertyNames(object)) : [];
                if ('prototype' in object) {
                    names = names.concat(
                        Object.getOwnPropertyNames(object.prototype))
                }
            } while  (object != Object)
            if (!names) {
                names = Object.getOwnPropertyNames(object);
            }
        } catch (error) {
            for (p in object) {
                if (object[p] == property) {
                    return true;
                }
            }
            return false
        }
        for (p = 0; p < names.length; p += 1) {
            if (original[names[p]] == property ||
                original.prototype[names[p]] == property) {
                return true;
            }
        }
        return false;
    }

    А как еще узнать, является ли функция методом принадлежащим объекту или нет? Это еще после трех часов проведенных в муках пытаясь понять, что вообще происходит.

    wvxvw, 10 Октября 2012

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

    +48

    1. 1
    2. 2
    3. 3
    PHP supports eight primitive types - four scalar types, two compound types and finally three special types.
    
    8 == 4+2+3?

    http://www.php.net/manual/en/language.types.intro.php

    defecate-plusplus, 09 Октября 2012

    Комментарии (34)
  7. PHP / Говнокод #11899

    +47

    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 function getLastDate($year, $month)
        {
            $next_year = $year;
            $next_month = $month + 1;
            if ($next_month == 13) {
                $next_month = 1;
                $next_year++;
            }
            $next_time = mktime(0, 0, 0, $next_month, 1, intval($next_year));
    
            $lastdate = strtotime('-1 day', $next_time);
            $last_day = date('d', $lastdate);
    
            return $last_day;
        }

    date('t', strtotime("$year-$month-01"));

    nekufa, 09 Октября 2012

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

    +157

    1. 1
    2. 2
    3. 3
    4. 4
    var body=document.getElementsByTagName('body')[0];
    var newBody="";
    newBody='<div id="'+this.cntID+'" class="hide you">'+this.flashCntDivArr.join('')+'</div>'+bgLayerDiv+"<div id='tplCnt'>"+body.innerHTML+"</div>";
    body.innerHTML=newBody;

    Натолкнулся в одном из проектов на такой вот способ добавления элемента в DOM. Я чего-то не понимаю?

    nbspjr, 09 Октября 2012

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

    +50

    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
    //Зарплата с пересчетом в уях
    $salary = NULL;
    $parse_array[2] = str_replace('от','',$parse_array[2]); //Выпиливаем слово "от", на нем спотыкается прегматч и дергалка ЗП
    $parse_array[2] = str_replace('От','',$parse_array[2]);
    $parse_array[2] = trim($parse_array[2]);
    if (strpos($parse_array[2],"у.е."))
                	{
                    	$salary_currency = "у.е.";
                    } else
                    {
                    $salary_currency = "руб.";
                    }
    $salary = substr($parse_array[2], 0 , strpos($parse_array[2]," "));
    if ($salary_currency!="руб.") {$salary = $salary*$options["ue_value"];}
    //конец выдергивания зарплаты

    Внимание! Все комментарии в коде - реальны...

    SnaIK, 09 Октября 2012

    Комментарии (20)
  10. JavaScript / Говнокод #11896

    +146

    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
    (function() {
        var elms = document.getElementsByClassName("tab");
        for( var i=0, l = elms.length; i<l; i++) {
            (function(i) {
                elms[i].onclick = function() {
                    var container=document.getElementsByTagName("span")[i];       
                    var this_height = container.offsetHeight;
                    if (document.getElementsByTagName("p")[i].style.height==this_height+"px") { // If 
                        var count = this_height;
                        var timeout_id = setInterval( function() {
                            if (count > 1) {
                                count--;
                            } else { clearTimeout(timeout_id); }
                            document.getElementsByTagName("p")[i].setAttribute("style", "height:"+count+"px");
                        } , 1)
                    } else {
                        var count = 0;
                        var timeout_id = setInterval( function() {
                            if (count < this_height) {
                                count++;
                            } else { clearTimeout(timeout_id); }
                            document.getElementsByTagName("p")[i].setAttribute("style", "height:"+count+"px");
                        } , 1)
                    }
                    
                };
            })(i);
        }
    })();

    Простейший аккордион.

    Emilco, 09 Октября 2012

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