¿Cuál es la mejor manera de estructurar una aplicación de Android?


26

Estoy comenzando una nueva aplicación de Android. ¿Cuál es la mejor estructura para usar?

Estoy planeando hacer un diseño de paquete múltiple de la siguiente manera:

  1. Paquete principal, incluida la actividad
  2. Servicio y capa de datos
  3. Paquete de entidad, incluida la clase de entidad.

    Algún consejo ?


Respuestas:


11

Primero, depende de qué aplicación esté haciendo.

debe hacer una descripción textual o esquemática sobre cómo trabajará un usuario con la aplicación. Repara todos los escenarios posibles. Anote ejemplos que se utilizarán más adelante para las pruebas.

Decida qué pertenece a la funcionalidad y qué, a la configuración modificable. Extraer funcionalidades y entidades de datos de escenarios.

De los escenarios, tome una decisión sobre cuál será su aplicación. ¿Es servicio, actividad, widget, incluso un proveedor de contenido o un sistema complejo, que incluye algunos componentes diferentes? Pon a prueba tu decisión contra los escenarios.

En el caso del sistema complejo, distribuya funcionalidades y entidades de datos entre los componentes de la aplicación. Haga una lista de componentes y cuáles son (actividades o algo más).

Haga una lista de los componentes de la interfaz de usuario con una descripción de lo que hacen (no CÓMO todavía). Estos serán widgets y actividades o fragmentos o diseños más adelante.

Realice diseños de borrador para los componentes de la interfaz de usuario. Haga pases simples de uno a otro. Mira la interfaz de usuario. Regrese a los escenarios y juegue todos ellos con su borrador de IU. Todos los componentes y clases de la interfaz de usuario se colocan en una jerarquía de paquetes o paquetes.

Haga una lista de entidades de datos. Decide qué habrá en qué. Planifíquelos como colecciones o tablas en DB o diferentes DB. Conviértalos en clases, colóquelos en otra jerarquía de paquetes u otro paquete. Aquí también ponemos ayudantes de DB: clases que hablan con DB por SQL.

Haga una clase de prueba (JUNIT o mejor TestNG) para llenar la IU y las entidades de datos con datos de prueba y lanzarlos.

Los adaptadores no necesitan ser públicos, ya que se usan solo en su GroupView padre. Por lo tanto, generalmente no hay archivos para adaptadores.

No , no poner todos globales en clases estáticas especiales - que es una mala práctica. Estás mezclando el código y la configuración. Usa esta solución muy interesante . Por ahora, es lo mejor que sé para Android.

Los datos de configuración se deben poner en recursos. Si algunos de ellos son complejos, use fuentes XML y analizador (es). Convierta a los lectores de datos de recursos en variables globales. ¡No todos serán estáticos! Podrían pertenecer a la instancia principal de Actividad, por ejemplo.

¡No use constantes no configurables en el código! Puede ser, solo su nombre :-). Cada constante se vuelve no constante a veces.

Por otro lado, si parte de su código no es Java normal, sino scripts , una mezcla de datos e idioma, entonces puede y debe mezclar datos y código.

Hágalo siempre: escriba algo, conecte algo a un lote, agregue prueba (s) para esta cosa nueva, pruebe este nuevo, pruebe el lote, repita. Pequeños pasos solamente!

Editar. También puede usar el desarrollo impulsado por la prueba: escriba las pruebas antes del código apropiado. De esta manera, ejecutando pruebas antes de que el código esté listo, tiene una doble prueba, por lo que verifica si las pruebas realmente reaccionan al código incorrecto.


7

Sí, es fácil de desarrollar si clasificas las cosas en base a su trabajo. Estás en la dirección correcta. En Android, si desarrollas una aplicación, usaré la siguiente estructura, algo similar a ti

  1. Paquete principal con toda la actividad de la pantalla
  2. Clases de adaptadores si estoy usando ListView, GridView que necesitan BaseAdapter, etc.
  3. Ayudante de análisis si se usa
  4. Base de datos
  5. Clases de entidad y clases para almacenar variables estáticas
  6. Servicio y receptor
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.