xibriz Skrevet 14. februar 2012 Del Skrevet 14. februar 2012 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
nomore Skrevet 14. februar 2012 Del Skrevet 14. februar 2012 (endret) Mangler en } (for å avslutte function), mangler en del break; og noen logiske brister. Men ellers såg den jo, eh, fin ut? Endret 14. februar 2012 av nomore Lenke til kommentar
xibriz Skrevet 14. februar 2012 Forfatter Del Skrevet 14. februar 2012 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. Lenke til kommentar
nomore Skrevet 14. februar 2012 Del Skrevet 14. februar 2012 Glem det. Leste feil Lenke til kommentar
JcV Skrevet 14. februar 2012 Del Skrevet 14. februar 2012 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
xibriz Skrevet 14. februar 2012 Forfatter Del Skrevet 14. februar 2012 (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 14. februar 2012 av xibriz Lenke til kommentar
Warz Skrevet 14. februar 2012 Del Skrevet 14. februar 2012 (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 14. februar 2012 av Warz Lenke til kommentar
torbjørn marø Skrevet 14. februar 2012 Del Skrevet 14. februar 2012 (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 14. februar 2012 av torbjørn marø Lenke til kommentar
xibriz Skrevet 15. februar 2012 Forfatter Del Skrevet 15. februar 2012 (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 15. februar 2012 av xibriz Lenke til kommentar
torbjørn marø Skrevet 15. februar 2012 Del Skrevet 15. februar 2012 Polimorfisme i PHP? EDIT: Jeg ser at det går hvis man bruker PHP 5.3 Ja, svaret mitt var generelt - altså språkuavhengig - siden mange ikke bruker objekter i PHP Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå