[Php-it] [semi-ot] Programmazione

Marcello Vezzelli marcello at vezz.it
Fri Apr 6 11:13:33 CEST 2007


Gianluca Baù ha scritto:
> Il mio problema principale è che sicuramente sbaglio l'approcio ad un 
> nuovo progetto, o meglio, mi trovo in situazioni dove quello che deve 
> essere fatto non è preventivamente ben definito ma viene fuori passo 
> passo.

Purtroppo è un problema molto diffuso, anche perché lo stesso 
committente non sa bene quello che vuole finché non comincia a premere i 
tasti su quello che gli consegni.
Queste cose vanno un po' come le ciliege, nel senso che una tira 
l'altra... fatta una cosa, vien voglia di averne un'altra (non è detto 
che sia sensata).
Ora è chiaro che il problema è a monte: un progetto definisce appunto i 
binari sui quali procedere nello sviluppo.
Se cambia il progetto, possono cambiare la struttura dati, il codice, in 
certi casi l'approccio stesso alla risoluzione del problema.

Nelle realtà medio-piccole che si basano sull'estemporaneità e sui tempi 
rapidi, dove non c'è tempo (o capacità reale) di fare un progetto ben 
dettagliato, dove non c'è la volontà di descrivere completamente quel 
che si vorrebbe ottenere (spesso non si sa cosa si vuole!), queste 
situazioni sono all'ordine del giorno. Pessimo modo di lavorare, ma alla 
fine si finisce sempre in questo modo.

E' molto difficile far capire ai non addetti ai lavori che (ad esempio) 
cambiare in una tabella una relazione da uno a uno a uno a molti è un 
cambio progettuale: è una semplice modifica funzionale... "ma scusa cosa 
ci vuole... anziché uno solo ne voglio mettere più di uno..."

L'arma vincente in questo caso, secondo me, è la modularità e la pulizia 
del codice.
Un codice pulito e leggibile, senza capriole e virtuosismi, è quello che 
ti salva in questi casi.

Quando si scrive codice, una buona prassi è pensare sempre "ma se lo 
legge un altro, cosa ci capisce?" quindi far finta di doverlo dare a un 
ipotetico collega che poi lo deve capire.
Tra 6 mesi, quel collega sarete voi stessi... e quel codice sarà per voi 
"mai visto" in quanto rimosso dalla memoria.

> A voi capita di avere lavori che richiedono praticamente ogni giorno 
> nuove funzionalità che magari il giorno prima non avreste neanche 
> immaginato di dover inserire?

Parliamo dell'immaginare.
Quando si prendono certe strade, bisogna avere la sensibilità di capire 
quali porte rimangono aperte, quali vengono chiuse, quali vengono 
sprangate a doppia mandata con le chiavi rotte dentro.
Bisogna allargare l'orizzonte oltre le "specifiche" del progetto e 
provare a immaginare in quale direzione ci si muoverà.
Se mentre lavori su una parte ti sembra ragionevole aggiungere una 
funzionalità che probabilmente sarà richiesta, tienla in conto e muoviti 
come se la dovessi implementare. Prendi appunti su come la vorresti 
strutturare e tienli da parte. Queste scelte "potenziali" devono essere 
tutte coerenti tra loro.

Man mano che le scelte aumentano, la libertà di movimento diminuisce... 
se il progetto per la sua natura, o per la natura del committente, tende 
ad uscire spesso dai binari e andare a spasso per la campagna, bisogna 
tenere aperte più strade possibili anche a costo di penalizzare il 
codice o la base dati. Quel che si perde qui, lo recuperi in flessibilità.
>
> Inoltre volevo chiedere: all'inizio di ogni script, fate una 
> dichiarazione globale di tutte le variabili che userete ?? O le 
> lasciate al caso durante la scrittura del codice?

Io vengo dalla scuola del pascal, ovvero "devi dirmi cosa vuoi usare 
prima di usarlo". A volte noioso, ma come forma mentis è molto educativo.
Quindi come fanno i bravi bambini programmatori, all'inizio delle 
funzioni si inizializzano le variabili... ottimo punto anche dove 
mettere commenti su quelle significative.

Se pensate che stia delirando, soccorretemi. ;)

Saluti
Marcello


More information about the Php-it mailing list