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

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

    +126

    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
    if (_documentsCount < 0)
                {
                    var docs = new HashSet<int>();
    
                    _manager.WalkThroughConcepts(delegate(Concept concept, CancelEventArgs cargs)
                                                     {
                                                         foreach (var doc in concept.Documents)
                                                             docs.Add(doc);
                                                     });
    
                    _documentsCount = docs.Count;
                }
    
                return _documentsCount;

    Как сосчитать количество документов в дереве? очень просто - надо всех их добавить в один список (и для этого сделать цикл в каждом узле, разумеется) а потом вернуть количество элементов в списке.

    eval_2009, 06 Января 2011

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

    −188

    1. 1
    2. 2
    3. 3
    exec sp_executesql N'UPDATE [dbo].[sop_user_master]
    SET [user_firstname] = @p0, [user_password_hash] = @p1, [user_password_salt] = @p2
    WHERE 0 = 1',N'@p0 nvarchar(15),@p1 varbinary(32),@p2 varbinary(6)',@p0=N'AFDAasddddddddd',@p1=0xBB8012CAAB306E470D4918B490D7100DC464B5106A291896D045892B5F303309,@p2=0x80DE1E731993

    Вот какой запрос генерирует Linq to SQL)))

    vanished, 17 Декабря 2010

    Комментарии (5)
  4. Ruby / Говнокод #4913

    −98

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    def non_blank_attrs_amount
        return_value = 4
        return_value = return_value + 1 if (!country.blank?)
        return_value = return_value + 1 if (!address.blank?)
        return_value = return_value + 1 if (!phone.blank?)
        return_value = return_value + 1 if (!email.blank?)
        return_value = return_value + 1 if (!skype.blank?)
        return_value = return_value + 1 if (!site.blank?)
        return_value = return_value + 1 if (!comment.blank?)
        return_value.to_s
      end

    Dreamfall, 13 Декабря 2010

    Комментарии (5)
  5. Си / Говнокод #4866

    +140

    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
    ZEB_CALLBACK ZEB_CACHE_GetPage(ZEB_PagesCache *pPagesCache, ZEB_PAGEIDX fpPageIndex, void **ppCachedPageAdress)
    {  
      ZEB_WORD i; 
      for(i = 0; i < pPagesCache->loadedCount; i++)
      {
        if(pPagesCache->pDescriptors[i].fpPosition == fpPageIndex)
        {
          pPagesCache->pDescriptors[i].hitPoints++;
          (*ppCachedPageAdress)=(pPagesCache->pCache)+(i<<(pPagesCache->pageRatio)); //выдаю адрес подгруженной страницы в кэше
          return ZEBCB_GOOD;
        }
      }
      // запрошенная страница все еще не найдена} 
      //если страницы нету - то проверяем - есть ли свободный слот, а если нет слotа, то проводим операцию по выпиливанию страницы с наименьшим ХП 
      if( pPagesCache->loadedCount < pPagesCache->capacity )
      {//если слот еще есть то загружаем в позицию края - это loadedCount и увеличиваем его на 1
        pPagesCache->pDescriptors[pPagesCache->loadedCount].fpPosition = fpPageIndex; //указываем реальный адрес в соусе
        pPagesCache->pDescriptors[pPagesCache->loadedCount].hitPoints = 1;  //ХП ставим в 1
        ZEB_CACHE_MechMountPage(pPagesCache,pPagesCache->loadedCount,fpPageIndex);//загружаем эту страницу в кэш (позиция соответствует индексу дескриптора) 
        (*ppCachedPageAdress)=(pPagesCache->pCache) + ((pPagesCache->loadedCount) << (pPagesCache->pageRatio)); //получаем адрес страницы  
        pPagesCache->loadedCount++; //увеличиваем количество загруженных страниц  
        return ZEBCB_GOOD;
      }else //TODO: елсе не нужен     // Почему не нужен? (2010 07 12)    //Не знаю (2010 07 28)
      {//если свободных слотов нет - то проводим поиск наименьшего хп и выпиливаем его, загружая на его место новый дескриптор и страницу
        //поиск наименбшего хп
        ZEB_WORD 
         register minHP,
         register minDIDX  //Descriptor InDeX
         ;    
        minHP = pPagesCache->pDescriptors[0].hitPoints;
        minDIDX = 0;
        for(i = 1; i < pPagesCache->capacity; i++)
        {
          if(pPagesCache->pDescriptors[i].hitPoints < minHP)
          {
            minHP = pPagesCache->pDescriptors[i].hitPoints;
            minDIDX = i;
          }
        }
        //страница в любос случае найдена - выпиливаем ее - сохраняя ее в сурс обратно
        ZEB_CACHE_MechUnmountPage(pPagesCache,minDIDX,pPagesCache->pDescriptors[minDIDX].fpPosition); 
        //и на ее место грузим новый дескриптор и саму страницу
        pPagesCache->pDescriptors[minDIDX].fpPosition = fpPageIndex; //указываем реальный адрес в соусе   //TODO: Нужно запихивать дескрипторы в отдельный массив и обращаться по указателю, потом это дело можно сортировать для ускорения поиска страниц. Режимы сортировок - максимум и минимум: 1 - для быстрого обращения к наиболее часто используемым страницам, 2 - для быстрого выпиливания менее используемых страниц. (2010 07 28)
        pPagesCache->pDescriptors[minDIDX].hitPoints = 1;  //ХП ставим в 1 
        //кэшируем требуемую страницу
        ZEB_CACHE_MechMountPage(pPagesCache,minDIDX,fpPageIndex);    
        (*ppCachedPageAdress)=(pPagesCache->pCache) + ((pPagesCache->loadedCount) << (pPagesCache->pageRatio)); //получаем адрес страницы  
        return ZEBCB_GOOD;
      }
    }

    Господа - я не уверен говнокод ли это, но вы как бесспорные эксперты в области обнаружения ГК дайте свое заключение. Метод получает страницу из кэша. Страницы фиксированного размера и кэшируются из файла. Буфер под кэш - определяется один раз при создании как единый динамически полученный массив. Код кодил ОП.

    CreatorOfBullshit, 08 Декабря 2010

    Комментарии (5)
  6. C++ / Говнокод #4845

    +158

    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
    class SomeClass
    {
    public:
        SomeClass(bool evenlope = true)
        {
            if(evenlope)
            {
                if (IsVistaOrGreater())
                    mLetter = new SomeClassVista;
                else
                    mLetter = new SomeClassXP;
            }
            else
                mLetter = 0;
        }
        virtual ~SomeClass() { delete mLetter; }
        virtual bool Foo(int param) { return mLetter->Foo(param); }
    private:
        SomeClass* mLetter;
    };
    
    class SomeClassXP : public SomeClass
    {
    public:
            SomeClassXP():SomeClass(false) { /* ... */ }
    	~SomeClassXP() { /* ... */ }
    	virtual bool Foo(int param) { /* ... */ }
    };

    Нужно было добавить поддержку новых настроек висты и семёрки, которые нельзя изменить через старый интерфейс. Наговнякал.

    rat4, 07 Декабря 2010

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

    +172

    1. 1
    2. 2
    3. 3
    4. 4
    for($i;$i<strlen($param);$i++)
            {
                if(strpos($extra,$param[$i]) === FALSE && eregi('[^a-zA-Z]', $param[$i] )) return false;
            }

    Проверка, что строка состоит только из букАвок. com_rsform для Joomla. Там весь validation.php таким измазан.

    young, 06 Декабря 2010

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

    +117

    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
    private void DBGridCategories_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
            {
                int rowsCount = (sender as DataGridView).RowCount;
                if ((rowsCount >= 0) && (rowsCount < 100))
                {
                    (sender as DataGridView).RowHeadersWidth = 30;
                }
                else
                {
                    if ((rowsCount >= 100) && (rowsCount < 1000))
                    {
                        (sender as DataGridView).RowHeadersWidth = 40;
                    }
                    else
                    {
                        if ((rowsCount >= 1000) && (rowsCount < 10000))
                        {
                            (sender as DataGridView).RowHeadersWidth = 50;
                        }
                        else
                        {
                            if ((rowsCount >= 10000) && (rowsCount < 100000))
                            {
                                (sender as DataGridView).RowHeadersWidth = 65;
                            }
                        }
                    }
                }
                using (SolidBrush brush = new SolidBrush(Color.Red))
                {
                    e.Graphics.DrawString((e.RowIndex + 1).ToString(System.Globalization.CultureInfo.CurrentUICulture) + ".", e.InheritedRowStyle.Font, brush, e.RowBounds.Location.X + 10, e.RowBounds.Location.Y + 1);
                }
            }

    школьный профессионал ))

    Maxim546, 02 Декабря 2010

    Комментарии (5)
  9. Куча / Говнокод #4803

    +141

    1. 1
    <input type="hidden" id="id1" name="id1" value="someVal" readonly="readonly" style="background-color:Transparent;border:none;" />

    Стилизованный readonly hidden

    zheka, 01 Декабря 2010

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

    +151

    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
    function clean_url ($url) {
    
      if ($url == '') return;
    
      $url = str_replace("http://", "", strtolower($url));
      $url = str_replace("https://", "", $url );
      if (substr($url, 0, 4) == 'www.')  $url = substr($url, 4);
      $url = explode('/', $url);
      $url = reset($url);
      $url = explode(':', $url);
      $url = reset($url);
    
      return $url;
    }
    
    
    if (clean_url($_SERVER['HTTP_REFERER']) != clean_url($_SERVER['HTTP_HOST'])) die("Hacking attempt!");

    DLE 9.0, /engine/modules/antibot.php
    В браузере выключена передача реферера, последняя строчка особо не нужна, ибо HTTP_REFERER не подделывают только из-за лени, а вот полезные пользователи действительно страдают.
    Да и получение хоста из реферера радует.

    Morgan, 29 Ноября 2010

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

    +145

    1. 1
    2. 2
    3. 3
    4. 4
    public partial class TaskViewSearchParameter
    {
        public int Top5 { get; set; }
    }

    Часть класса одного из наших проектов

    ZlobnyiSerg, 25 Ноября 2010

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