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

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

    +14

    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
    template<class Key,class T,class H=Hash<Key>,
        class EQ=equal_to<Key>,class A=allocator<pair<const Key,T> > >
    class hash_map
    {
    public:
        //как map за исключением
        typedef H Hasher;
        typedef EQ key_equal;
        typedef size_t size_type;//из функции Hash видно что size_t нужно, а не int
        typedef Key key_type;
        typedef T mopped_type;
        //делаем объявление
        struct Entry;
        typedef T* iterator;
        typedef const Entry* const_iterator;
        typedef pair<iterator,iterator> equal_r;
    //...
     vector<map<key_type,mopped_type> *> v1;

    Тормозил std::unordered_map. Написал свой.

    LispGovno, 09 Июля 2013

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

    +14

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    int error = (unsigned)-1;
    
    int x, y, w, h;
    x = y = w = h = error;
    
    stream >> x >> y >> w >> h;
    
    if(x == error || y == error || w == error || h == error)
       ...

    Не нашёл, как по-другому обрабатывать ошибки текстовых командах.

    an0nym, 24 Июня 2013

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

    +14

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    template<typename U>
    shared_ptr(const shared_ptr<U> & ptr) throw()
    	: m_value(0)
    	, m_ref_count(0)
    {
    	m_value = static_cast<T *>(ptr.get());
    	if(m_value)
    	{
    		m_ref_count = reinterpret_cast<const shared_ptr &>(ptr).m_ref_count;
    		++*m_ref_count;
    	}
    }

    Выражаясь метафорично, я работаю на велосипедном заводе.

    Xom94ok, 09 Июня 2013

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

    +14

    1. 1
    std::set_unexpected( [] () {} );

    Студия достала и не позволяла обрабатывать исключения, а они нужны были для демонстрации работы, в итоге навесил такой костыль и включил SEH исключения в параметрах компиляции.

    maksim_ovcharik, 29 Мая 2013

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

    +14

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    uint8_t* head = (uint8_t*) Buffer::Data(buffer);
    uint8_t* tail = head + Buffer::Length(buffer) - 1;
    
    // xor swap, just because I can
    while (head < tail) *head ^= *tail, *tail ^= *head, *head ^= *tail, ++head, --tail;

    https://github.com/bnoordhuis/node-buffertools/blob/master/buffertools.cc#L157

    movaxbx, 22 Мая 2013

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

    +14

    1. 1
    2. 2
    3. 3
    4. 4
    template<typename T>
    constexpr size_t printed_sizeof() {
        return log10(sizeof(T)) + 1;
    }

    Осваиваем новые стандарты.

    roman-kashitsyn, 19 Марта 2013

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

    +14

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    void ThumbnailAdapter::clearCache(size_t index) {
        if ((size_t)-1 == index) {
            mImages.clear();
        } else {
            ImagesMap::iterator it = mImages.find (index);
            if (mImages.end() != it) {
                mImages.erase(it);
            }
        }
    }

    годная очистка map'ы

    shomeser, 12 Марта 2013

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

    +14

    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
    struct base {
       template <class Foo>
    	base() {}
    };
    
    struct derived {
    	derived()
    		: base::base<int>()		// why not?? WHHYYYY?
    	{}
    };
    
    base b1 = base::base<int>();
    base b2<int>();

    долбанный комитет
    им проще запретить, чем продумать нормальный способ вызова шаблонного конструктора

    defecate-plusplus, 09 Марта 2013

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

    +14

    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
    int main(int argc, char* argv[])
    {
    
         SetConsoleCP(1251);// установка кодовой страницы win-cp 1251 в поток ввода
       SetConsoleOutputCP(1251); // установка кодовой страницы win-cp 1251 в поток вывода
        setlocale(LC_ALL,"Ukrainian");
    
        if(argc<2)
        {
            argv[1] = (char*)malloc(500*sizeof(char));
            //printf("Vvedit' imya vxidnogo failu: \n");
            //scanf("%s",argv[1]);
            argv[1]="1.txt";
    
        }

    Abbath, 14 Февраля 2013

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

    +14

    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
    #define MAX_MONSTER_ID			600
    #define MAX_ITEM_FOR_MONSTER	40
    
    	for (int j=0; j < 1000; j++)
    	{
    		AllMobItemsDrop[j].MMap			= 0;
    		AllMobItemsDrop[j].MMinLvl		= 0;
    		AllMobItemsDrop[j].MMaxLvl		= 0;
    		AllMobItemsDrop[j].IDropRate	= 0;
    		AllMobItemsDrop[j].IGroup		= 0;
    		AllMobItemsDrop[j].IIndex		= 0;
    		AllMobItemsDrop[j].IMinLvl		= 0;
    		AllMobItemsDrop[j].IMaxLvl		= 0;
    		AllMobItemsDrop[j].ILvlRate		= 0;
    		AllMobItemsDrop[j].IMinOpt		= 0;
    		AllMobItemsDrop[j].IMaxOpt		= 0;
    		AllMobItemsDrop[j].IOptRate		= 0;
    		AllMobItemsDrop[j].ISkill		= 0;
    		AllMobItemsDrop[j].ISkillRate	= 0;
    		AllMobItemsDrop[j].ILuck		= 0;
    		AllMobItemsDrop[j].ILuckRate	= 0;
    		AllMobItemsDrop[j].IMinExc		= 0;
    		AllMobItemsDrop[j].IMaxExc		= 0;
    		AllMobItemsDrop[j].IExcRate		= 0;
    		AllMobItemsDrop[j].IAnc			= 0;
    		AllMobItemsDrop[j].IAncRate		= 0;
    	}
    
    	AllMobArrayMaxItem = 0;
    
    	for (int i=0; i < MAX_MONSTER_ID; i++)
    	{
    		for (int j=0; j < MAX_ITEM_FOR_MONSTER; j++)
    		{
    			ItemsDrop[i][j].MMap		= 0;
    			ItemsDrop[i][j].MMinLvl		= 0;
    			ItemsDrop[i][j].MMaxLvl		= 0;
    			ItemsDrop[i][j].IDropRate	= 0;
    			ItemsDrop[i][j].IGroup		= 0;
    			ItemsDrop[i][j].IIndex		= 0;
    			ItemsDrop[i][j].IMinLvl		= 0;
    			ItemsDrop[i][j].IMaxLvl		= 0;
    			ItemsDrop[i][j].ILvlRate	= 0;
    			ItemsDrop[i][j].IMinOpt		= 0;
    			ItemsDrop[i][j].IMaxOpt		= 0;
    			ItemsDrop[i][j].IOptRate	= 0;
    			ItemsDrop[i][j].ISkill		= 0;
    			ItemsDrop[i][j].ISkillRate	= 0;
    			ItemsDrop[i][j].ILuck		= 0;
    			ItemsDrop[i][j].ILuckRate	= 0;
    			ItemsDrop[i][j].IMinExc		= 0;
    			ItemsDrop[i][j].IMaxExc		= 0;
    			ItemsDrop[i][j].IExcRate	= 0;
    			ItemsDrop[i][j].IAnc		= 0;
    			ItemsDrop[i][j].IAncRate	= 0;
    		}
    		ArrayMaxItem[i] = 0;
    	}

    Рабочий код с одного сервера. Код инициализации класа с заполнением структуры. А ведь это можно было уместить в:
    memset(&AllMobItemsDrop, 0, sizeof(AllMobItemsDrop));
    memset(&ItemsDrop, 0, sizeofe(ItemsDrop));

    Killbrum, 31 Января 2013

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