Gå til innhold

smooth switch-syntax?


Anbefalte innlegg

Skrevet

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
   }

Videoannonse
Annonse
Skrevet (endret)

Mangler en } (for å avslutte function), mangler en del break; og noen logiske brister. Men ellers såg den jo, eh, fin ut?

Endret av nomore
Skrevet

Den siste klammen som er der avslutter funksjonen, den bare er rykket litt for mye inn.

 

Hva er de logiske bristene? Dette er jo å anse som pseudokode.

Skrevet

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.)

Skrevet (endret)

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
Skrevet (endret)

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
Skrevet (endret)

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ø
Skrevet (endret)

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

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...