Cómo organizar su flujo de trabajo al desarrollar aplicaciones móviles

Todos tendrán un proceso diferente para el desarrollo.

Soy un tipo de abajo hacia arriba, especialmente por agregar características. Agregar características es lo que he estado haciendo últimamente, así que así es como trabajo para agregar una sola característica:

Si hay datos persistentes involucrados, comienzo con el diseño del esquema de datos y la actualización de la base de datos para manejar los datos.

Entonces podría ir a las pantallas. En Android puede definir pantallas en archivos de diseño XML, además de que Android Studio tiene un editor de diseño WYSIWYG. (Aunque normalmente hago toda mi edición en modo de texto y vuelvo al modo WYSIWYG solo para ver cómo se ven mis cambios).

Ahora es el momento de escribir un código. La mayoría de las características que agrego tienen al menos un tipo de solicitud / respuesta de datos remotos. Primero tengo que asimilar la estructura de la respuesta JSON a una solicitud, y generalmente codifico una clase que representa los datos de la solicitud, luego codifico un método estático para tomar un JsonReader que envuelve el flujo de entrada HTTP y genera una instancia de la clase, con todos los datos completados. Para estructuras de datos más grandes, prepararé una prueba JUnit para leer en un archivo JSON de muestra y ejecutaré el método para asegurarme de que esa parte esté funcionando.

A continuación, tengo una clase singleton llamada Servicio que encapsula la interfaz con el servidor remoto. Agrego un método al Servicio para formatear los parámetros en una solicitud y llamar a ese método estático en la respuesta para devolver el objeto de datos.

Luego tengo que lidiar con el manejo de la solicitud y la respuesta de forma asincrónica. Codificaré una subclase AsyncTask o AsyncTaskLoader para tomar los valores de los parámetros y llamar al método Service en un subproceso en segundo plano, y luego devolver los valores en el subproceso de la interfaz de usuario. Por lo general, creo una interfaz que la persona que llama implementará para recibir asincrónicamente los datos de respuesta. Esta interfaz tiene dos métodos: un método de éxito normal y un método de excepción. La persona que llama siempre tendrá alguna forma de manejar con gracia cualquier problema que ocurra con el acceso al servidor remoto.

Finalmente es hora de escribir el código de la interfaz de usuario. Por lo general, creo una subclase de Fragment que maneja todas las entradas del usuario y llama a la subclase AsyncTask. Aquí pienso en guardar / restaurar el estado de la interfaz de usuario (para rotaciones de dispositivos) y las ramificaciones de la navegación hacia adelante a una nueva pantalla, luego hacia atrás nuevamente (especialmente cuando la pantalla posterior podría tener interacción del usuario que actualiza esta pantalla).

Realmente es bastante al revés, y significa que tengo que depurar el código de la interfaz de usuario, el código AsyncTask y el código de servicio, todo a la vez. Pero para mí resulta ser más rápido que escribir una gran cantidad de código desechable para eliminar cosas de nivel inferior.

Eventualmente espero llegar al punto en el que tenga el lujo de hacer más TDD y proponer todas las pruebas unitarias junto con el código.

Así que esta es una forma ágil. Si estaba buscando un proceso de alto nivel para requisitos o diseño, todo lo que puedo decir es que soy más productivo cuando me concentro en una función a la vez, la elimino y paso a la siguiente.

More Interesting

¿Quién ofrece muy buenos servicios de desarrollo de aplicaciones móviles?

¿Qué preguntas básicas y genéricas debo hacerle al cliente antes de comenzar el proyecto de desarrollo de aplicaciones móviles?

Si construyo aplicaciones móviles para personas, ¿habría algún problema para que aloje todas sus aplicaciones desde una sola cuenta de desarrollador de Apple / Google?

¿Cuáles son los idiomas utilizados para desarrollar aplicaciones móviles? ¿Puedo usar HTML5, CSS, PHP y JavaScript para crear aplicaciones móviles o necesito saber Java y C ++? ¿Qué es la programación de Android? ¿Como es diferente?

¿Cuáles son los blogs más populares entre los desarrolladores de aplicaciones móviles?

¿Está muriendo el mercado de aplicaciones móviles?

¿Quién es el mejor desarrollador de aplicaciones móviles en Pune?

¿Cuáles son los diversos aspectos de los servicios de desarrollo de aplicaciones móviles?

¿Cuál es una gran empresa en India para externalizar el desarrollo de mi aplicación móvil?

¿Cómo es el Appcelerator Titanium como marco de desarrollo de aplicaciones móviles?

¿Está incompleta una aplicación de investigación de productos sin la capacidad de escaneo de códigos de barras?

¿Cómo escalaría una aplicación para admitir a millones de usuarios en el desarrollo de aplicaciones móviles?

Si tengo varias ideas para aplicaciones y muy poca experiencia en programación, ¿cómo hago para desarrollarlas?

¿Cuál es la mejor manera de crear un prototipo rápido de una aplicación móvil?

¿Cuáles son los elementos y pasos que debo seguir para crear una aplicación de Android?