1. PHP / Говнокод #16199

    +159

    1. 1
    2. 2
    3. 3
    4. 4
    if(!preg_match('/@rambler.ru/', $item['email']) ) { 
       cmsCore::addSessionMessage('Можно использовать почту только <strong>rambler.ru</strong>', 'error');
        $errors = true;
    }

    // код надо расширить добавив другие домены, тот кто это писал явно не думал что придется это делать..

    ma-ix, 20 Июня 2014

    Комментарии (13)
  2. Objective C / Говнокод #16198

    −195

    1. 1
    2. 2
    // optimization. Should only be used to read it. Never to write it.
    extern CGFloat	__ccContentScaleFactor;

    Может быть, я бунтарь!
    __ccContentScaleFactor = -666;

    tirinox, 20 Июня 2014

    Комментарии (3)
  3. C# / Говнокод #16197

    +142

    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
    public Config(string[] str)
            {
                InitializeComponent();
                try
                {
                    textBox5.Text = str[0];
                    textBox6.Text = str[1];
                    textBox1.Text = str[2];
                    textBox2.Text = str[3];
                    textBox3.Text = str[4];
                    textBox4.Text = str[5];
                    textBox7.Text = str[6];
                    raz = str[7];
                }
                catch (Exception)
                {
                    return;
                }
            }

    Классика. Говнокод эпохи барокко. Строк мало, но пованивает.

    GreatMASTERcpp, 19 Июня 2014

    Комментарии (22)
  4. PHP / Говнокод #16196

    +154

    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
    $this->db->from("admin_sidebar");
            $this->db->where("folder", 1);
            $this->db->order_by("sort", "asc");
            $query = $this->db->get();
            $data[0] = $query->result();
            $this->db->from("admin_sidebar");
            $this->db->where("folder", 2);
            $this->db->order_by("sort", "asc");
            $query = $this->db->get();
            $data[1] = $query->result();
            $this->db->from("admin_sidebar");
            $this->db->where("folder", 3);
            $this->db->order_by("sort", "asc");
            $query = $this->db->get();
            $data[2] = $query->result();
            $this->db->from("admin_sidebar");
            $this->db->where("folder", 4);
            $this->db->order_by("sort", "asc");
            $query = $this->db->get();
            $data[3] = $query->result();
            $this->db->from("admin_sidebar");
            $this->db->where("folder", 5);
            $this->db->order_by("sort", "asc");
            $query = $this->db->get();
            $data[4] = $query->result();

    asdozzz, 19 Июня 2014

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

    −165

    1. 1
    passport integer

    Из дипломной работы. Человек хоть раз открывал свой паспорт?

    bormand, 19 Июня 2014

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

    +159

    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
    if($ank['rating']>=0 && $ank['rating']<=1)echo " <img src='/rating/img/1.gif'></img>"; 
    if($ank['rating']>=2 && $ank['rating']<=3)echo " <img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
    if($ank['rating']>=4 && $ank['rating']<=5)echo " <img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
    if($ank['rating']>=6 && $ank['rating']<=7)echo " <img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
    if($ank['rating']>=8 && $ank['rating']<=9)echo " <img src='/rating/img/2.gif'></img>";
    if($ank['rating']>=10 && $ank['rating']<=11)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img>";
    if($ank['rating']>=12 && $ank['rating']<=13)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
    if($ank['rating']>=14 && $ank['rating']<=15)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
    if($ank['rating']>=16 && $ank['rating']<=17)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
    if($ank['rating']>=18 && $ank['rating']<=19)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img>";
    if($ank['rating']>=20 && $ank['rating']<=21)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img>";
    if($ank['rating']>=22 && $ank['rating']<=23)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
    if($ank['rating']>=24 && $ank['rating']<=25)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
    if($ank['rating']>=26 && $ank['rating']<=27)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
    if($ank['rating']>=28&& $ank['rating']<=29)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img>";
    if($ank['rating']>=30 && $ank['rating']<=31)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img>";
    if($ank['rating']>=32&& $ank['rating']<=33)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
    if($ank['rating']>=34 && $ank['rating']<=35)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
    if($ank['rating']>=36 && $ank['rating']<=37)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
    if($ank['rating']>=38 && $ank['rating']<=39)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img>";
    if($ank['rating']>=40 && $ank['rating']<=41)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img>";

    А что есть для этого циклы незнают

    Reds, 19 Июня 2014

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

    +73

    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
    // Current Month Days
                for (int i = 1; i <= _nDaysInMonth; i++) {
                    if (_myPrefs.getIfConfigured()) {
                        if (_regionWithHolidays != null && _regionWithHolidays.length > 0) {
    
                            String holidayDateStringFormat = String.valueOf(i) + "-" + getMonthAsString(nCurrentMonth) + "-" + _strCurrentSelectedYear;
                            for (int index = 0; index < _regionWithHolidays.length; index++) {
                                if (_regionWithHolidays[index].getHolidayDate().equals(holidayDateStringFormat)) {
                                    list.add(String.valueOf(i) + "-RED" + "-" + getMonthAsString(nCurrentMonth) + "-" + yy);
                                }
                            }
                        }
                    }
    
                    if (i == getCurrentDayOfMonth()) {
                        list.add(String.valueOf(i) + "-BLUE" + "-" + getMonthAsString(nCurrentMonth) + "-" + yy);
                    } else {
                        list.add(String.valueOf(i) + "-WHITE" + "-" + getMonthAsString(nCurrentMonth) + "-" + yy);
                        if (_myPrefs.getIfConfigured()) {
                            if (_regionWithHolidays != null && _regionWithHolidays.length != 0) {
                                String otherDates = String.valueOf(i) + "-" + getMonthAsString(nCurrentMonth) + "-" + _strCurrentSelectedYear;
                                for (int index = 0; index < _regionWithHolidays.length; index++) {
                                    if (_regionWithHolidays[index].getHolidayDate().equals(otherDates)) {
                                        list.remove(String.valueOf(i) + "-WHITE" + "-" + getMonthAsString(nCurrentMonth) + "-" + yy);
                                    }
                                }
                            }
                        }
                    }
                }
    
                // some code
    
                for (int i = 1; i <= _nDaysInMonth; i++) {
                    String[] day_color = list.get(i).split("-");
                    if (day_color[1].equals("WHITE")) {
                        //active dates in current month
                        dayNumberView.setTextColor(getResources().getColor(R.color.darkGrey_font));
                    } else if (day_color[1].equals("BLUE")) {
                        //current date in current month
                        holder.tvTime.setTextColor(getResources().getColor(R.color.whitetranslucent));
                        dayNumberView.setTextColor(getResources().getColor(R.color.whitetranslucent));
                        cell.setBackgroundResource(R.color.blue_font);
                    } else if (day_color[1].equals("RED")) {
                        //active dates in current month
                        dayNumberView.setTextColor(getResources().getColor(R.color.red));
                    }
                }

    Это приложение с десятками тысяч пользователей. Мне выпала честь править в нем баги. На сколько я могу судить задача этого куска была отобразить календарь на текущий месяц на экране и подсветить WHITE - обычные дни, BLUE - текущий, RED - выходные и праздничные. Итак в чем соль:
    1) сама соль метода - в одном цикле создается список строк вида НОМЕР-ЦВЕТ-МЕСЯЦ-ГОД, чуть ниже в аналогичном цикле эти строки разбиваются по "-" и сравнивается по строковому значению цвета. Кроме того день может быть или текущим или праздничным, но никак не одновременно.
    2) два практически одинаковых куска кода по 10 строк - строки 4-13 и 19-28, первый при определенных условия добавляет ПРАЗДНИЧНЫЙ день в календарь, потом день в 16-18 строках день всегда добавляется еще раз этот день, либо обычный(WHITE) либо текущий(BLUE), и выполняется второй кусок и если проходят те же условия т.е. фактические если был добавлен праздничный день(RED) то удаляется добавленный ОБЫЧНЫЙ день. Баг был в том что если текущий день был еще и праздничным то они задваивались. Сделать по нормальному - если день уже добавлен, не добавлять еще раз или сделать continue главному циклу. Не говоря уже о том чтобы добавить break после 9 строки, видно автор не знал про эти операторы.

    TAX, 19 Июня 2014

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

    −168

    1. 1
    decode(coalesce(d.modif19,'0'),'0','0',d.modif19)

    siv163, 19 Июня 2014

    Комментарии (12)
  9. Pascal / Говнокод #16191

    +86

    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
    function IsMemoryCommitByAdress(const AAddress: Pointer): Boolean;
    var
      MemoryInfo: TMemoryBasicInformation;
    begin
      Result := False;
      if not Assigned(AAddress) then
      Exit;
      VirtualQuery(AAddress, MemoryInfo, SizeOf(MemoryInfo));
      Result := MemoryInfo.State and MEM_COMMIT <> 0;
    end;
    
    function IsPointerToVMT(const APointer: Pointer): Boolean;
      var
      VMTPointer, VMTPointerSelf: Pointer;
    begin
      Result := False;
      if not IsMemoryCommitByAdress(APointer) then
      Exit;
      VMTPointer := APointer;
      VMTPointerSelf := Pointer(Integer(VMTPointer) + vmtSelfPtr);
      if not IsMemoryCommitByAdress(VMTPointer) then
      Exit;
      if not IsMemoryCommitByAdress(VMTPointerSelf) then
      Exit;
      if not IsMemoryCommitByAdress(PPointer(VMTPointerSelf)^) then
      Exit;
      Result := PPointer(VMTPointerSelf)^ = VMTPointer;
    end;
    
    function IsBadptr(apointer:pointer):boolean;
    begin
      Result := IsMemoryCommitByAdress(APointer) and IsPointerToVMT(PPointer(APointer)^);
    end;

    Функция, для определения качества указателя, в ситуации "один объект - несколько указателей".
    Гк в том, что нет надежности - это все равно, что юзать IsBadReadPtr и аналогичные.

    Почему-то никто не пытается использовать операторы is и as (я узнал о них благодаря Тарасу, спасибо ему), чтобы сравнить качество приведения.

    brutushafens, 19 Июня 2014

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

    +138

    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
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    bool ExcludeCase4(int iDepth)
            {
                MyNodeType pN = mPath[iDepth];
                if (pN != null)
                    if (pN.AuxField.bRed) return false;
    
                MyNodeType pP = mPath[iDepth - 1];
                    if (!pP.AuxField.bRed) return false;
    
                MyNodeType pS;
    
                if (LeftSon(iDepth))
                    pS = pP.pRight;
                else
                    pS = pP.pLeft;
    
                if (pS == null)
                {
                    pP.AuxField.bRed = false;
                    iDepthBad = -1;
                    return true;
                }
    
                if (pS.AuxField.bRed) return false;
    
                MyNodeType pSL = pS.pLeft;
                if (pSL != null)
                    if (pSL.AuxField.bRed) return false;
    
                MyNodeType pSR = pS.pRight;
                if (pSR != null)
                    if (pSR.AuxField.bRed) return false;
    
                pS.AuxField.bRed = true;
                pP.AuxField.bRed = false;
    
                iDepthBad = -1;
                
                return true;
    // Дерево стало хорошим. Корректировать больше не надо.
            }
    
            bool ExcludeCase6(int iDepth)
            {
                MyNodeType pN, pP, pS;
                bool bLeft, bRedP;
    
                pN = mPath[iDepth];
                if (pN != null)
                if (pN.AuxField.bRed) return false;
    
                pP = mPath[iDepth - 1];
                bRedP = pP.AuxField.bRed;
    
                bLeft = LeftSon(iDepth);
    
                if (bLeft)
                    pS = pP.pRight;
                else
                    pS = pP.pLeft;
    
                if (pS == null) return false;
                if (pS.AuxField.bRed) return false;
    
                MyNodeType pSL, pSR, p2, p3;
    
                pSL = pS.pLeft;
                pSR = pS.pRight;
    
                if (bLeft)
                {
                    if (pSR == null || pSR != null && !pSR.AuxField.bRed)
                    {
                        if (pSL == null) return false;
                        if (!pSL.AuxField.bRed) return false;
    // Сюда попали => это Случай 5.
    
                        p2 = pSL.pRight;
                        pSL.pRight = pS;
                        pS.pLeft = p2;
                        pSL.AuxField.bRed = false;
                        pS.AuxField.bRed = true;
    
                        pP.pRight = pSL;
                        pSR = pS;
                        pS = pSL;
                    }
                    else
                    if (!pSR.AuxField.bRed) return false;
    
    // Сюда попали => это Случай 6.
    
               ,......}

    кусочек красно-черного дерева, необходимый, но не достаточный

    lavrov, 18 Июня 2014

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