Raised This Month: $51 Target: $400
 12% 

switch( ) sur deux cas


  
 
 
Thread Tools Display Modes
Author Message
Kidev
Veteran Member
Join Date: Jun 2010
Location: France
Old 11-23-2011 , 13:43   switch( ) sur deux cas
#1

Bonjour tout le monde!

Alors j'aimerai savoir un truc tout simple. Je switch() sur une case de tableau alors qu'il n'y a que deux cas possibles. Je trouve cela plus lisible. De plus, si je rajoute des options, cela sera plus rapide, et il n'y aura pour le coup plus à hésiter entre switch et if.

Qu'est-ce qui est le mieux? switch ou if() et else if() ?

Voici mon code qui lit un fichier de conf pour vous faire une idée:
PHP Code:
public iChatConfig( )
{
    new 
szCfgFile128 ];
    
get_configsdirszCfgFilecharsmaxszCfgFile ) );
    
formatexszCfgFilecharsmaxszCfgFile ), "%s/config.ichat"szCfgFile );

    new 
fp fopenszCfgFile"rt" );
    if ( !
fp )
    {
        return;
    }

    new 
szLineData364 ], szLineKey96 ], szLineValue264 ];
    while ( !
feoffp ) )
    {
        
fgetsfpszLineDatacharsmaxszLineData ) );
        
trimszLineData );

        if ( 
szLineData] == ';' || szLineData] == '#' || ( szLineData] == '/' && szLineData] == '/' ) || !szLineData] )
        {
            continue;
        }

        
parseszLineDataszLineKeycharsmaxszLineKey ), szLineValuecharsmaxszLineValue ) );

        switch ( 
szLineKey] )
        {
            case 
'F':
            {
                switch ( 
szLineKey] )
                {
                    case 
'D':
                    {
                        switch ( 
szLineKey11 ] )
                        {
                            case 
'A':
                            {
                                if ( 
equalszLineKey"FORMAT_DEF_ALIVE" ) )
                                {
                                    
copyformatAllDefAlivecharsmaxformatAllDefAlive ), szLineValue );
                                }
                            }
                            case 
'D':
                            {
                                if ( 
equalszLineKey"FORMAT_DEF_DEAD" ) )
                                {
                                    
copyformatAllDefAlivecharsmaxformatAllDefAlive ), szLineValue );
                                }
                            }
                        }
                    }
                    case 
'A':
                    {
                        switch ( 
szLineKey13 ] )
                        {
                            case 
'A':
                            {
                                if ( 
equalszLineKey"FORMAT_ADMIN_ALIVE" ) )
                                {
                                    
copyformatAllAdminAlivecharsmaxformatAllAdminAlive ), szLineValue );
                                }
                            }
                            case: 
'D':
                            {
                                if ( 
equalszLineKey"FORMAT_ADMIN_DEAD" ) )
                                {
                                    
copyformatAllAdminAlivecharsmaxformatAllAdminAlive ), szLineValue );
                                }
                            }
                        }
                    }
                    case 
'T':
                    {
                        switch ( 
szLineKey12 ] )
                        {
                            case 
'D':
                            {
                                switch ( 
szLineKey16 ] )
                                {
                                    case 
'A':
                                    {
                                        if ( 
equalszLineKey"FORMAT_TEAM_DEF_ALIVE" ) )
                                        {
                                            
copyformatTeamDefAlivecharsmaxformatTeamDefAlive ), szLineValue );
                                        }
                                    }
                                    case 
'D':
                                    {
                                        if ( 
equalszLineKey"FORMAT_TEAM_DEF_DEAD" ) )
                                        {
                                            
copyformatTeamDefAlivecharsmaxformatTeamDefAlive ), szLineValue );
                                        }
                                    }
                                }
                            }
                            case 
'A':
                            {
                                switch ( 
szLineKey18 ] )
                                {
                                    case 
'A'
                                    
{
                                        if ( 
equalszLineKey"FORMAT_TEAM_ADMIN_ALIVE" ) )
                                        {
                                            
copyformatTeamAdminAlivecharsmaxformatTeamAdminAlive ), szLineValue );
                                        }
                                    }
                                    case 
