Crea i campi a livello di classe, quindi crea un'istanza all'interno dei metodi o crea e crea un'istanza all'interno dei metodi

0

Sono un principiante nello sviluppo di software. Mi chiedo quale codice sia migliore e perché dovrei continuare quale schema dovrei seguire.

Primo frammento:

Class TestClass
{
    private Object1 field = null;
    private Object2 field2 = null;

    public void TestMethod1() 
    {
          field = new Object1();
          field2 = new Object2();     
    }

    public void TestMethod2() 
    {
          field = new Object1();
          field2 = new Object2();     
    }
}

Come puoi vedere, ho creato campi in Class level e li ho istanziati all'interno del metodo.

Secondo snippet:

Class TestClass
{

    public void TestMethod1() 
    {
          Object1 field = new Object1();
          Object2 field2 = new Object2(); 
    }

    public void TestMethod2() 
    {
          Object1 field = new Object1();
          Object2 field2 = new Object2(); 
    }
}

Qui ho creato e istanziato i campi.

Questi campi vengono utilizzati più volte in molti modi in una classe.

    
posta rpm07 25.02.2015 - 13:01
fonte

2 risposte

1

In realtà dipende. Creo solo una classe che contiene attributi di istanza se ne utilizza più di uno dei suoi metodi. D'altra parte, se un attributo (o una variabile) è usato solo all'interno del metodo, allora dovrebbe essere definito locale per il metodo che usa.

Nell'esempio che descrivi, penso che stai usando le funzioni invece dei metodi, che a mio parere sembrano indipendenti tra ogni esecuzione del metodo. (Questo deriva dalla parola "test").

Se entrambe le istanze di oggetti che prevedi di utilizzare sono le stesse, forse definirle a livello di classe e creare un'istanza sia nel metodo di configurazione.

    
risposta data 25.02.2015 - 15:26
fonte
0

Se il campo e il campo2 devono persistere all'esterno di una particolare chiamata di metodo, devono essere definiti a livello di classe, al di fuori dei metodi.
In questo caso, non è molto importante dove vengono istanziati successivamente (purché tutto il codice accetti che potrebbe non essere inizializzato).

Se field e field2 vengono utilizzati sempre e solo all'interno di un particolare metodo, quindi definirli e inizializzarli all'interno di quel metodo.

Adottare le variabili come "strettamente" il più possibile per evitare effetti collaterali e Perils of Thread Un-Safety.

    
risposta data 25.02.2015 - 13:39
fonte

Leggi altre domande sui tag