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

    +160.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
    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
    // всё ещё Wakaba Extension http://userscripts.org/scripts/review/23705
    function optionValue(optionName)
    {
    	var optionsString = (doOptionsPanel) ? get_cookie('wkExtOptions') : '';
    	if (optionsString == '')
    	{
    		switch (optionName)
    		{
    			case 'doQuickReply':
    				return doQuickReply;
    				break;
    			case 'doThreadExpansion':
    				return doThreadExpansion;
    				break;
    			case 'doPostExpansion':
    				return doPostExpansion;
    				break;
    /*... еще 12 условий ... */
    			default:
    				return 0;
    		}
    	}
    	else
    	{
    		var optionsArray = optionsString.split(/,/);
    		switch (optionName)
    		{
    			case 'doQuickReply':
    				return parseInt(optionsArray[0]); // parseInt ensures that 0 is handled as an integer. lol, weak types
    				break;
    			case 'doThreadExpansion':
    				return parseInt(optionsArray[1]);
    				break;
    			case 'doPostExpansion':
    				return parseInt(optionsArray[2]);
    				break;
    /*... еще 12 условий ... */
    			default:
    				return 0;
    		}
    	}
    }

    Естественно, я бы сделал это хэшами.
    Но кому-то код, что выше понятнее...
    function optionValue(optionName)
    {
    var optionsString = (doOptionsPanel) ? get_cookie('wkExtOptions') : '';
    if(!optionsString){
    return options[optionName]; // не установлена опция - возвращается undefined
    }else{
    return defaultOptions[optionName];
    }
    }

    Запостил: m1el, 14 Февраля 2010

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

    • Вы, наверное, догадываетесь, как там устанавливаются опции ;)
      Ответить
    • А doQuickReply и пр. — глобальные переменные?
      Ответить
    • После своей первой книжки я тоже писал аналогичные перлы.
      А смеются наверно те, кто только что узнал, что можно сделать лучше
      Ответить
      • Смеются те, кто понимает, что дублирование кода (причем многократное: два сходных switch'а со сходными case'ами) - признак говна, а незнание неговнистого способа - повод найти его.
        Ответить

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