'D':
                                    {
                                        if ( 
equalszLineKey"FORMAT_TEAM_ADMIN_DEAD" ) )
                                        {
                                            
copyformatTeamAdminAlivecharsmaxformatTeamAdminAlive ), szLineValue );
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            case 
'C':
            {
                switch ( 
szLineKey] )
                {
                    case 
'C':
                    {
                        if ( 
equalszLineKey"CHAT_CLCMD_REMOVE" ) )
                        {
                            
removeOnSlash str_to_numszLineValue );
                        }
                    }
                    case 
'A':
                    {
                        if ( 
equalszLineKey"CHAT_ADMIN_SPY" ) )
                        {
                            
adminsSpy str_to_numszLineValue );
                        }
                    }
                    case 
'N':
                    {
                        if ( 
equalszLineKey"CHAT_NOTIFY" ) )
                        {
                            
userNotify str_to_numszLineValue );
                        }
                    }
                    case 
'R':
                    {
                        switch ( 
szLineKey12 ] )
                        {
                            case 
'A':
                            {
                                if ( 
equalszLineKey"CHAT_RADIUS_ALL" ) )
                                {
                                    
printRadiusAll str_to_floatszLineValue );
                                }
                            }
                            case 
'T':
                            {
                                if ( 
equalszLineKey"CHAT_RADIUS_TEAM" ) )
                                {
                                    
printRadiusTeam str_to_floatszLineValue );
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    
fclosefp );

Merci d'avance
__________________

Last edited by Kidev; 11-23-2011 at 13:47.
Kidev is offline
Arkshine
AMX Mod X Plugin Approver
Join Date: Oct 2005
Old 11-23-2011 , 14:20   Re: switch( ) sur deux cas
#2

Tu te réponds déjà à toi-même. Tu te prends la tête pour rien.
__________________
Arkshine is offline
Devil259
Veteran Member
Join Date: Dec 2009
Location: France (59)
Old 11-23-2011 , 15:00   Re: switch( ) sur deux cas
#3

switch() sur deux cas revient à faire if() et else if(), mais c'est plus lisible comme tu l'as dis. Sinon, c'est pareil.
Devil259 is offline
Kidev
Veteran Member
Join Date: Jun 2010
Location: France
Old 11-23-2011 , 15:51   Re: switch( ) sur deux cas
#4

Quote:
Originally Posted by Devil259 View Post
switch() sur deux cas revient à faire if() et else if(), mais c'est plus lisible comme tu l'as dis. Sinon, c'est pareil.
Oui je sais x)

Quote:
Originally Posted by Arkshine View Post
Tu te réponds déjà à toi-même. Tu te prends la tête pour rien.
Ok. Je connais pas exactement les limites de l'optimisable alors je demande. Surtout si ce dit code doit être approuvé
__________________
Kidev is offline
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 11-23-2011 , 16:28   Re: switch( ) sur deux cas
#5

Franchement c'est pas trop lisible mais bon peu importe.
Perso j'ai appris qu'un switch devient utile à partir de 3 cas.
Maintenant ce code semble s'exécuter qu'1 fois pour charger une config donc tu peux utiliser 150 if else equal contain etc... c'est pas trop grave.
__________________
- tired and retired -

- my plugins -
ConnorMcLeod is offline
Kidev
Veteran Member
Join Date: Jun 2010
Location: France
Old 11-24-2011 , 07:52   Re: switch( ) sur deux cas
#6

Quote:
Originally Posted by ConnorMcLeod View Post
Franchement c'est pas trop lisible mais bon peu importe.
Perso j'ai appris qu'un switch devient utile à partir de 3 cas.
Maintenant ce code semble s'exécuter qu'1 fois pour charger une config donc tu peux utiliser 150 if else equal contain etc... c'est pas trop grave.
Y'a une commande pour le relancer. Bon normalement on le fait 36x par secondes non plus x)
__________________
Kidev is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 01:24.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode