Qual'è secondo te codice pessimo?


Quando apri un sorgente e ti viene da ... imprecare :)
quando c'è un certo programma da modificare e quindi ... prendi ferie
quando guadri lo schermo per ore senza capici niente ... e non sei nemmeno innamorato :)  ...

cosa c'è in quel "codice" che ti fa  schifo  ribrezzo ?




Tags :   |  |  |  |  |

Print | posted @ martedì 3 febbraio 2009 22.47

Comments on this entry:

Gravatar # re: Qual'è secondo te codice pessimo?
by Luca Minudel at 04/02/2009 0.20

- i metodi sono lunghi e sterminati, fanno 10 cose tutte insieme, e l'implementazione di ogni singola cosa riesce comunque a essere sparpagliara come frattaglie in un quadro di Picasso

- cicli for, while, if e switch si annidano a mille, solitamente il primo for è li sul bordo sinistro del mio LCD, la parentesi dell'ultimo for è alla fermata della metro che apetta, solitamente è qui che prendo la palla al balzo e chiedo il terzo monitor da 24''

- i nomi delle variabili sono brevi per risparmiare, il bello è che riescono comunque sempre ad essere dichiarate nel posto più distante da dove sono usate. per farsi perdonare vencono comunque usate per 2 o tre cose diverse

- le linee di codice più incomprensibili sono quelle scritte per qualche supposta (...) ottimizzazione: meglio risparmiare. sulla visibilità di variabili, metodi classi e interfacce invece tutte pubbliche che non si sa mai protrebbe servire, se sono statiche o globali meglio

- le classi contengono molte decine di metodi, oppure poco più di un solo metodo ma queste che per non essere da meno hanno bisogno di diverse chiamate di inizializzazione: la sequenza giusta di chiamate e parametri magici che servono per farla partire è comunque un mistero come quello dell'isola di Pasqua

- gran parte del codice è fatto con copia-incolla abbastanza che se devi fare una modifica dovrò poi riportarla in altre parti con la certezza matematica di dimenticarmene qualcuna. in goni caso ha passato diverse fati di modifiche e fix che se cerco ci estrarre il codice uguale in un metodo in ogni copia ci sono decine di piccole differenze in punti diversi (ancora Picasso). E le uniche due copie che sembrano uguali nascondono come nella settimana enigmistica una piccola differenza chi fa travisare completamente il senso del codice

- ci sono classi che riescono ad avere tutti insieme pezzi di SQL, di XML di Web Services, di controlli utente, di gestione degli errori run-time, di verifica delle autorizzazioni, di gestione dei testi multi-lingua e del controllo dell'input del utente. e comunque riescono ad non avere vincoli di integrità o chiavi esterne, XML schema definition su cui validarsi, eccezioni tipizzate per distinguere gli errori o uno straccio di MVC: che quando si lavora sul serio non ce mita tempo per questi giochetti!

- e quando arriva il momento di compilare e eseguire per vedere cosa fa c'è da configurare: le voci sul registri, le configurazioni su app.config e web.config insieme alle stringhe di connessione, c'e da fare la registrazione COM, che da mettere l'assembly nella GAC, che c'è scrivere la mettere la stringa configurazione sul parametro di inizializzaione del componente COM+ o MTS, da configurare WSE o WCF, IIS ... che a qualcuno non venga in mente che non ne capiamo di tecnologie

- e quando comunque prendo coraggio, faccio una modifica e provo a vedere dove ha impatto, grazie al late-binding, duck typing, Reflection, cast dinamici e variabili varian/object che al compilatore non può che dire "speriamo..." e a me resta eseguire il codice a mano i tutti i modi possibili per provare di accorgemi in tempo di un errore run-time prima che la modifica vada in produzione
  
Gravatar # re: Qual'è secondo te codice pessimo?
by Fabio GRANDE at 04/02/2009 8.46

Ho diffuso la Tua vignetta tra i miei colleghi, chissà che qualcuno la capisca....
Cmq, tipicamente, esclamo i miei "WTF" per :
1) Nomi variabili incomprensibili, inassociabili, irrintracciabili
2) identazione (o formattazione che dir si voglia) del codice sorgente, spesso (troppo spesso) inesistente....

COmplimenti per i Tuoi posts, sono veramente interessanti... Mi piacerebbe riuscire a far applicare 1/100 delle Tue nozioni nella softwarehouse dove lavoro.....
  
Gravatar # re: Qual'è secondo te codice pessimo?
by Federico at 04/02/2009 10.51

Ciao Luca, io non sopporto il codice C# scritto per "risparmiare i punti e virgola", nel senso che vuole concentrare il più possibile in una sola istruzione (assegnazioni multiple, espressioni duplicate, livelli di annidamento delle chiamate impensabili, valori magici passati ai metodi ecc.) col risultato di ottenere qualcosa di assolutamente illeggibile, figurarsi farne il test o il debug! Per capire di cosa parlo:

