Ho seguito un po 'di consigli di progettazione OO ... Sto per iniziare a sviluppare un'applicazione Windows che comunica con una macchina esterna tramite RS232. La macchina dispone di un "controller di sistema" integrato costituito da registri (indirizzi). È possibile scrivere un valore in un registro (ad es. Per accendere una pompa) o leggere un valore da un registro (ad esempio per vedere se la pompa è in funzione). L'app avrà un file di configurazione che descrive le impostazioni di ciascun registro, ad es. il suo indirizzo, che sia 16 o 32 bit, un "alias" amichevole (quindi un altro codice può gestire "Pump XYZ" piuttosto che l'indirizzo "50B3D124") e alcune altre cose.
Il mio primo pensiero è stato quello di avere una classe Register
che riflette queste proprietà, oltre a Read()
e Write()
metodi. Ma questo solleva la prima domanda - il metodo Read()
ha un valore di ritorno, o dovrebbe compilare una proprietà Value
sulla classe?
Allo stesso modo, se il metodo Write()
include un parametro "valueToWrite", o dovrebbe scrivere qualsiasi valore attualmente detenuto nella proprietà Value
?
Potrei fare un ulteriore passo avanti (possibilmente anche rispondendo alla domanda precedente) - invece dei metodi Read / Write, metti la funzionalità nel getter e setter della proprietà Value
? L'utilizzo di una proprietà per questo scopo non sembra giusto.
Poi ho iniziato a chiedermi se fosse necessaria una classe Register
, poiché la sua funzionalità di lettura / scrittura farebbe poco più che chiamare i metodi Read / Write su una classe SystemController
, ad es.
long ReadRegister(string registerAlias);
void WriteRegister(string registerAlias, long value);
Perché non lasciare il resto dei registri di lettura / scrittura all'applicazione tramite la classe SystemController
? (Sospetto che avrei ancora bisogno di un concetto di una classe Register
, anche se è solo per rappresentare le impostazioni di configurazione di un registro).