1. JavaScript / Говнокод #16148

    +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
    var pz = 1/Infinity;
    var mz = -1/Infinity;
    
    // неотличимы
    pz == mz; // true
    pz === mz; // true
    mz < pz; // false
    pz < mz; // false
    
    // но
    Math.min(pz, mz); // -0
    Math.max(pz, mz); // 0

    Так как же отличить -0 от +0?

    (-1.0 / mz) == Infinity?

    bormand, 11 Июня 2014

    Комментарии (6)
  2. Java / Говнокод #16147

    +71

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    List<String> list = ...;
    for (String s : someStringList)
        list.add(s);
    list.set(SOME_CONST, someString);
    list.add(0, secondSomeString);

    Поначалу никак не мог понять, почему list.get(SOME_CONST) != someString. Ну и копирование через цикл тоже норм

    evg_ever, 11 Июня 2014

    Комментарии (29)
  3. ActionScript / Говнокод #16146

    −106

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    case EffectVO.ENTER_FROM_LEFT: 
    	xFrom = - (sprite.boundingRect.width + Math.abs(sprite.boundingRect.x));
    	xFrom *= extraSafetyScaleFactor;
    	objectTween = TweenLite.from(spriteView, 0.5,
            {
                x: String(xFrom),
                immediateRender: true,
                ease: Cubic.easeOut
            });

    Культовый код. Вот, недавно набрел на ссылку:
    http://en.wikipedia.org/wiki/Cargo_cult_programming
    Почему-то во всем проекте анимированые свойства либо конвертируются в строки, либо изначально задаются строками. Писец давно уволился, и выяснить первопричину сейчас не представляется возможным, но существует предположение, что таким образом писец боролся с NaN... вряд ли это конечно могло помочь, но на то он и культ.

    wvxvw, 11 Июня 2014

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

    −99

    1. 1
    2. 2
    3. 3
    def dict_to_tuple(d):
        """Converts an ordered dict into a tuple."""
        return tuple(dict_to_list(d))

    hugr, 11 Июня 2014

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

    +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
    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
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    <?
    function flevel($exp)
    {
    include_once "config/mysql.php";
    
    	$querylevel = "SELECT maxexp FROM level";
    	$levelquery = mysql_query($querylevel);
    	while($rowslvl = mysql_fetch_row($levelquery))
    	{
    	$levelarr[] = $rowslvl[0];
    	}
    	
    	
    	
    	switch(TRUE)
        {
    		
        case ($exp <= $levelarr[0]):
        return $level = "1";
        break;
    
        case ($exp <= $levelarr[1]):
        return $level = "2";
        break;
    
        case ($exp <= $levelarr[2]):
        return $level = "3";
        break;
    
        case ($exp <= $levelarr[3]):
        return $level = "4";
        break;
    	
    	case ($exp <= $levelarr[4]):
        return $level = "5";
        break;
    	
    	case ($exp <= $levelarr[5]):
        return $level = "6";
        break;
    	
    	case ($exp <= $levelarr[6]):
        return $level = "7";
        break;
    	
    	case ($exp <= $levelarr[7]):
        return $level = "8";
        break;
    	
    	case ($exp <= $levelarr[8]):
        return $level = "9";
        break;
    	
    	case ($exp <= $levelarr[9]):
        return $level = "10";
        break;
    	
    	case ($exp <= $levelarr[10]):
        return $level = "11";
        break;
    	
    	case ($exp <= $levelarr[11]):
        return $level = "12";
        break;
    	/* ... */
    	case ($exp <= $levelarr[42]):
        return $level = "43";
        break;
    	
    	case ($exp <= $levelarr[43]):
        return $level = "44";
        break;
    	
    	case ($exp <= $levelarr[44]):
        return $level = "45";
        break;
    	
    	case ($exp <= $levelarr[45]):
        return $level = "46";
        break;
    	
    	case ($exp <= $levelarr[46]):
        return $level = "47";
        break;
    	
    	case ($exp <= $levelarr[47]):
        return $level = "48";
        break;
    	
    	case ($exp <= $levelarr[48]):
        return $level = "49";
        break;
    	
    	case ($exp > $levelarr[49]):
        return $level = "50";
        break;
        }
    }
    ?>

    Пришел в проект по созданию веб игры, смотрю организацию проекта... Жопа там, что папки, что код, что база одно и тоже, каша. Вот нашел одну забавную функцию. Она возвращает уровень персонажа судя по кол-во XP. Вместо того что бы писать 'SELECT `level` FROM `level` WHERE `minexp` <= ' . $exp . ' AND `maxexp` > ' . $exp надо было switch .. case писать. Нету слов.

    volter9, 11 Июня 2014

    Комментарии (22)
  6. Python / Говнокод #16142

    −97

    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
    jstemplate = ''
    jstemplate += '$(document).ready(function () {'
    jstemplate += '    $(document).on("click", ".im", function () {'
    jstemplate += '        if ($(this).attr("src") != "") {'
    jstemplate += '            $("#im").attr("src", $(this).attr("src"));'
    jstemplate += '            $("#FixedBlack").show().fadeTo(200, 1);'
    jstemplate += '            $("#im").show().fadeTo(0.5, 1);'
    jstemplate += '        }'
    jstemplate += '    });'
    jstemplate += '    $(document).on("click", "#FixedBlack", function () {'
    jstemplate += '        $("#im").hide();'
    jstemplate += '        $("#FixedBlack").stop(true).fadeTo(200, 0, function () {'
    jstemplate += '            $("#FixedBlack").hide();'
    jstemplate += '        });'
    jstemplate += '    });'
    jstemplate += '});'

    Это вместо того, чтобы положить шаблон в файл и спокойно прочитать его в переменную. nuff said.

    Bispja, 10 Июня 2014

    Комментарии (44)
  7. JavaScript / Говнокод #16141

    +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
    46. 46
    47. 47
    48. 48
    49. 49
    (function(G, D) {
        "use strict";
        var $ = G.jQuery,
            listener;
    
        function addListener(elem, fn) {
            function handler(event) {
                event = event || G.event;
                var dx = event.DeltaX || event.wheelDeltaX || event.detail || 0,
                    dy = event.DeltaY || event.wheelDeltaY || event.detail || 0;
                event.dx = dx === 0 ? 0 : dx / Math.abs(dx);
                event.dy = dy === 0 ? 0 : dy / Math.abs(dy);
                fn(event);
            }
    
            if (elem.addEventListener) {
                if (D.hasOwnProperty('onwheel')) { //Modern browsers
                    listener = "wheel";
                } else if (D.hasOwnProperty('onmousewheel')) { //Old browsers
                    listener = "mousewheel";
                } else { //FF<17
                    listener = "MozMousePixelScroll";
                }
                elem.addEventListener(listener, handler, false);
            } else { //IE<9
                elem.attachEvent("onmousewheel", handler);
                listener = "onmousewheel";
            }
        }
    
        function removeListener(elem) {
            if (elem.removeEventListener) {
                elem.removeEventListener(listener);
            } else {
                elem.detachEvent(listener);
            }
        }
    
        $.fn.mousewheel = function(fn) {
            return this.each(function() {
                addListener(this, fn);
            });
        };
        $.fn.unmousewheel = function(fn) {
            return this.each(function() {
                removeListener(this, fn, false);
            });
        };
    }(this, document));

    Написал плагин для jQuery, который цепляет на элементы обработчик события вращения колесика мыши. Что скажете? Как бы вы написали функцию unmousewheel()?

    dunmaksim, 10 Июня 2014

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

    +5

    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
    template <class ResultBinaryFunc, class BinaryFunc1, class BinaryFunc2>
    class complex_binary_compose: public std::binary_function<BinaryFunc1::first_argument_type,
    														  BinaryFunc1::second_argument_type,
    														  ResultBinaryFunc::result_type>
    {
    public:
    	complex_binary_compose(const ResultBinaryFunc & BF, const BinaryFunc1 & UF1, const BinaryFunc2 & UF2) :
    	  _bf(BF), _f1(UF1), _f2(UF2) {}
    	result_type operator()(first_argument_type arg1, second_argument_type arg2)
    	{
    		return _bf(_f1(arg1, arg2), _f2(arg1, arg2));
    	}
    private:
    	ResultBinaryFunc _bf;
    	BinaryFunc1 _f1;
    	BinaryFunc2 _f2;
    };
    
    template <class ResultBinaryFunc, class BinaryFunc1, class BinaryFunc2>
    complex_binary_compose<ResultBinaryFunc, BinaryFunc1, BinaryFunc2>
    	complex_compose2(const ResultBinaryFunc & BF, const BinaryFunc1 & UF1, const BinaryFunc2 & UF2)
    {
    	return complex_binary_compose<ResultBinaryFunc, BinaryFunc1, BinaryFunc2>(BF, UF1, UF2);
    }

    Чтобы было удобно применять stl алгоритмы.

    laMer007, 10 Июня 2014

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

    +8

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    # ifndef BOOST_NO_PARTIAL_SPECIALIZATION
          , check<Model>
    # else
          , check<failed ************ Model::************>
    # endif

    LispGovno, 10 Июня 2014

    Комментарии (1)
  10. Pascal / Говнокод #16138

    +98

    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
    procedure TForm1.FormCreate(Sender: TObject);
    var
      H: THandle;
      R: TRect;
      appbardata: tappbardata;
    
    begin
    
      sx := 0;
      sy := 0;
      ax := 0;
      ay := 0;
      sh := GetSystemMetrics(SM_CYSCREEN);
    
      ZeroMemory(@appbardata, SizeOf(tappbardata));
      SHAppbarmessage(5, appbardata);
    
      If appbardata.rc.TopLeft.X > 1 then
      begin
        ax := appbardata.rc.BottomRight.X - appbardata.rc.TopLeft.X;
        ax:=ax+4;
      end
      else
      ax:=6;
    
      If appbardata.rc.TopLeft.y > 1 then
      begin
        ay := appbardata.rc.BottomRight.y - appbardata.rc.TopLeft.y;
      ay:=ay+4;
      end
      else
      ay:=6;
    
      sx := (GetSystemMetrics(SM_CXSCREEN)-form1.ClientWidth-ax);
      sy := (GetSystemMetrics(SM_CYSCREEN)-form1.ClientHeight-ay);
    
      Form1.left := sx;
      Form1.Top :=sy;
    
    end;

    Выравнивание всплывающего окошка точно по правому краю.
    Даже не знаю, гк ли это, ибо глаз не видит себя. Но смотрится очень странно, почти как хак.

    brutushafens, 10 Июня 2014

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