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

    +151

    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
    ISQ.Widget.ContactForm.clickEventHandler=function(a){
        switch(a.result){
        case ISQ.Forms.clickEventEnum.SUBMIT:
    	ISQ.Widget.Log.add("contactForm submit");
    	ISQ.Widget.ContactForm.send(a.formElements);
    	ISQ.Widget.ContactForm.close(true);
    	break;
        case ISQ.Forms.clickEventEnum.CANCEL:
    	if(ISQ.Cnf.limited){
    	    break
    	}
    	ISQ.Widget.Log.add("contactForm cancel");
    	if(a.query!==""){
    	    ISQ.Widget.HTML.queryField.value=a.query
    	}
    	ISQ.Widget.ContactForm.canceled=true;
    	ISQ.Widget.ContactForm.close();
    	break;
        case ISQ.Forms.clickEventEnum.ERROR:
    	ISQ.Widget.Log.add("contactForm input error");
    	break
        }
    };

    Если честно, то тут автор даже удивил. Как-то раньше ни разу не пришлось два брейка в одном кейсе делать, все как-то одним обходился.

    Запостил: wvxvw, 04 Июня 2012

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

    • решил весь проект сюда перепостить ?))
      Ответить
      • Вы бы залились слезами, если бы тут был весь проект. Я его пока что читаю и параллельно отступы расставляю, так, если что-то приметное попадается, то сюда.

        total 1792
        -rw-r--r-- 1 wvxvw  23214 Jun  3 19:23 Ajax.js
        -rw-r--r-- 1 wvxvw   2536 Jun  3 18:45 ExtendingECMA.js
        -rw-r--r-- 1 wvxvw   4068 Jun  3 18:44 ISQ.Base.js
        -rw-r--r-- 1 wvxvw   6662 Jun  3 19:32 ISQ.CDC.js
        -rw-r--r-- 1 wvxvw   7698 Jun  3 13:28 ISQ.CSS.js
        -rw-r--r-- 1 wvxvw  13558 Jun  3 19:09 ISQ.Data.js
        -rw-r--r-- 1 wvxvw   1774 Jun  4 14:39 ISQ.Debug.js
        -rw-r--r-- 1 wvxvw   3264 Jun  3 19:13 ISQ.Event.js
        -rw-r--r-- 1 wvxvw  21637 Jun  3 13:47 ISQ.Forms.js
        -rw-r--r-- 1 wvxvw   5624 Jun  3 19:42 ISQ.GUI.js
        -rw-r--r-- 1 wvxvw    919 Jun  3 19:13 ISQ.Handler.js
        -rw-r--r-- 1 wvxvw  21508 Jun  3 19:15 ISQ.Html.js
        -rw-r--r-- 1 wvxvw   7969 Jun  3 13:11 ISQ.Http.js
        -rw-r--r-- 1 wvxvw   1028 Jun  3 13:50 ISQ.ImagesList.js
        -rw-r--r-- 1 wvxvw   3037 Jun  3 19:12 ISQ.Infra.js
        -rw-r--r-- 1 wvxvw   3638 Jun  3 18:44 ISQ.Profiler.js
        -rw-r--r-- 1 wvxvw  38049 Jun  4 14:34 ISQ.Protocol.js
        -rw-r--r-- 1 wvxvw   1485 Jun  3 19:14 ISQ.Timer.js
        -rw-r--r-- 1 wvxvw  18686 Jun  3 19:11 ISQ.Tools.js
        -rw-r--r-- 1 wvxvw  75123 Jun  4 15:19 ISQ.Widget.AutoQuestion.js
        -rw-r--r-- 1 wvxvw  30114 Jun  4 17:10 ISQ.Widget.ContactForm.js
        -rw-r--r-- 1 wvxvw   4034 Jun  4 17:08 ISQ.Widget.Escalate.js
        -rw-r--r-- 1 wvxvw  97861 Jun  4 15:15 ISQ.Widget.Html.js
        -rw-r--r-- 1 wvxvw 116814 Jun  4 15:01 ISQ.Widget.js
        -rw-r--r-- 1 wvxvw  33655 Jun  4 16:58 ISQ.Widget.Query.js
        -rw-r--r-- 1 wvxvw   3134 Jun  4 17:04 ISQ.Widget.ThumbUp.js
        -rw-r--r-- 1 wvxvw   4630 Jun  4 17:01 ISQ.Widget.Translation.js
        -rw-r--r-- 1 wvxvw   1346 Jun  3 19:26 nanoRep.js
        -rw-r--r-- 1 wvxvw 219547 Jun  4 14:40 n.js
        -rw-r--r-- 1 wvxvw   5619 Jun  3 19:37 VisualEffects.js
        -rw-r--r-- 1 wvxvw   5120 Jun  3 19:34 VisualEffects.js~


        И это еще даже не весь проект.
        Ответить
    • а по-моему два брейка вполне нормально
      это как писать return в самом начале ф-ции после какой-то элементарной проверки и если делать больше ничего не надо
      с таким же успехом можно было бы убрать первый break и обернуть весь case в if. но зачем?
      Ответить
      • Кстати да. К сожалению многие считают правило типа один return на функцию религией. И устраивают крестовые походы на тех, кто так не делает.
        Но на самом деле, зачастую, в небольшой функции (а они ведь должны быть небольшими!) несколько return'ов, отбрасывающих кривые данные или return в цикле поиска очень наглядны и удобны, по сравнению с флагами, коими пытаются нас кормить адепты-одноретурнцы.

        Так что не вижу ничего плохого в двух бряках. Да собственно как и в варианте без двух бряков.
        Ответить
      • Тут проблема не в том, что их два (хотя меня и от этого коробит), а в том, что если условие будет наоборот, то и второй брейк не нужен будет. Т.е. зачем автор так сделал - мне не понятно.

        Т.е. конструкция практически идентична if (condition) else { code }
        Ответить
        • второй break нужен чтобы не провалиться в следующий case, очевидно же
          Ответить
          • Внимательно прочитайте мой ответ выше.
            Ответить
            • прочитал. когда я отвечал, второго абзаца не было :)

              все равно не понимаю как можно без последнего break'а
              Ответить
              • Под вторым break'ом здесь, очевидно, понимается первый.
                Ответить
                • если так, то это дело вкуса и экономия табов на отступах внутри if :)
                  Ответить
        • if(!ISQ.Cnf.limited) {
          	ISQ.Widget.Log.add("contactForm cancel");
          	if(a.query!=="") {
          	    ISQ.Widget.HTML.queryField.value=a.query
          	}
          	ISQ.Widget.ContactForm.canceled=true;
          	ISQ.Widget.ContactForm.close();
          }
          break;

          Ну, в принципе, может так оно и лучше. Хотя лично я не вижу плохого в обоих вариантах.
          Ответить
        • Имхо эта конструкция больше похожа на if (condition) return; code нежели на if (condition) {} else { code }. Но сколько людей - столько и мнений.
          Ответить
    • показать все, что скрытоВсем минусы! Всем добра!
      Ответить

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