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

    +156.6

    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
    function getElementsByClass(searchClass,node,tag) {
    	var classElements = new Array();
    	if ( node == null )
    		node = document;
    	if ( tag == null )
    		tag = '*';
    	var els = node.getElementsByTagName(tag);
    	var elsLen = els.length;
    	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
    	for (i = 0, j = 0; i < elsLen; i++) {
    		if ( pattern.test(els[i].className) ) {
    			classElements[j] = els[i];
    			j++;
    		}
    	}
    	return classElements;
    }
    
    function show_im_gal (id)
    {
    .............
    	$("#tabs"+id+" img").css({opacity:1});
    	tab = getElementsByClass ('tabNavigation',null,null);
    .............
    }

    Судя по строке 22, автор знает, что проект использует jQuery. Но дальше юзает додревний getElementsByClass, выкопанный на лучших складах говноскриптов 1990-х!

    Запостил: deraider, 27 Марта 2010

    Комментарии (8) RSS

    • +1, всегда раздражают люди, которые думают, что чем больше кода — тем круче.
      Ответить
    • хрен ли ты гонишь на getElementsByClass Диаза?
      http://www.dustindiaz.com/getelementsbyclass/
      и она не 90-х годов
      Ответить
    • Да, вот это `$("#tabs"+id+" img")` убивает смысл вот этого `function getElementsByClass`.

      Но не говнокод - просто два разных решения. jQuery, очевидно, прикрутили позже.

      UPD: хотя зачем я кого-то оправдываю? ))
      Ответить
      • Если jQ прикрутили позже, то наговнокодил второй прогер, писавший строку 22. Ему ничего не стоило в 23 строке написать $('.tabNavigation') и выкинуть из проекта избыточный getElementsByClass.
        Ответить
        • Вы видимо никогда не кодили, а так бы знали заповедь программиста: Работает - ничего не трогай :)
          Ответить
        • на больших проектах затратно по времени все эти мелочи переводить, работает нативно - и хорошо, лучше не трогать
          Ответить
          • С одной стороны - да, иногда лучше не трогать. С другой стороны "Апатия наблюдателя" является антипаттерном.
            http://en.wikipedia.org/wiki/Anti-pattern#Analysis_anti-patterns
            Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий