(La domanda è indipendente dalla lingua, ma per illustrare il punto, ho scritto gli esempi in C #.)
Dire che sto provando a modellare il comportamento dei "componenti" che comunicano tramite "porte".
Potrei modellarlo come:
public interface Component
{
int Read(int portID, byte[] buffer);
int Write(int portID, byte[] buffer);
}
e forse implementare l'interfaccia come:
public class MyComponent : Component
{
private class Port
{
int Read(byte[] buffer) { ... }
int Write(byte[] buffer) { ... }
void DoSomethingComplex()
{
this.Read(...);
// ...
this.Write(...);
}
}
private Dictionary<int, Port> ports;
public override int Read(int portID, byte[] buffer) { ports[portId]. Read(buffer); }
public override int Write(int portID, byte[] buffer) { ports[portId].Write(buffer); }
}
Abbastanza semplice, ma considera ciò che ti aspetti Read
e Write
da fare:
Dal punto di vista di un estraneo, sembra naturale che Read
legga i dati di la porta del componente in il buffer specificato.
Tuttavia, come un insider che sta chiamando this.Read(...)
, è davvero quello che ti aspetti?
O ti aspetteresti che i dati vengano letti dal buffer nella porta ?
La mia domanda è duplice:
-
Non è stata fornita documentazione aggiuntiva, quale significato di
Read
eWrite
è più intuitivo? -
Come posso denominare ragionevolmente queste funzioni in modo che l'intento sia chiaro senza la necessità di ulteriore documentazione?
(Ovviamente, posso chiamarliReadFromPortIntoBuffer
eWriteToPortFromBuffer
o qualcosa del genere, ma uno spera in nomi più succinti.)