Sto imparando OOP - Ho letto questa risposta un certo numero di volte e ora lentamente comincio a capire degli usi pratici delle interfacce pubbliche (getter e setter). Comprendo che non è necessario fornire accessor / mutators pubblici a tutte le proprietà di un singolo oggetto in quanto interrompe l'incapsulamento.
Tuttavia, nella risposta, è implicito che tutte le proprietà da manipolare solo all'interno di quell'oggetto (cioè quelle che non hanno un'interfaccia pubblica) non richiedono affatto setter. Seguendo questo pensiero, ciò implicherebbe la stessa cosa anche per i getter.
Quando si segue S in SOLID, le classi diventano piuttosto piccole. Come tale uso ancora getter e setter per tutte le mie proprietà poiché aggiungere la convalida ai setter è semplice. Tuttavia, qualsiasi proprietà a cui non si deve accedere dall'esterno dell'oggetto, si limita a designare questi setter / getter come protetti.
Questo mi consente di mantenere la convalida per l'utilizzo all'interno di metodi privati limitando al tempo stesso l'accesso pubblico. Capisco che i getter e i setter sono usati per fermare altri oggetti che manipolano direttamente le proprietà di altri oggetti, ma per i setter / getter "privati" - è necessario (convalida a parte) o anche pratica generale?
Il solo altro luogo Vedo riferimento a setter / getter "privati" è questa risposta che tocca l'ereditarietà e usando setter / getter privati per accedere alle proprietà genitore, il che ha senso da una prospettiva di incapsulamento.