Ci sono due argomenti per usare i metodi accessor invece delle variabili pubbliche:
-
Controllo di accesso : un metodo ci consente di pubblicare solo un metodo getter o di aggiungere vincoli basati sul valore (al contrario di tipo) su un setter. Con public final
identificatori, questo punto è irrilevante, in quanto tale valore non può essere modificato e pertanto gli invarianti non possono essere interrotti dal codice client.
-
Accesso uniforme : il metodo di accesso ai dati in un oggetto non dovrebbe perdere informazioni sul fatto che questi dati siano archiviati o calcolati al volo. Nelle lingue senza "proprietà", come Java, ciò significa che tutti i dati dovrebbero essere accessibili tramite metodi e che nessuna variabile dovrebbe mai essere public
. Ma perché il Principio di accesso uniforme esiste in primo luogo? Ha lo scopo di riservare margine di manovra per reimplementare le parti interne di un oggetto senza modificare l'interfaccia pubblica, in modo che il codice client che utilizza quell'oggetto non si rompa.
Ma nella tua situazione non esiste un codice client che utilizza un'API pubblica, stai solo memorizzando i dati per i test. Poiché non esiste alcuna API da mantenere, la giustificazione per l'UAP si riduce (anche se seguirla offre comunque tutti i vantaggi).
Quindi non ci sono argomenti convincenti per l'utilizzo di entrambe le soluzioni. È un campo piuttosto carino, e puoi scegliere liberamente.
Si noti che l'utilizzo dei metodi è assolutamente necessario quando ogni accesso deve restituire una nuova istanza. Questo è irrilevante per oggetti immutabili come le stringhe. Altrimenti, dovresti prendere in considerazione l'accesso a tutti i dati dei test tramite metodi di coerenza.
La mia opinione personale sarebbe quella di scegliere la cosa più semplice possibile, che userebbe public final
variabili. Tuttavia, si prega di utilizzare le variabili membro e non static
, in modo che i test possano passare i dati di test intorno come un oggetto di prima classe. (So che puoi accedere ai dati statici tramite le istanze, ma ritengo che sia un anti-pattern).
Se nel tuo team ci sono persone che non hanno familiarità con Java, potrebbe essere meglio memorizzare i dati di test in un file di configurazione (consiglio il formato YAML). Invece di scrivere la tua classe, dovresti utilizzare il parser dei file di configurazione per accedere ai dati.