2012-08-23 34 views
5

Por ahora, mi clase promedio contiene aproximadamente 500 líneas de código y aproximadamente 50 métodos. IDE es Eclipse, donde giré "Guardar acciones" para que los métodos se clasifiquen en orden alfabético, primero con métodos públicos y luego con métodos privados. Para encontrar cualquier método específico en el código, utilizo "Esquema rápido". Si es necesario, la "Jerarquía de llamadas abiertas" muestra la secuencia de métodos que llamaron uno por uno.¿Cómo se organiza el código fuente de clase en Java?

Este enfoque proporciona las ventajas siguientes:

  • puedo empezar a escribir nuevo método sin pensar dónde colocarlo en el código, ya que después de guardarlo se colocará por Eclipse para apropiarse de forma automática.
  • siempre encuentro métodos públicos en la parte superior del código (no tiene que buscar a toda la clase para ellos)

Sin embargo, hay algunas desventajas:

al refactorizar método grandes en otros más pequeños No estoy muy satisfecho de que los nuevos métodos privados estén ubicados en diferentes partes del código y, por lo tanto, es un poco difícil seguir el concepto del código. Para evitar eso, los nombro de alguna manera extraña para mantenerlos cerca de cada uno, por ejemplo: showPageFirst(), showPageSecond() en lugar de showFirstPage(), showSecondPage().

¿Puede haber algunos enfoques mejores?

+0

Pedido http://www.amazon.com/Design-Patterns-Java -Software-Series/dp/0321333020 le ayudará a escribir software que sea más fácil de mantener y compartir con los demás –

Respuesta

3

Bueno, nombrando a sus métodos de manera que será más fácil de detectar en su IDE no es muy buena. Su nombre debe reflejar lo que hacen, nada más.

Como respuesta a su pregunta, probablemente lo mejor que puede hacer es dividir su clase en varias clases y aislar grupos de métodos que tienen algo en común en cada una de esas clases. Por ejemplo, si usted tiene

public void largeMethodThatDoesSomething() { 
//do A 
//do B 
//do C 
} 

que luego de haber refactorizado tal que:

public void largeMethodThatDoesSomething() { 
doA(); 
doB(); 
doC(); 
} 

private void doA() {}; 
private void doB() {}; 
private void doC() {}; 

se puede hacer una clase llamada SomethingDoer donde se colocan todos estos 4 metods y luego utiliza una instancia de esa clase en tu clase original.

+0

¿No es bueno aumentar el número de clases en pro ject? Recuerdo que en el Tutorial de Java advirtieron que no aumentasen el número de clases sin control porque puede aumentar el tiempo de arranque. http://docs.oracle.com/javase/tutorial/uiswing/events/generalrules.html#innerClasses – Aleksey

+0

Sí, sé lo que quieres decir, he estado en el camino también. Incluso hay una página de Consejos de rendimiento para el desarrollo de Android (con Java), que dice que no solo se deben hacer pocas clases, sino también evitar los métodos a favor de los campos públicos, evitar la herencia y las llamadas polimórficas porque eso agrega una demora adicional de nano segundos y en un ciclo de juego esos son críticos. Sin embargo, ir a los extremos con eso dará como resultado un código difícil de manejar y difícil de mantener. Intente codificar correcta y limpiamente con clases separadas como métodos según las necesidades comerciales de su programa ... –

+0

... luego, si es necesario, perfile su aplicación, vea si hay código que genere cuellos de botella de rendimiento, y trate de optimizar solo esa porción haciendo es menos estético pero más amigable para el rendimiento. Confía en mí, codifica desde cero con solo el rendimiento en mente y nada más te meterá en problemas. –

1

Organizar la manera que describió suena mejor que el 99% del código de Java que he visto hasta ahora. Sin embargo, por otro lado, asegúrese de que sus clases no crezcan demasiado y que los métodos no sean enormes.

clases por lo general debe ser inferior a 1000 líneas y métodos de menos de 150.

3

No se preocupe por ordenar físicamente sus métodos dentro de la clase, si no puede verlos simplemente use Ctrl-O y comience a escribir el nombre del método y saltará directamente a él.

Tener nombres de método de autodescripción da como resultado un código más fácil de mantener que nombrarlos artificialmente para mantenerlos en orden alfabético.

Sugerencia: aprender sus teclas de acceso directo y va a mejorar su productividad

4

organizar el código de sus audiencias.Por ejemplo, una clase en una biblioteca podría tener estas audiencias:

  1. Cliente API que desea obtener más detalles sobre cómo funciona un método público.
  2. Un desarrollador que desea encontrar el método adecuado para realizar un pequeño cambio.
  3. Un responsable más serio que quiere hacer una refactorización significativa o agregar funcionalidad.

Para los clientes que utilizan el código fuente, desea presentar los conceptos básicos. Primero tenemos un comentario de doc de clase que incluye un glosario de términos importantes y ejemplos de uso. Luego tenemos el código relacionado con un término, luego los relacionados con otro, luego los relacionados con un tercero.

Para los encargados de mantenimiento, cualquier par de métodos que probablemente tengan que cambiar juntos debería estar cerca. Un método público y su ayudante privado y todas las constantes relacionadas solo deberían aparecer juntas.

Ambos grupos de usuarios reciben ayuda agrupando a los miembros de la clase en secciones lógicas que están documentadas por separado.

Por ejemplo, una clase de colección puede tener varias preocupaciones principalmente ortogonales que no se pueden dividir fácilmente en clases separadas, pero que se pueden dividir en secciones separadas.

  1. mutators
  2. descriptores de acceso
  3. iteración
  4. serializar y toString
  5. Igualdad, comparabilidad, hash
Cuestiones relacionadas