1. ActionScript / Говнокод #5808

    −95

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    switch(cbChanges.selectedIndex)
    {
         case 1:
                changes = CHANGES_MODIFIED_STATUS;
                break;
         case 1:
                changes = CHANGES_JOINERS_STATUS;
                break;
         case 1:
                changes = CHANGES_LEAVERS_STATUS;
                break;
    }

    Epic Fail!

    Запостил: dimas_art, 25 Февраля 2011

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

    • паста итальяно
      Ответить
    • Это компилируется?
      Ответить
      • Ответить
      • Даже если компилятору ничего не стоит определить, что все кейсы одинаковые:

        function :Test::private:testSwitch()::void
            maxStack:2 localCount:2 initScopeDepth:9 maxScopeDepth:10
                debugfile     	"/home/wvxvw/workspace/Test/src;;Test.as"
                debugline     	13
                getlocal0     	
                pushscope     	
                jump          	L0
        
            L1: label         	
                debugline     	17
                findpropstrict	:trace
                pushstring    	"case 1"
                callproperty  	:trace (1)
                pop           	
                debugline     	18
                jump          	L2
        
            L3: label         	
                debugline     	19
                findpropstrict	:trace
                pushstring    	"case 2"
                callproperty  	:trace (1)
                pop           	
                debugline     	20
                jump          	L2
        
            L4: label         	
                debugline     	21
                findpropstrict	:trace
                pushstring    	"case 3"
                callproperty  	:trace (1)
                pop           	
                debugline     	22
                jump          	L2
        
            L5: label         	
                jump          	L2
            L0: debugline     	15
                findpropstrict	:Math
                getproperty   	:Math
                callproperty  	:random (0)
                setlocal1     	
                debugline     	17
                pushbyte      	1
                getlocal1     	
                ifstrictne    	L6
        
                pushshort     	0
                jump          	L7
            L6: debugline     	19
                pushbyte      	1
                getlocal1     	
                ifstrictne    	L8
        
                pushshort     	1
                jump          	L7
            L8: debugline     	21
                pushbyte      	1
                getlocal1     	
                ifstrictne    	L9
        
                pushshort     	2
                jump          	L7
            L9: pushfalse     	
                iffalse       	L10
        
                pushshort     	3
                jump          	L7
            L10:pushshort     	3
            L7: kill          	1
                lookupswitch  	default:L5 maxcase:3 L1 L3 L4 L5
            L2: debugline     	24
                returnvoid    	
            0 Extras
            0 Traits Entries
        Ответить
        • private function testSwitch():void // line 13
          	{
          		switch (Math.random())
          		{
          			case 1: trace("case 1");
          				break;
          			case 1: trace("case 2");
          				break;
          			case 1: trace("case 3");
          				break;
          		}
          	}
          Ответить
        • L9: pushfalse // положить false на стек
           iffalse L10 // если последний элемент на стеке это false то перейти на метку L10
          
           pushshort 3 // положить на стек число 3
           jump L7 // перейти на метку L7 (все равно это никогда не произойдет)
          . . .
          L7: kill 1 // на всякий случай очистить первый регистр... ну а мало ли :)


          Кстати, вот этот кусок вообще потрясающий...
          Ответить

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