Stiamo introducendo i buffer di protocollo come nuovo trasporto per alcuni servizi RPC back-end. Poiché non esiste resistenza al trasferimento manuale dei dati tra diverse forme di oggetti simili, posso prevedere che le istanze di Protocol Buffer siano passate allo stack un po 'più in alto rispetto all'interfaccia del server RPC.Utilizzo del buffer del protocollo come oggetto dati generale?
È qualcosa che dovrei cercare di evitare? È sicuro trattare un oggetto buffer di protocollo come un semplice titolare di dati, con la piacevole convenienza di poter essere trasformato in modo rapido ed efficiente in e fuori dal binario?
L'altro motivo per cui considero un buon modo per generare oggetti dati è la nozione di campi obbligatori/facoltativi e l'interfaccia del generatore generata automaticamente.
Penso che il fatto che siano immutabili effettivamente aiuta, e non fa male, quando si tratta di utilizzare buffer di protocollo come questo. Sono oggetti di valore immutabili proprio come String. –
In alcuni casi è certamente utile quando è possibile scrivere codice in uno stile funzionale. In parte dipende dal problema e in parte dagli sviluppatori :) –
Immutable aiuta davvero in alcuni casi, per ragioni sconosciute esistono alcune costruzioni pubbliche con una dozzina di + o più parametri, tutti assegnati ai campi finali. Un costruttore è grande ma noioso e pronto a scrivere ogni volta. È anche difficile ottenere la logica del diritto richiesto e facoltativo, in modo tale che il metodo build() esploda se i campi richiesti sono stati omessi. –