[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