La possibilità di accedere a un campo direttamente dall'operatore punto o tramite un metodo getter dipende da ciò che si sta facendo.
In generale, il codice che scrivi non deve esporre i suoi campi interni a chiamanti esterni senza una buona ragione. "Perché voglio digitare meno" non si qualifica. Pertanto, la maggior parte delle volte utilizzerai un metodo getter per accedere ai campi di altri oggetti passati o creati dalla classe e dovresti fornire metodi getter ai campi che vuoi esporre.
L'avvertimento a questo è quando scrivi un codice che è solo per l'interno della tua classe. Sovrascrivere il metodo Equals (oggetto o) per esempio. Quando si esegue l'override di Equals per una classe non banale, è spesso necessario confrontare i singoli campi della classe. In tal caso, si utilizzerà generalmente la notazione a punti per accedere ai campi dell'oggetto passato (supponendo che sia del tipo appropriato). Ci sono momenti in cui hai bisogno di una classe helper che puoi definire nel tuo file di classe. In generale, si accede direttamente ai campi dell'oggetto helper, a meno che qualche logica (che controlli, perché è la tua classe) imponga diversamente. La ragione per cui va bene usare l'operatore punto per questi usi interni è perché non espongono nulla ai chiamanti esterni. Se hai trovato che avevi bisogno della classe helper per qualcos'altro e se la spostava fuori dalla classe che lo stava usando, allora dovresti usare i getter.
Ci sono anche momenti in cui devi usare le librerie esterne e quel codice potrebbe non avere getter e sarai costretto ad accedere direttamente ai campi.
Per ripetere: in generale preferisco i getter.