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).