Gå til innhold

smooth switch-syntax?


Anbefalte innlegg

Hva synes dere om denne syntaxen?

 

function niceFunction($value) {

       switch ($value) {
           case CONSTANT1:
           case CONSTANT2:
           case CONSTANT3:
               switch ($value) {
                   case CONSTANT1:
                       //Gjør noe spesifikt for konstant 1
                       break;
                   case CONSTANT2:
                       //Gjør noe spesifikt for konstant 2
                       break;
                   case CONSTANT3:
                       //Gjør noe spesifikt for konstant 3
                       break;
               }

               //Gjør noe for konstant 1, 2 og 3             
               break;
           case CONSTANT4:
               //Gjør noe spesifikt for konstant 4
               break;
           case CONSTANT5:
               //Gjør noe spesifikt for konstant 5
               break;
    default:
	return false;
	break;
       }

       //Returner noe
   }

Lenke til kommentar
Videoannonse
Annonse

Ikke veien jeg hadde gått. Det å nøste switcher inne i en switch blir fort uoversiktlig.

Hadde heller brukt en if setning, slik at du kan lage logiske sjekker for vær av delene. Eller laget den felles koden for konstant 1,2&3 ut i en egen funksjon.

 

(Det at en if setning er tregere enn en switch er kun en gammel myte.)

Lenke til kommentar

Ikke veien jeg hadde gått. Det å nøste switcher inne i en switch blir fort uoversiktlig.

Hadde heller brukt en if setning, slik at du kan lage logiske sjekker for vær av delene. Eller laget den felles koden for konstant 1,2&3 ut i en egen funksjon.

 

(Det at en if setning er tregere enn en switch er kun en gammel myte.)

 

Så du ville foretrukket å nøste IF forran SWITCH?

 

function niceFunction($value) {

if (in_array($value, array(CONSTANT1, CONSTANT2, CONSTANT3))) {
	if ($value == CONSTANT1) {
		//Gjør noe spesifikt for konstant 1
	}
	else if ($value == CONSTANT2) {
		//Gjør noe spesifikt for konstant 2
	}
	else if ($value == CONSTANT3) {
		//Gjør noe spesifikt for konstant 3
	}

	//Gjør noe for konstant 1, 2 og 3 
}
else if ($value == CONSTANT4) {
	//Gjør noe spesifikt for konstant 4
}
else if ($value == CONSTANT5) {
	//Gjør noe spesifikt for konstant 5
}

       //Returner noe
}

Endret av xibriz
Lenke til kommentar

Tror jeg ville gjort samme, men kanskje med klammeparentes slik:

function niceFunction($value) {

   	switch ($value) 
   	{
       	case CONSTANT1:
       	case CONSTANT2:
       	case CONSTANT3:
       	{
           	switch ($value) 
           	{
               	case CONSTANT1:
               	{
                   	//Gjør noe spesifikt for konstant 1
                   	break;
               	}
               	case CONSTANT2:
               	{
                   	//Gjør noe spesifikt for konstant 2
                   	break;
               	}
               	case CONSTANT3:
               	{
                   	//Gjør noe spesifikt for konstant 3
                   	break;
               	}
           	}

           	//Gjør noe for konstant 1, 2 og 3        	
           	break;   
       	}
       	case CONSTANT4:
       	{
           	//Gjør noe spesifikt for konstant 4
           	break;
       	}
       	case CONSTANT5:
       	{
           	//Gjør noe spesifikt for konstant 5
           	break;
       	}
       	default:
       	{
           	return false;
           	break;
       	}
   	}

   	//Returner noe
}

 

Ville også hatt indentation, men jeg får det ikke med her av en eller annen grunn..

Endret av Warz
Lenke til kommentar

Mange, mange år siden jeg gjorde noe slikt. Erstattes enten med polimorfisme eller en eller annen form for dispatch table. Kommer jo veldig an på hva problem du skal løse dette her, men sånn kode som det der har en tendens til å råtne fælt over tid. Sier ikke at svære switcher, eller nøstede switcher for den saks skyld, er direkte feil, men det finnes ofte bedre måter å løse det på som dokumenterer bedre og som er enklere å utvide og endre over tid.

Endret av torbjørn marø
Lenke til kommentar

Mange, mange år siden jeg gjorde noe slikt. Erstattes enten med polimorfisme eller en eller annen form for dispatch table. Kommer jo veldig an på hva problem du skal løse dette her, men sånn kode som det der har en tendens til å råtne fælt over tid. Sier ikke at svære switcher, eller nøstede switcher for den saks skyld, er direkte feil, men det finnes ofte bedre måter å løse det på som dokumenterer bedre og som er enklere å utvide og endre over tid.

 

Polimorfisme i PHP?

 

EDIT: Jeg ser at det går hvis man bruker PHP 5.3

Endret av xibriz
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...