Newsgroup: it.comp.lang.delphi
Titolo: pulizia del codice

io sono un po' fissato per la programmazione pulita.. e vorrei sapere da chi
ha piu' esperienza (e piu' conoscenza di come lavora un motore sql) se
conviene perdere in efficienza per guadagnare in modularietà (ammesso che si
perda in efficienza).
Mi spiego.
Mettiamo che io ho un form che gestisce un po' di cose sulla fattura. Ho
ovviamente il datamodule legato al form che contiene tutte le query che
interessano la fattura. Con molta probabilità l'inserimento di una nuova
fattura occorrerà in piu' punti del programma (mettiamo caso anche in altre
Unit). Prendiamo in considerazione uno di questi: di certo avrò aperto un
dataset, mostrato l'insieme all'utente il quale avrà deciso di inserire una
fattura nuova. Mi conviene chiamare una routine generale parametrizzata
all'inverosimile (a tutti i dati da inserire e chissa quant'altro) oppure
gestire singolarmente tutti le occorrenze di inserimento fattura?
Il punto sta nel fatto che se usando una unica funzione ho una cosa piu'
comoda per me e sopratutto molto piu' pulita (anche se la funzione
accentrerà TUTTI i problemi quindi sarà abbastanza complessa) a runtime il
dataset verrà aperto, chiuso (dalla funzione chiamante) subito dopo aperto e
chiuso (dalla routine di inserimento) e ancora aperto (nella funzione
principale dopo la chiamata alla funzione di inserimento) a beneficio
dell'utente ed infine chiuso. Mentre in un approccio piu' sporco e difficile
da gestire il dataset è aperto all'inizio e chiuso alla fine senza inutili
chiamate ridondanti.
cioe' io mo' so' sicuro che non mi so' spiegato alla grande.. ma se qualcuno
ha capito, gradire avere delle risposte (motivate :)))
buio
la quale aprirà il dataset, eseguirà l'inserimento e richiuderà il dataset

[...]
Per quanto mi riguarda utilizzo la seguente "regola" di programmazione :
 Se il programma andrà manutenuto spesso, cerco di creare dei metodi il più
"asettici" possibili... cioè dei metodi che rassomiglino i metodi standard
di delphi, oppure le api di windows.
Cioè cerco di programmare come se il prodotto finale dovesse utilizzarlo
qualcun altro...
 quindi abbondanza di commenti, modularità e identazione.
Per quanto riguarda la perdita di efficenza, mi pongo la domanda "su che
macchina dovrà girare" ?
Poi magari una volta portato il progetto ad una versione "stabile", provo a
fare delle ottimizzazioni (sia a livello di codice che di struttura
(leggibilità, modularità, ecc)).
Ben coscente che questa non è *la* risposta, ma una risposta, mi giustifico
dicendo che la "soluzione" è abbastanza relativa al programmatore, al target
e alla complessità del programma.
Spero di aver portato un po' di luce nell'oscurità... (boooo!!! che battuta
squallida!! ;-) )
Ciao!! Davide DG

 chiamate ridondanti.
L'approccio migliore, in generale, e' quello modulare, anche se a prezzo di
una maggior complessita' di alcune parti di codice e di un carico aggiuntivo
al processore (ma tanto con i processori di oggi e' difficile accorgersene).
Il programma e' piu' facilmente mantenibile, modificabile e, soprattutto,
debuggabile. Meglio in altri termini una procedura unica di inserimento
fattura che, se errata, si comportera' "male" in ogni punto del programma
che la richiama, ma se corretta si comportera' bene ovunque, che 10
procedure ottimizzate ma con 10 possibili sorgenti di errori, tutte diverse.
Risparmia tempo! :-)
Ciao, Sandro

 chiuso (dalla routine di inserimento) e ancora aperto (nella
funzione...ecc...ecc...
Io penso che la soluzione migliore è creare un oggetto fattura...
quindi all'interno crei metodi e proprietà adatti a quello scopo...
per quanto mi riguarda è la soluzione migliore perchè il codice risiede in
un posto solo e non sei obbligato a creare funzioni dai milleeduecento
parametri di una complessità assurda...
l'unico requistito è studiare veramente bene l'oggetto in tutti i suoi
aspetti ma ti assicuro che i risultati sono eccellenti...
ciao
Solid Snake