|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2005
Città: Resana - TV
Messaggi: 960
|
Design della struttura di un applicazione...sono pazzo?
Ciao raghi,
sto mettendo mano ad un'applicazione sviluppata (un po' da cani a mio parere) in java. Allora in questa applicazione ci sono delle classi statiche che operano con una sorgente dati (che mi è stato ribadito più volte, dovrebbero essere il più trasparenti possibile ed essere in grado di restituire sempre lo stesso formato di dati anche al cambio della sorgente) (chiamiamole classi driver) e delle classi che usano questi driver (chiamiamole classi logiche). Ora la struttura di queste classi è la seguente: Driver:
Allora:
Allora io ho proposto di creare una struttura del genere (perlomeno per i driver e le logiche nuovi che dovranno essere create):
lui: io: "perchè non ha senso? definisce una struttura dati! ...altrimenti inseriamo pure il vector dentro al driver no?!"lui: io: "ah allora non si possono creare classi se non stanno ne nella classe ne nella logica? è semplicemente una classe che definisce un tipo di dato, perchè mai non dovrebbe avere senso?"lui: io a sto punto non ce la facevo più, gli ho dato ragione e faccio come vuole, anche se vederlo soddisfatto e sicuro di avermi convinto è stato molto duro! ma veramente io non riesco a capire come il direttore tecnico (e pure ingegnere) di una filiale di un'azienda abbastanza importante nel panorama IT italiano possana fare discorsi del genere...e magari fosse la prima volta! comunque ora torniamo alla domanda del titolo: sono pazzo? Ultima modifica di 0rph3n : 09-10-2006 alle 14:00. Motivo: ingeniere XD |
|
|
|
|
|
#2 | |
|
Utente sospeso
Iscritto dal: Oct 2002
Messaggi: 2156
|
Quote:
__________________
sign editata dallo staff |
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Apr 2005
Città: Resana - TV
Messaggi: 960
|
Quote:
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
No, non siete pazzi.
L'affinità che deve esistere tra due esseri umani affinchè possano intendere uno stesso fenomeno nei medesimi termini è talmente eccezionale da farmi ritenere che discussioni come quella a cui hai preso parte siano la norma. In senso figurato è come se tu e il tuo interlocutore, avendo un'idea non osservabile della stessa forma, aveste dichiarato uno "è una palla da tennis", l'altro "è una palla da baseball". Entrambi avete ragione per il semplice fatto che discutete di una forma non condivisa. Aggiungere un terzo – e un quarto e un quinto... – alla discussione la renderà più interessante ma certo non più determinata. A me entrambe le soluzioni appaiono giustificabili se tento di immaginare ora una palla da tennis, ora una palla da baseball. A dirla tutta, la presenza di cose "static" nella prima rappresentazione mi lascia perplesso. La passione viscerale per l'orientamento agli oggetti che mi anima mi fa ritenere che dietro ad ogni "static" ci sia qualcuno che dovrebbe chiarirsi le idee su cosa sia un oggetto. Non perchè non si possa usare questo particolare strumento del linguaggio ma perchè il significato di ciò che è static è assolutamente particolare. Secondo una certa idea di programmazione orientata agli oggetti – l'unica accettabile, secondo me – tutto ciò che è static in Java è parte della definizione di ogni oggetto che possa accedere a quello "static". Dal che si deducono alcuni caratteri del fenomeno rappresentando verso i quali il sistema rappresentato ha un dovere di coerenza. Per farla breve e non annoiarti più del necessario, non puoi dire se la rappresentazione proposta dal tuo interlocutore sia giusta o sbagliata, perchè non hai modo di partecipare alla percezione del fenomeno che egli ha avuto. Lo stesso vale, naturalmente, a parti inverse: che qualcuno creda realmente di averti convinto è il sintomo che quel qualcuno ha un'idea piuttosto bizzarra di ciò che comunemente si chiama "sistema di riferimento". Quello che invece puoi e dovresti fare è giudicare la coerenza della rappresentazione proposta con sè stessa. Come ogni modello di ciò che un uomo ha percepito il fenomeno rappresentato in un software ha un'arbitrarietà assoluta: che la sorgente dati debba essere "trasparente" – quasi fossimo vetrai – non è più corretto dell'averne una "opaca" – qualsiasi cosa possa significare. La scelta che è stata fatta è sperabilmente fondata sulla maggiore idoneità di questa caratteristica a rappresentare il fenomeno percepito: noi possiamo immaginare che il fenomeno percepito abbia una fonte di dati soggetta ad un qualche tipo di mutazione e che altri parti dello stesso sistema siano insensibili a queste mutazioni. Se altre parti del sistema devono comunicare con questa fonte dati occorre che sia introdotto un meccanismo che rappresenti quell'insensibilità. Il meccanismo che ti è stato proposto (o imposto) è idoneo? E' coerente con il sistema, cioè la sua introduzione non comporta definizioni che contraddicono altre definizioni presenti nel sistema? Se la difficile risposta è sì allora non puoi che dire "diamine, si vede che lui ha percepito questo fenomeno". Se la risposta è no allora c'è un'assurdità nel sistema – che dovrai realizzare lo stesso perchè l'ha detto il committente e poi te ne beccherai pure la responsabilità perchè questo è il pianeta terra Ci sono tante, comprensibili ragioni per cui un sistema ad un certo punto risulta incoerente. Una per tutte, il tempo dedicabile alla comprensione del fenomeno osservato è sempre una frazione di quello necessario. L'introspezione, vale a dire l'acquisizione a livello cosciente della percezione inconscia di un fenomeno, richiede l'applicazione per un tempo eterno di una quantità infinita di neuroni d'acciaio. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
EDIT: parlando di "trasparenza", è appunto il driver che deve occuparsi di questo, invece di popolare un'altra classe: questo lo fa offrendo opportuni metodi di "formattazione output".
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson |
|
|
|
|
|
|
#6 | |||||
|
Senior Member
Iscritto dal: Apr 2005
Città: Resana - TV
Messaggi: 960
|
Innanzitutto grazie ad entrambi delle risposte!
Continuo dicendo che durante la stesura di quel post ho omesso qualche particolare (soprattutto qualche porzione di codice che potesse risultare più esplicativa delle mie parole) che aggiungo ora: in questo pezzo di codice l'istanza candidato della classe Dati_Profilo (che ha solo metodi statici tranne quello di cui ho riportato il codice) chiama il metodo getDatiContratti). Come potete vedere il risultato viene memorizzato in un'array a 3 dimensioni con conseguente caos! Codice:
...
Object[][][] datiContratto=new Object[12][50][2];boolean esisteContratto=false; String dDataDimissioni = "";
datiContratto=(Object[][][])candidato.getDatiContratti(ca.getnCodAnagrafica());
int lunghezzaContr=0;cd=null;
if((datiContratto[10][0][0]!=null)&&(datiContratto[10][0][0] instanceof String)&&(!(String.valueOf(datiContratto[10][0][0]).equals(""))))
lunghezzaContr = Integer.parseInt((String)datiContratto[10][0][0]);
esisteContratto=ContrattoDimissioni.getDimissioni(ca.nCodAnagrafica());
if(lunghezzaContr > 0 && !esisteContratto){
esisteContratto=true
...
Codice:
public object[][][]getDatiContratti(int nCodCandidato)throws SQLException{
Contratto_Dati cd=new Contratto_Dati();
Contratto_Allocazione ca=new Contratto_Allocazione();
int i=0;
ResultSet rs;
ResultSet rs1;
Object o[][][]=new Object[12][20][5];
try{
rs=DBAccess.conn("SELECT * FROM pippe WHERE ...");
while(rs.next()){
cd=new Contratto_Dati(rs);
o[10][i][1]=(Contratto_Dati)cd;
ca=Contratto_Allocazione.getCommessa_Attiva(cd.getnCodContratto(),nCodCandidato);
if(ca!=null)
{
o[10][i][2]=(Contratto_Allocazione)ca;
ca=null;
}
i++;
}finally{
try{
return o;
}catch(Exception e){}
}return null;
}
Quote:
Quote:
Quote:
se il driver fosse composto dall'elemento e anche dai metodi che servono a leggerne i dati dalla fonte, nel caso dovessi leggere i dati inerenti ad un'unico elemento mi starebbe bene, creerei un'istanza e la farei autopopolare con il metodo adatto, ma nel caso dovessi leggere i dati di più elementi come potrei fare? creare n-istanze e farle autopopolare? per ogni istanza ci sarebbe una query da eseguire e cosa più importante nel caso avessi una query generale che mi legge tutti gli elementi in un colpo dovrei crearmi n-istanze delle classe all'interno di se stessa per poi popolarle una ad una! -incasinato lo so- spero solo che qualcuno riesca a capire il senso di quello che la mia mente contorta ha partorito! Quote:
perchè non si può intendere una classe come tipo di dato? ormai tutti i tipi di dati sono classi (vabbè a parte i primitivi)! io avrei semplicemente un tipo di dato adatto per ogni occasione che verrebbe popolato dal driver adatto! Quote:
...solo che piuttosto di essere istanze di String o di vattelappesca sarebbero istanze del mioTipoDiDato! ...che c'è che non va in questo? 'iao |
|||||
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Il codice postato dice più di mille parole.
Quel metodo è un casino, per non parlare del costutto try-catch implementato in quel modo: è un colpo al cuore... Il vettore è tutt'altro che semplice, e dal tuo post precedente (come tu stesso hai fatto notare), non si capiva di che tipo era: oltre al fatto che è in 3 dimensioni ( Molto meglio allora creare una classe ad hoc, che viene istanziata dal driver per inserirne i dati, e poi restituita all'esterno con la "return". Io pensavo che fosse un semplice array... Onestamente, da quello che hai postato, il tuo collega non è che dia una buona immagine della categoria lavorativa a cui io stesso appartengo... ![]() EDIT: per non parlare della doppia istanza: Contratto_Dati cd=new Contratto_Dati(); // All'inizio del metodo. cd=new Contratto_Dati(rs); // Nel blocco try. EDIT 2: Una curiosità personale: il tuo collega è un ingegnere con laurea di primo livello (3 anni), specialistica (+2) o vecchio ordinamento? EDIT 3: Ma le Collection non le potete usare, invece di andare con i vettori multidimensionali statici? Java da quel punto di vista è iperflessibile!
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson Ultima modifica di -fidel- : 11-10-2006 alle 17:17. |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Apr 2005
Città: Resana - TV
Messaggi: 960
|
Quote:
sarà che è stato scritto seguendo sue indicazioni! ...boh! [OT] mi piacerebbe comunque riportare tutte le cazzate che l'ho sentito dire da quando lavoro qua dentro (e che sono la causa del tono polemicissimo del post di apertura...era l'ennesima della mattinata, mi ero svegliato male e non ce la facevo più!) purtroppo però ne ricordo mezze...vabbè se mi verrà voglia comincerò a segnarmele! ...non sarebbe male l'idea di un 3d in cui inserire le sparate...mi immagino alquanti lol e rotfl [/OT] grazie ancora! 'iao |
|
|
|
|
|
|
#9 | ||
|
Senior Member
Iscritto dal: Apr 2005
Città: Resana - TV
Messaggi: 960
|
Quote:
...ed elasticità mentale 0 della serie: "Ho sempre fatto così...e siccome va bene non c'è motivo di cambiare! ...e neppure di vedere se c'è qualcosa di nuovo e più funzionale!" Quote:
|
||
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4747
|
Quote:
a te è capitato un ingegnere che si è affezionato al codice , non suo peraltro ... uno dei primi errori da evitare
__________________
Jappilas is a character created by a friend for his own comic - I feel honored he allowed me to bear his name Saber's true name belongs to myth - a Heroic Soul out of legends, fighting in our time to fullfill her only wish Let her image remind of her story, and of the emotions that flew from my heart when i assisted to her Fate
Ultima modifica di jappilas : 11-10-2006 alle 18:17. |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quello non è codice sorgente: è una richiesta d'aiuto. In 12 anni che uso Java non ho mai visto un metodo restituire un array di array di array di Object e vi assicuro che ho dovuto mettere mano a certe cacche che non avete idea.
|
|
|
|
|
|
#12 | ||
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
Quote:
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson |
||
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:16.










"perchè non ha senso? definisce una struttura dati! ...altrimenti inseriamo pure il vector dentro al driver no?!"