hlnDownloadBackup2.NavigateUrl = hlnDownloadBackup1.NavigateUrl = DotNetNuke.Common.Globals.ApplicationPath + "/" + (DotNetNuke.Entities.Portals.PortalController.GetPortalsByName(ddlSelectedPortal.SelectedItem.Text, 0, 1, ref totalRecords)[0] as DotNetNuke.Entities.Portals.PortalInfo).HomeDirectory + "/" + (new DotNetNuke.Services.FileSystem.FolderController()).GetFolderInfo(Convert.ToInt32(ddlSelectedPortal.SelectedValue), Convert.ToInt32(txtFolderId.Text)).FolderPath + System.IO.Path.GetFileName(zippedFilePath);

(tratto da un caso reale!)
  
Gravatar # re: Qual'è secondo te codice pessimo?
by Rei at 04/02/2009 12.52

Non ci hanno messo nemmeno una riga di commento per capire che cavolo fa quel codice...
  
Gravatar # re: Qual'è secondo te codice pessimo?
by raffaeu at 04/02/2009 16.06

Scrivere del buon codice a priori ti evita la necessita' di cercare 'commenti al codice'.
Ho trovato codice che looppava una collection con il commento "qui faccio un loop nella collection ...", ma va??
Bisogna usare pattern, scrivere codice chiaro, pulito, usare una sintassi comune a tutto il progetto, usare le variabili se servono e darne dei nomi sensati. Basta con le varX, varB e altre stron....te.
Scusate ma qui ho trovato tanta di quella M... quando sono arrivato che non ci credereste se lo raccontassi.
:D
  
Gravatar # re: Qual'è secondo te codice pessimo?
by Luca Minudel at 04/02/2009 16.33

@Fabio GRANDE
la cosa che faccio piu fatica e' capire il primo passo possibile per andare dalla situazione che trovo verso quella ottimale

grazie 1000 del feedback


@raffau
quella che ti fa incazzare di piu qual'e' ?
  
Gravatar # re: Qual'è secondo te codice pessimo?
by raffaeu at 04/02/2009 16.46

Le cose Luca sono piu' di una, ma se dovessi farti una top tree sono in ordine:
1) Spaghetti code senza uso di pattern e n-tier
2) Confusione nella sintassi usata, ovvero, una volta FirstUpper, un' altra Uppercase, un' altra Lower e cosi' via. Errore nella nomenclatura poco chiara
3) Uso completamente sbagliato, o inesistente, di strutture di log degli errori e di validazione dei dati e delle routine, mancanza completa di Unit test!
  
Gravatar # re: Qual'è secondo te codice pessimo?
by alkampfer at 06/02/2009 8.36

1) Codice contorto senza commenti (una volta ho visto 10 linee di codice con split e concat di stringhe per sostituire un carattere con un altro :D
2) metodi troppo lunghi
3) tonnellate di codice scritto nel code behind di pagine aspx, intestabile a meno di non lanciare il tutto dentro il browser.
4) Mancanza assoluta di naming convention e metodi con nomi assolutamente sbagliati (tipo GetCustomerByXXX che torna un boolean)
5) Mancato uso di Interface e IoC, metodi pieni di case e assolutamente monolitici.
6) mancanza di infrastruttura seria (logging, gestione eccezione, validazione, gestione transazioni)
7) Mancanza di documentazione sulle configurazioni, deploy etc.
Alk.
  
Gravatar # re: Qual'è secondo te codice pessimo?
by john79 at 06/02/2009 20.18

Ciao luka molto bello il tuo post per poter identificare quando il codice non e' scritto a dovere.
Sarebbe altrettanto bello se specificassi anche come migliorarlo nei casi da te specificati.
Non dimenticare che scriviamo a volte applicazioni complesse che richiedono decine se non centinaia di metodi; uso di settings; Io cerco di suggerire di usare sempre la STESSA metodologia. Per esempio raggruppare i metodi per contesto in una classe anziche scrivere 10 classi con un solo metodo. in questo modo chi viene a conoscenza della metologia riesce piu semplicemente a capire come e' stata scritta. e ad intervenire in caso di change request.
ha senso?

john79
  
Gravatar # re: Qual'è secondo te codice pessimo?
by Luca Minudel at 06/02/2009 22.48

@john79

secondo me molto, seguire sempre la stesso criterio e farlo tutti nel team da un grossa spinta a rendere il codice + leggibile

per andare sul pratico e concreto ti segnalo questo libro: Clean Code
di Robert C. Martin

e qui qualche link per elencare qualche argomento/parola chiave:

uno spunto per raggruppare metodi e classi c'è in questo post Individuare le responsabilità di una classe.

per passare da un problema sul codice a una soluzione ci sono le code smell e i relativi refactoring.


dei criteri di carattere generale sono qui: Valutare Il Disegno Di Una Applicazione oltre ai principi di disegno OO
  

Your comment:

Title:
Name:
Email:
Website:
 
Italic Underline Blockquote Hyperlink
 
 
Please add 3 and 4 and type the answer here: