Impostazione della variabile nel costruttore o nel metodo

1

Ho una classe che contiene due metodi.

Questi metodi aggiungono & rimuovere un oggetto in un archivio dati.

La classe che contiene questi metodi ha un costruttore no arg ma ognuno dei due metodi prende una quantità variabile di parametri per l'addizione / rimozione.

Questi metodi dovrebbero essere statici e, in caso contrario, i parametri del metodo devono essere inizializzati all'interno della struttura come variabili di istanza invece che a livello di metodo?

codice pseudo:

   class Utility {

       public Utility(){
    }

    public void add(String arg1, int arg2, boolean arg3){
    //add logic here
    }

    public void remove(int arg1, char arg2, float arg3){
    //remove logic here
    }
    }
    
posta blue-sky 22.05.2012 - 00:16
fonte

2 risposte

0

Qualcosa da considerare riguardo se i metodi dovrebbero essere statici o meno è lo stato reale che le istanze di classe possono contenere. Se i metodi sono statici, non possono accedere a nessuno stato memorizzato in istanze di oggetti, come le connessioni DB, a meno che, naturalmente, l'istanza non sia passata al metodo statico (Yuk, brutto).

Se ci sono altre variabili di istanza di classe a cui è necessario accedere con questi metodi, a parte la connessione DB, allora questi metodi probabilmente dovrebbero non essere statici.

Per quanto riguarda i parametri effettivi del metodo e la loro memorizzazione, ciò dipende solo dalla situazione a portata di mano, ed è difficile rispondere. Ma in generale non avrei archiviato quei valori con metodi che intendevo aggiungere o rimuovere da un DB, ma invece usare un costruttore o setter di attributi, quindi chiamare aggiungi / rimuovi senza detti attributi. Ma ancora, questo dipende solo.

Come menzionato nella risposta di @Carl Manaster , se questa classe diventa semplicemente un contenitore per diversi metodi statici, allora un refactoring dovrebbe essere considerato. Si può considerare un refactoring che implichi la creazione di una sorta di POJO (o gerarchia persistente) dagli oggetti da perseguire e creare una Persistenza separata (o gerarchia di classi) che prenderebbe i POJO come argomenti del metodo.

    
risposta data 22.05.2012 - 13:15
fonte
1

Se non hai motivo di mantenere i valori tra le chiamate ai metodi, come sembrerebbe essere il caso dal tuo codice di esempio, i metodi dovrebbero essere statici. Quando hai troppi metodi statici, è un "odore" che forse una nuova classe più piccola sta aspettando di essere "germogliata"; in quella nuova classe, i metodi statici nella classe originale potrebbero diventare non statici e alcuni dei dati che sono attualmente passati come parametri potrebbero diventare campi nella nuova classe.

    
risposta data 22.05.2012 - 00:29
fonte

Leggi altre domande sui tag