Recentemente, ho letto molti buoni articoli su come fare un buon incapsulamento. E quando dico "buon incapsulamento", non sto parlando di nascondere i campi privati con proprietà pubbliche; Sto parlando di impedire agli utenti della tua API di fare cose sbagliate.
Ecco due buoni articoli su questo argomento:
Nel mio lavoro, la maggior parte delle nostre applicazioni non è destinata ad altri programmatori, ma piuttosto ai clienti.
Circa l'80% del codice dell'applicazione si trova nella parte superiore della struttura (non utilizzato da altro codice). Per questo motivo, probabilmente non c'è alcuna possibilità che questo codice venga utilizzato da altre applicazioni.
Un esempio di incapsulamento che impedisce agli utenti di fare cose sbagliate con la tua API sta restituendo un IEnumerable al posto di IList quando non vuoi dare la possibilità all'utente di aggiungere o rimuovere elementi nell'elenco.
La mia domanda è: quando l'incapsulamento può essere considerato semplicemente purista OOP, tenendo presente che ogni ora di programmazione è a carico del cliente?
Voglio creare un codice che sia manutenibile e facile da leggere e utilizzare, ma quando non sto costruendo un'API pubblica (per essere utilizzata da altri programmatori), dove possiamo tracciare la linea tra codice perfetto e codice non così perfetto ?