[Python] Dubbi organizzazione progetto
enrico franchi
enrico.franchi a gmail.com
Dom 25 Nov 2007 13:58:59 CET
On Nov 25, 2007 1:28 PM, Mr. SpOOn <mr.spoon21 a gmail.com> wrote:
> Eheh, ho cercato di evitare i dettagli per non dilungarmi troppo, ma
> forse ho solo fatto più confusione.
Guarda, io non vorrrei pure dilungarmi troppo. Ho dato una breve
occhiata a quello che tu hai descritto e mi pare codice Visual Basic e
non Python.
Stai completamente confondendo modello con vista (per non parlare del
controller). Provo a tratteggiarti io una struttura sensata.
La classe *fondamentale* è precisamente quella che tu non hai creato.
Ovvero una classe Channel. Le istanze di questa classe hanno un metodo
per leggere e uno per scrivere, oltre che dei metodi per settare le
caratteristiche del rumore.
In questa classe tu scrivi roba e la leggi 'sporcata' dal rumore.
A questo punto avrai due oggetti, un encoder e un decoder che si
occupano di codificare e decodificare il messaggio. Possono essere
completamente esterni alla classe Channel, oppure la classe Channel
permette di selezionare encoder e decoder.
I due approcci ti porteranno a qualcosa come:
enc = Encoder(which encoder)
deco = Decoder(which decoder)
chan = Channel()
chan.setNoise(....)
Adesso si distinguono.
chan.setEncoder(enc)
chan.setDecoder(deco)
chan.write(message, ...)
t = chan.read(...)
Oppure
chan.write(end(message))
t = deco(chan.read(...))
Questo è il *cuore* del tuo applicativo. Questo è il cuore per
qualunque applicativo voglia fare cose simili alle tue. E' usabile da
roba a linea di comando, Qt, wx, Windows, whatever.
A questo punto avrai la tua bella finestrella con i bottoni colorati
(la view) che chiama metodi del controller i quali si preoccupano di
settare le varie proprietà del Channel, di mandargli messaggi, di
leggere risposte. La parte cui tu stai dando importanza è quella meno
rilevante.
Certo, il mio design è completamente migliorabile. E' buttato giù in
una manciata di secondi ed è necessario criticarlo, migliorarlo, etc.
E' in generale un processo per raffinamenti successsivi. Non solo: il
cuore che io ho progettato è completamente e facilmente testabile. Per
cui sei in grado di provare che funziona sufficientemente bene (il
testing sfortunatamente non riesce a dare dimostrazioni di
correttezza).
A questo punto gli butti addosso una GUI che fa per l'appunto quello
che deve fare una GUI.
--
-enrico
More information about the Python
mailing list