1. C++ / Говнокод #11574

    +20

    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
    //Вколите мне каплю никотина, а когда меня разорвет - сожгите ошметки напалмом.
    //Только это смоет мой позор.
    
    //Примерно так у меня выглядит вся обработка исключений:
    int main(int, char**) //или wWinMain, не важно
    {
    	try
    	{
    		//all stuff here
    	}
    	catch(std::exception e)
    	{
    		MessageBoxA(NULL, e.what(), "oops", MB_OK | MB_ICONERROR);
    	}
    	catch(...)
    	{
    		MessageBoxA(NULL, "Unknown error", "oops", MB_OK | MB_ICONERROR);
    	}
    	return 0;
    }
    
    //А еще у меня есть свой класс строки:
    class MyString
    {
    	wchar_t * data;
    	size_t length;
    	MyString(wchar_t * _data, size_t _length) : data(_data), length(_length) { }
    public:
    	//...
    	static MyString MyString::fromNumber(int num) 
    	{ //Грешен, определяю функции в заголовочном, хотя это и не тот случай.
    		wchar_t * data = new wchar_t[16];
    		HRESULT hr = StringCchPrintfW(data, 16, L"%d", num);
    		if(FAILED(hr))
    		{
    			throw std::exception("shit happend inside MyString::fromNumber(int)");
    		}
    		size_t len = 0;
    		hr = StringCchLengthW(data, 16, &len);
    		if(FAILED(hr))
    		{
    			throw std::exception("shit happend inside MyString::fromNumber(int)");
    		}
    		return MyString(data, len);
    	}
    };
    
    //А вкупе с обработкой исключений чуть выше...
    //Чуть не забыл про auto_ptr. Укорочено до сути.
    class Base
    {
    protected:
    	std::auto_ptr<SomeType> data; //А где он инициализируется?...
    public:
    	virtual ~Base() { }
    };
    class Deriv : public Base
    {
    public:
    	Deriv() : Base() 
    	{ 
    		data = std::auto_ptr<SomeType>(new SomeType(args)); //...а вот тут он инициализируется!
    	}
    	virtual ~Deriv() { }
    };
    
    //Паттерны!
    class Single
    {
    	Single(); //Без реализации.
    	template<typename T> Single(T); //Без реализации.
    	template<typename T1, typename T2> T1 operator = (T2); //Без реализации.
    	class Ton
    	{
    		//...
    	};
    	static Ton object;
    	static Ton initObject();
    public:
    	Ton & instance() { return object; }
    };
    
    
    //Мне стыдно.

    Xom94ok, 11 Августа 2012

    Комментарии (14)
  2. C++ / Говнокод #11573

    +83

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    void somefunc(bool val)
    {
        assert(0 == val || 1 == val);
    ...
    }

    Многоуровневый говнокод. Во первых, индусское сравнение задом наперед. Во вторых, выражение в ассерте всегда истенно. Когда GCC возбухнул по этому поводу, то код был за-#ifdef-ен, но оставлен для других менее умных компиляторов.

    alexzak, 11 Августа 2012

    Комментарии (18)
  3. Python / Говнокод #11572

    −101

    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
    def comment_absolute_url(request, pid):
        """
        This is a function which return paginated absolute URL for comment.
        It replaces default comment.get_absolute_url()
        """
        comment = Comment.objects.get(id=pid)
        pagination_interval = 25 # will be defined by user settings in future
        all_comments = Comment.objects.filter(content_type=comment.content_type, object_pk=comment.object_pk,
            is_public=True, is_removed=False)
        # I will post it to govnokod.ru, okay? ;)
        dummy_counter = int(0)
        needed_page = int(dummy_counter / pagination_interval) + 1
        for dummy_comment in all_comments:
            dummy_counter = dummy_counter + 1
            if dummy_comment.id == comment.id:
                needed_page = int(dummy_counter / pagination_interval) + 1
            # making an URL
        if comment.content_type.name == "forum post":
            item = ForumPost.objects.get(id=comment.object_pk)
            url_prefix = "forum/%s/%i" % (item.forum.url, item.id)
        elif comment.content_type.name == "new":
            item = New.objects.get(id=comment.object_pk)
            url_prefix = "news/%i" % item.id
        fixed_url = "/%s/?page=%i#%i" % (url_prefix, needed_page, int(pid))
        return fixed_url

    В Django есть достаточно няшный comments framework. А ещё там есть такой же няшный paginator. А вот вместе их подружить разработчики django почему-то постеснялись, и поэтому comment.get_absolute_url() нихрена не знает о существовании paginator-а. Эта функция призвана помочь безумному автору сослаться на коммент.

    Веселье начинается от dummy_counter-а.

    fat0troll, 11 Августа 2012

    Комментарии (0)
  4. Java / Говнокод #11571

    +75

    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
    private void viewField(int id) {
            try {
                List<Fieldmaterials> materials = materialsSession.FieldmaterialsBy(id);
                int size = materials.size() - 1;
                int i = 0;
                JSONWriter json = new JSONStringer().object();
                json.key("namefield").array();
    
                while (i <= size) {
                    Fieldmaterials get = materials.get(i);
                    json.value(get.getNamefield());
                    i++;
                }
                json.endArray();
                json.key("typefield").array();
    
                i = 0;
                while (i <= size) {
                    Fieldmaterials get = materials.get(i);
                    json.value(get.getTypefield());
                    i++;
                }
    
                json.endArray();
                json.key("orderfield").array();
    
                i = 0;
                while (i <= size) {
                    Fieldmaterials get = materials.get(i);
                    json.value(get.getOrderfieldmaterials());
                    i++;
                }
                json.endArray().endObject();
    
            } catch (Exception e) {
                e.printStackTrace();
            }

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

    Kerny, 11 Августа 2012

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

    +52

    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
    $hash = md5($eshopId."::".
                            $orderId."::".
                    	    $_REQUEST["serviceName"]."::".
                            $_REQUEST["eshopAccount"]."::".
                            $_REQUEST["recipientAmount"]."::".
                			$_REQUEST["recipientCurrency"]."::".
                			$_REQUEST["paymentStatus"]."::".
                			$_REQUEST["userName"]."::".
                            $_REQUEST["userEmail"]."::".
                			$_REQUEST["paymentData"]."::".
                			$secretKey);
                if (strtoupper($_REQUEST["hash"]) != strtoupper($hash)) {
                    die('Err: wrong hash.');
                }
    ......

    я конечно уважаю modx но ето через чур
    http://bezumkin.ru/modx/minishop/extra/intellectmoney.html

    Sulik78, 11 Августа 2012

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

    +56

    1. 1
    $where = str_replace("post_status = 'publish'","post_status = 'publish' OR post_status = 'future' OR post_status = 'draft' OR post_status = 'inherit'", $where);

    Wordpress. Govnocode is poetry

    telnet, 10 Августа 2012

    Комментарии (6)
  7. Куча / Говнокод #11568

    +128

    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
    rotate n xs = b ++ a
        where n'     = n `mod` (length xs)
          (a, b) = splitAt ((length xs) - n') xs
    
    rotateAmount xs = _ra 0 ((length xs) - 1) (listArray (0, ((length xs) - 1)) xs)
        where _ra s e ys = if (e - s) == 1 
                           then (if ((ys ! s) &lt (ys ! e)) then s else e)  -- base case
                           else let h  = ys ! s                  -- first item
                                    l  = ys ! e                  -- last item
                                    mi = s + ((e - s) `div` 2)   -- middle index
                                    m  = ys ! mi                 -- middle item
                                in if (h &lt l)
                                   then s                        -- return start index
                                   else if (h &gt m)
                                        then _ra s  mi ys
                                        else _ra mi e  ys

    A “rotated array” is an array of integers in ascending order, after which for every element i, it has been moved to element (i + n) mod sizeOfList. Write a function that takes a rotated array and, in less-than-linear time, returns n (the amount of rotation). http://techguyinmidtown.com/2008/07/05/my-answers-to-the-microsoft-interview-questions

    FAKYOUINTIRNEAT, 10 Августа 2012

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

    +70

    1. 1
    $device->logicalDevices = $device->getLogicalDevices();

    ООП, такой ООП.

    travka, 10 Августа 2012

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

    +66

    1. 1
    2. 2
    3. 3
    4. 4
    $pr = array();
    foreach ($params as $k => $v)
        $pr[] .= urlencode($k).'='.urldecode($v);
    $data = join('&', $pr);

    http_build_query() для слабаков! Только велосипеды, только выстрел себе в ногу.
    /netcat/admin/nc_adminnotice.class.php

    telnet, 10 Августа 2012

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

    +138

    1. 1
    2. 2
    3. 3
    4. 4
    code = _factorCodeMax[factorUnid];
    code++;
    _factorCodeMax[factorUnid] = code;
    return code;

    Maps, 10 Августа 2012

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