È una cattiva idea avere molte variabili protette, eventi e procedure in un'unità?

1

Sto scrivendo una libreria di rete p2p completa sul server UDP di Indy con l'intenzione di pubblicarla online. Il design che ho implementato ha un gestore P2P (TIdUDPServer) che può fungere da server o peer. Ogni peer connesso è rappresentato da un oggetto separato che contiene funzionalità aggiuntive e informazioni su di essi. Le classi sono entrambe contenute in una singola unità.

Ai fini della semplificazione, ho dichiarato quei membri utilizzati da entrambi, protetti. In qualche modo, il mio istinto mi sta dando una brutta sensazione. Il gestore P2P ha pochissimi membri ma l'oggetto peer ha quasi tutto sotto protezione. Andando dall'altra parte introdurrà sicuramente molte chiamate di codice e metodo.

Devo saperlo;

  1. È una buona pratica per le biblioteche di networking avere membri protetti?
  2. Devo sostituire le variabili con le proprietà sotto protetto? Con getter e setter o accesso diretto andrebbe bene?
posta Umair Ahmed 08.03.2014 - 11:17
fonte

1 risposta

3

Non riesco a vedere che tipo di libreria dovrebbe avere a che fare con l'architettura del tuo codice in generale.

Come regola generale, è meglio iniziare con restrizioni elevate, puoi abbassarle sempre. L'incapsulamento è un bene prezioso, può aiutare molto a mantenere le cose disaccoppiate. È molto più difficile andare dall'altra parte, spostando qualcosa da published lungo la strada a private . Ad esempio, per le classi interfacciate (specialmente quelle conteggiate), consiglierei di mettere tutti i metodi interface in protected per applicare questo modo per tali classi e lasciare il CTOR / DTOR%% co_de.

Riguardo ai getter / setter: in caso di dubbio, trasformalo in public . Delphi è abbastanza intelligente da sostituire gli accessi a proprietà semplici come

property foo : string read ffoo write ffoo;

con accesso diretto alle variabili, basta controllare il codice CPU generato.

A parte questo, preferirei property anziché solo strict protected/private laddove possibile.

    
risposta data 08.03.2014 - 12:09
fonte

Leggi altre domande sui tag