Ottieni la variabile con il metodo accessor o semplicemente usa la notazione a punti?

1

Quindi, di recente ho notato qualcosa su un codice che stavo scrivendo. Potrei ottenere una variabile per una classe / oggetto differente usando la notazione dot per ottenere la variabile: object.someVarable o Potrei farlo nel modo in cui mi è stato insegnato e utilizzare un metodo di accesso: %codice% per restituire la variabile. Quindi, la mia domanda è: qual è il modo preferito per farlo?

    
posta Smarticles101 11.05.2016 - 23:41
fonte

2 risposte

3

Questo si riduce allo standard di codifica in uso. In genere quello che ho visto in Java è che tutte le variabili membro sono dichiarate private e i mutatori / accessori (setter / getter) sono forniti in base alle necessità.

Se il codice in questione è sviluppato da una terza parte e consente sia object.someVariable che object.getSomeVariable() , il mio istinto istintivo è che semplicemente non si sono preoccupati di controllare l'accessibilità della variabile. Se questo è il caso, utilizzerei ancora object.getSomeVariable() perché potrebbero realizzare il loro errore in futuro e rendere la variabile private . Se usi il getter, dovresti sempre essere in grado di farlo a meno che non rimuovano la variabile a titolo definitivo.

Se il codice in questione è parte del tuo codice base, ti suggerirei di rendere someVariable privato e fornire il getter. Fornendo il getter (e setter), stai prendendo una decisione deliberata per fornire agli utenti del tuo codice quell'interfaccia specifica. E se scrivi codice abbastanza bene, i tuoi utenti apprezzeranno questo tipo di suggerimenti sottili.

    
risposta data 12.05.2016 - 00:04
fonte
0

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.

    
risposta data 12.05.2016 - 01:56
fonte

Leggi altre domande sui tag