Experimentalia

Appunti raminghi

Antipattern: cicli mimetici

with one comment

Rientro in carreggiata dopo circa un mese a causa di vicissitudini familiari che mi hanno distratto da questo blog, per segnalare un avvistamento particolare.

Stavo controllando del codice avuto in “eredità” quando me lo sono trovato davanti. Sulle prime non l’avevo riconosciuto ed ho dovuto rileggerlo più volte per convincermi che non stavo prendendo un abbaglio.

Sapevo della sua esistenza per averne sentito parlare diverse volte, anche se credevo che fossero solamente teorie e che mai ne avrei incontrato un esemplare allo stato brado.

Posto subito il codice per i più curiosi:

switch($totale) {
case 0:
    $pulsanti[]='aggiungiLingue1';
case 1:
    $pulsanti[]='aggiungiLingue2';
case 2:
    $pulsanti[]='aggiungiLingue3';
}

Si tratta di un ciclo mascherato da switch.

Non è facile vederlo a prima vista, uno degli indizi che dovrebbe far scattare un campanello d’allarme è la mancanza dei break tra i rami del case, almeno penso sia così perché è stata la molla che mi ha fatto dare una seconda, ed una terza occhiata, al codice fino a farmi capire quello che avevo davanti.

Nella sua forma in chiaro il ciclo si dovrebbe presentare così:

for ($i=$totale+1; $i<=3; $i++) {
    $pulsanti[]='aggiungiLingue'.$i;
}

Qualcuno dei miei pochi lettori ha mai fatto avvistamenti del genere? Se si, in che linguaggi? Il codice qui sopra, per chi non lo avesse riconosciuto è scritto in PHP.

Written by Eineki

settembre 29, 2009 a 5:06 am

Pubblicato su curiosità, linguaggi, php

Una Risposta

Subscribe to comments with RSS.

  1. Non ho parole😀 Direi che non è proprio il miglior pezzo di codice al mondo da lasciare in eredita ai posteri 🙂

    Sandro Paganotti

    settembre 29, 2009 at 10:45 am


Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: