2008-10-16 30 views

Respuesta

68

Puede seguir maven's standard project layout. No es necesario utilizar maven, pero facilitaría la transición en el futuro (si es necesario). Además, otros desarrolladores pueden utilizar para ver que el diseño, ya que muchos proyectos de código abierto se nos extienden de esta manera,

+2

También recomiendo usar el diseño de Maven si puede elegir. Es una estructura bien pensada que ha sido probada en batalla, y es familiar para muchos desarrolladores. –

+13

Puede usar este oneliner para crear el diseño del directorio: mkdir -p src/{main/{java, recursos, filtros, ensamblaje, config, webapp}, prueba/{java, recursos, filtros}, sitio} –

+0

Proyecto estándar de Maven el diseño es feo ...:/ –

51

Hay algunos recursos existentes se podría verificar:

  1. Properly Package Your Java Classes
  2. Spring 2.5 Architecture
  3. Java Tutorial - Naming a Package
  4. SUN Naming Conventions

Por lo que vale la pena, mis propias directrices personales que tienden a utilizar son los siguientes:

  1. de inicio con dominio inverso, por ejemplo, "com.mycompany".
  2. Use el nombre del producto, p. "mi producto". En algunos casos, tiendo a tener paquetes comunes que no pertenecen a un producto en particular. Estos terminarían categorizados según la funcionalidad de estas clases comunes, p. "io", "util", "ui", etc.
  3. Después de esto se vuelve más libre. Usualmente agrupo de acuerdo al proyecto, área de funcionalidad, implementación, etc. Por ejemplo, podría tener "project1", "project2", "ui", "client", etc.

Un par de otros puntos:

  1. Es bastante común en los proyectos en los que he trabajado que los nombres de los paquetes fluyan de la documentación de diseño. Por lo general, los productos ya están separados en áreas de funcionalidad o propósito.
  2. No se preocupe demasiado por llevar de inmediato la funcionalidad común a paquetes superiores. Espere a que haya una necesidad en los proyectos, productos, etc., y luego refactorice.
  3. Mire las dependencias entre paquetes. No son del todo malos, pero pueden significar un acoplamiento estrecho entre lo que podrían ser unidades separadas. Hay herramientas que pueden ayudarlo a realizar un seguimiento de esto.
+1

En el caso de dominio inverso ("com.mycompany"), ¿el paquete "com" está normalmente vacío excepto el subpaquete "mycompany"? – Josephus

1

La forma en que por lo general tengo mi jerarquía de carpeta-

  • Nombre del proyecto
    • src
    • bin
    • pruebas
    • libs
    • docs
36

Sugeriría crear su estructura de paquete por función, y no por la capa de implementación.Una buena escritura hasta en esto es Java practices: Package by feature, not layer

+2

Gracias. Esto es lo que estaba buscando para transmitir mis pensamientos al equipo – Pranalee

+6

¿Y si desea cambiar las bases de datos? Solo hay que mirar en 30 paquetes diferentes. ¿Pasar de SFTP a los servicios web? Nuevamente solo hay que mirar en 30 lugares diferentes. Definitivamente no es un fan. – SamuelKDavis

+1

otro ejemplo donde el empaquetado por capa tiene beneficios: si serializa las clases a JSON (por ejemplo, con gson), si esas clases están ofuscadas (por ejemplo, por Proguard) (de) la serialización fallará; necesita configurar Proguard para que no toque dichas clases; es más fácil simplemente especificar un solo paquete con todas ellas – jmuet

4

Here se puede leer acerca de los diseños de directorio estándar y sobre la estructura de directorios/paquete para proyecto Java.

3

Otro artículo muy bueno sobre Java paquetes estructura: Managing the Java classpath

+1

Aunque en realidad no responde la pregunta, sigue siendo un buen puntero para un principiante. –

3

lo general me gusta tener lo siguiente:

  • bin (binarios)
  • doc (Documentos)
  • inf (Información)
  • lib (Bibliotecas)
  • res (Recursos)
  • src (Fuente)
  • TST (Test)

Estos pueden ser considerados poco convencional, pero me parece que sea una muy buena manera de organizar las cosas.

+0

"Estos pueden considerarse no convencionales" En realidad son poco convencionales y malos por cierto ... – mahieddine

Cuestiones relacionadas