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

    +165

    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
    $(document).ready(function()
    	{
    	var flag=true;
    	$("#reg").click(function()
    		{
    			if(flag==true)
    			{
    				$("#reg2").slideUp();
    				flag=!flag;
    			}
    			else
    			{
    				$("#reg2").slideDown();
    				flag=!flag;
    			}
    	});
    });

    Новейшие технологии позволяют показывать элемент, если он скрыть и скрывать, если показан. Найдено здесь http://javascript.ru/forum/62011-post4.html

    Запостил: eval, 03 Июля 2010

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

    • Радует шестая строчка (flag==true) и flag=!flag два раза.
      Ответить
    • показать все, что скрытоА как нужно было сделать? что-то мне не доходит
      Ответить
      • обращаем внимание на коммент инкануса, и говнокод превращается.....
        Ответить
      • $("#reg2")[flag ? 'slideUp' : 'slideDown'](), flag = !flag;

        А лучше .slideToggle()
        Ответить
      • Хотя бы так:
        if(flag)
        {
         $("#reg2").slideUp();
         }
        else
        {
         $("#reg2").slideDown();
         }
         flag=!flag;

        А вообще toggle.

        Мне вот интересно -- Вы правда не увидели говна в этом коде? Тоесть копипаста Вас не смутила?
        Ответить
        • кстати, копипаста при всех недостатках, о коих кричат, имеет один маленький забытый плюс: два куска независимы друг от друга, и один кусок можно независимо от остальных изменять. что очень хорошо для всяческих todo- и "not supported yet" заглушек.
          и еще один плюс поменьше (или побольше?): копипаста позволяет избежать typo-ошибок
          Ответить
          • хм))
            а можно примеры?
            Ответить
            • Извольте.

              я не помню наизусть жкуери, но примерно так, даже на примере сабжа:
              вот я допустим передумал, и хочу, что бы у меня фигнюшка не вылазила\залезала, а вылазила\растворялась.
              тогда сабж достаточно заменить в одном месте (для простоты, не оригинал сабжа, а ваша редакция):

              if(flag)
              {
               $("#reg2").slideUp();
               }
              else
              {
               $("#reg2").fadeOut();
               }
               flag=!flag;


              тогда как тру-(безусловно тру)вариант Эвала .slideToggle() пришлось бы переписывать полностью
              Ответить
              • Это называется рефакторинг:)
                Ответить
                • что ж, я выразил свое замечание и доказал его.

                  а про рефакторинг....
                  именно поэтому его(рефакторинга) природа не механическая, а интеллектуальная. Иначе бы, при гипотетическом туле автоматического кодоанализа и рефакторинга мы бы получали еще более жуткий говнокод, который все похожие куски кода воспринял бы как копипасты и оформил в функции\процедуры\методы, что, очевидно, далеко не всегда корректна.
                  Только логически связанный копипаст нужно рефакторить, а в указанных мною случаях он полезен
                  Ответить
                  • Я имел ввиду что сейчас копипаст нужно конечно убрать. А если он понадобится -- добавить обратно
                    Ответить
                    • сейчас то да. потому что ветки условия логически связаны
                      Ответить
              • Да ну?

                $("#reg2")[flag ? 'slideUp' : 'fadeOut'](), flag = !flag;

                И где его пришлось полностью переписывать? Пару букв подправить и всё.
                Ответить
                • а это называется рефакторинг, и не надо подменять понятия )
                  дело тут не в количестве букв (их мало вообще, поскольку пример короток), а в том, что вы заменили безусловную логику (с тоггл) на условную
                  Ответить
                  • Да-да, я уже понял, что говнокод — труЪ, а все, кто пишут код без душка — идиоты.
                    Ответить
                    • опять передергиваете. а я только об этом: http://govnokod.ru/3633#comment37515

                      а вообще как раз только идиот вылизывает свой код до полной труеты. Где не критично - можно и не оптимизировать код, лишь бы понятный был. Почему? А потому, что не всегда ясно, как придется изменить код в будущем, а зря тратить силы на мелочи, вместо концентрации на задаче - мягко говоря, неумно
                      Ответить

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