2012-06-04 20 views
6

Attualmente sto lavorando a un progetto piuttosto massiccio con diverse classi di oltre 20.000 linee. Questo perché è stata un'idea brillante di qualcuno di mescolare tutto il codice di swing generato per l'interfaccia utente con tutto il codice funzionale. Mi chiedevo se avrebbe comportato costi aggiuntivi in ​​termini di memoria o tempo di esecuzione, per spostare la maggior parte delle funzioni non relative all'interfaccia utente in una classe separata. Per fornire un esempio, questo è qualcosa sulla falsariga di ciò che sto costruendo.Efficienza Java dei metodi di spostamento in un'altra classe

public class Class1{ 
    private Class1Util c1u; 
    List<String> infoItems; 
    ... 
    public void Class1(){ 
     c1u = new Class1Util(this); 
    } 
    public void btnAction(ActionListener al){ 
     ... 
     c1u.loadInfoFromDatabase(); 
    } 
} 

public class Class1Util{ 
    private Class1 c; 

    public void Class1Util(Class1 c){ 
     this.c = c; 
    } 
    public void loadInfoFromDatabase(){ 
     c.infoItems.add("blah"); 
    } 
} 

Alla fine, mi piacerebbe anche spostare alcuni dei campi come InfoItems oltre pure, il che porterebbe a un rapporto inverso, con Class1 c1u.infoItems di accesso.

risposta

6

no, la separazione delle preoccupazioni è una buona pratica di progettazione orientata agli oggetti. non ti costerà nulla di significativo in termini di prestazioni e ti porterà molti, molti vantaggi in termini di manutenzione, estensibilità, ecc.

2

Potresti ottenere un piccolo calo di prestazioni per un ulteriore livello di dereferenziazione, ma non sarebbe essere visibile in un codice UI e in cambio otterrai tanta chiarezza in più che non te ne pentirai.

Eventualmente è possibile esternare la conservazione dello stato in una terza classe, quindi utilizzare tale stato sia dal codice scritto a mano che generato, oppure utilizzare lo Generation Gap Pattern per gestire la complessità introdotta dalla necessità di integrarsi con il codice generato.

+0

il risultato della prestazione non sarà evidente in quasi tutti i codici tranne che in un sistema in tempo reale. – jtahlborn

+0

@jtahlborn D'accordo, è necessario un ciclo davvero stretto per rendere l'effetto del livello extra di riferimento indiretto per diventare evidente. – dasblinkenlight

Problemi correlati