2012-06-04 7 views
6

Actualmente estoy trabajando con un proyecto bastante masivo con varias clases de más de 20, 000 líneas. Esto se debe a que fue una buena idea para alguien mezclar todo el código de swing generado para la interfaz de usuario con todo el código funcional. Me preguntaba si se incurriría en un costo adicional en términos de memoria o tiempo de ejecución, para mover la mayoría de las funciones no relacionadas con la interfaz de usuario en una clase separada. Para dar un ejemplo, esto es algo similar a lo que estoy construyendo.Eficiencia de Java de mover métodos a otra clase

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"); 
    } 
} 

Finalmente, también me gustaría mover algunos de los campos como elementos de información más, así, lo que resultaría en una relación inversa, la clase 1 c1u.infoItems acceso.

Respuesta

6

no, separación de preocupaciones es una buena práctica de diseño orientado a objetos. no le costará nada significativo en términos de rendimiento y obtendrá muchos, muchos beneficios en términos de mantenimiento, extensibilidad, etc.

2

Puede obtener un pequeño golpe de rendimiento para un nivel adicional de desreferenciación, pero no lo haría ser notable en un código UI, y obtendrás tanta claridad extra a cambio que no te arrepentirás.

Eventualmente es posible que desee externalizar el mantenimiento de estado en una tercera clase y luego usar ese estado tanto del código escrito a mano como generado, o usar el Generation Gap Pattern para administrar la complejidad introducida por la necesidad de integrar con el código generado.

+0

el rendimiento no se notará en casi cualquier código, excepto posiblemente un sistema en tiempo real. – jtahlborn

+0

@jtahlborn De acuerdo, necesita un bucle muy ajustado para que el efecto del nivel adicional de indirección se note. – dasblinkenlight

Cuestiones relacionadas