Sviluppo e debug di funzioni personalizzate nelle applicazioni mobile

Recentemente, ho letto questa annotazione in una revisione del codice di un collega, effettuata da un sviluppatore senior: "Ho apportato una piccola modifica alla funzione utente per farla funzionare correttamente quando vengono utilizzate lingue diverse dall'inglese." Questo commento è stato sorprendente: il codice è il codice e non dovrebbe fare differenza quale lingua parli lo sviluppatore o l'utente finale! Una funzione utente è semplicemente un'espressione che può accettare parametri di input e restituire un risultato.

Altova MobileTogether supporta le funzioni utente all'interno di un framework di sviluppo mobile multipiattaforma che combina la progettazione dell'interfaccia utente tramite funzionalità di trascinamento e rilascio e la programmazione funzionale standardizzata per la selezione e l'elaborazione dei dati. Diverse applicazioni dimostrative di MobileTogether dipendono fortemente dalle funzioni utente, e il software MobileTogether Designer include funzionalità che semplificano notevolmente la creazione e la validazione di queste funzioni.

Esaminiamo le funzionalità utilizzate dagli utenti nelle applicazioni mobile, analizzando una di queste applicazioni di esempio.

In un post precedente, abbiamo citato l'app Parcel Delivery come esempio di tecniche di programmazione avanzate per lo sviluppo di applicazioni mobile. Parcel Delivery è un'implementazione elegante realizzata da uno sviluppatore esperto, che si basa fortemente sulle funzionalità utilizzate dagli utenti.

L'esempio "Parcel Delivery" è una simulazione completa di un'applicazione reale per la consegna di pacchi. L'utente finale assume il ruolo di un autista di una società di consegne, incaricato di trasportare pacchi da un magazzino nel New Jersey a destinazioni nella città di New York, seguendo le indicazioni del GPS. È possibile eseguire l'applicazione nella finestra "Simulatore" del software MobileTogether Designer per osservare movimenti realistici verso ciascuna destinazione. Se si esegue l'applicazione "Parcel Delivery" sul proprio telefono, utilizzando il server dimostrativo di MobileTogether, il telefono utilizzerà la sua funzionalità GPS integrata.

Ecco due schermate che mostrano l'assegnazione dei conducenti, visualizzate su un iPhone con il tema scuro e su un telefono Android con il tema chiaro:

Le funzioni utente che vengono eseguite a runtime generano l'elenco delle consegne e i marcatori sulla mappa. Possiamo visualizzare le definizioni delle funzioni nella finestra "Costruttore di espressioni XPath" del software MobileTogether Designer:

L'opzione "Builder" selezionata in precedenza fornisce strumenti di supporto per la creazione, descrizioni a comparsa di elementi XPath/XQuery specifici per il contesto, e il completamento automatico mentre si creano le espressioni. L'opzione "Evaluator" consente di visualizzare in anteprima i risultati delle espressioni, in modo da poterle validare o modificare, se necessario.

Mentre l'applicazione viene eseguita nel simulatore MobileTogether, il valutatore XPath ha accesso a tutti i valori in tempo reale dei dati della pagina. Possiamo aprire il valutatore XPath nel simulatore per valutare le funzioni utilizzate nelle applicazioni mobile:

La funzione RemainingDestinations() restituisce un elenco contenente gli attributi di ciascuna destinazione, che viene utilizzato per popolare l'elenco di testo nella sezione inferiore della pagina "Todo".

La funzione utente DestinationMarkerList() chiama la funzione RemainingDestinations() e crea un elenco di marcatori sulla mappa per individuare ciascuna destinazione

Il testo e il titolo relativi a ciascuna destinazione vengono visualizzati quando l'utente clicca sull'icona sulla mappa

La funzione DestinationMarkerList() è una proprietà del controllo mappa:

Il menu principale del progetto include un'opzione per generare un elenco di tutti gli utilizzi delle funzioni definite dall'utente all'interno dell'applicazione

Per un'analisi dettagliata della valutazione di una funzione utente, è possibile attivare la modalità di debug durante la simulazione e osservare la valutazione della funzione passo dopo passo:

Man mano che l'applicazione viene utilizzata, l'utente simula ogni consegna e registra il destinatario e le condizioni del pacco. Una pagina di riepilogo delle consegne mostra i risultati:

In questa mappa, i segnaposto sono codificati a colori e il testo che appare quando si clicca su di essi descrive lo stato di ogni consegna. Per la consegna evidenziata sopra, Joan Jones era un destinatario sostitutivo, quindi il segnaposto è arancione invece che verde. La funzione utente ReportMarkerList() ha estratto il riepilogo della consegna dall'albero dei dati e ha colorato il segnaposto perché il destinatario effettivo non era la persona a cui era indirizzata la spedizione.

L'unico modo in cui sappiamo che la consegna non è stata completamente efficace è attraverso il testo descrittivo. E lì si risolve il mistero del commento nella revisione del codice! Il testo è in inglese, quindi il revisore del codice ha modificato una funzione utente per farla funzionare in qualsiasi lingua.

MobileTogether offre funzionalità di localizzazione che consentono di elaborare facilmente i testi dei messaggi in diverse lingue durante l'esecuzione del programma.

L'app per la consegna di pacchi è disponibile in diverse lingue, tra cui inglese, tedesco, spagnolo, giapponese e francese, a seconda della lingua impostata sul sistema operativo. La sezione superiore della finestra di dialogo di localizzazione, mostrata di seguito, presenta una tabella con le traduzioni per elementi fissi come titoli di pagina, etichette, pulsanti, ecc.

La sezione inferiore definisce una tabella di traduzione per le stringhe di testo, configurata a runtime in base a condizioni che si verificano durante l'esecuzione. MobileTogether include una funzione integrata, mt-load-string('nome'), che fa riferimento alle stringhe tramite i loro nomi assegnati, indipendentemente dalla lingua del dispositivo.

L'immagine sottostante mostra la definizione della funzione ReportMarkerList(), che imposta i colori dei segnaposto e il testo che appare quando si passa il mouse sopra i segnaposto sulla mappa del rapporto di consegna. Se il testo associato a una consegna corrisponde alla stringa denominata "delivered_C", il segnaposto sarà verde. Il testo "delivered_C" in inglese è "Personally accepted delivery" (consegna accettata personalmente). In spagnolo, il testo sarebbe "Entrega aceptada en persona" (consegna accettata di persona)

Se lo sviluppatore avesse semplicemente confrontato il campo "DeliverySummary" con la stringa "Personally accepted delivery" in inglese, i segnaposto sulla mappa non sarebbero stati colorati correttamente in nessuna altra lingua.

È possibile verificare il funzionamento della funzione utente ReportMarkerText() in diverse lingue all'interno del simulatore MobileTogether. Il menu principale del progetto include un'opzione per eseguire l'applicazione in altre lingue:

Possiamo eseguire l'applicazione in spagnolo e simulare una serie di consegne per generare un rapporto sulle consegne in spagnolo. Il colore di ogni indicatore è impostato correttamente in base al testo descrittivo di ogni voce nel riepilogo delle consegne.

Utilizzate tutte le vostre competenze e strumenti, comprese tecniche di programmazione avanzate come le funzioni personalizzate nelle applicazioni mobile, per creare le vostre app in tempi record! Scoprite MobileTogether dimostrazioni video, di più applicazioni di esempio, o addirittura il/la manuale online per un'analisi approfondita di tutte le informazioni. Quando sarete pronti a iniziare e a sviluppare le vostre applicazioni mobili multipiattaforma, Scaricate il software MobileTogether Designer.