2013-04-23 7 views
11

Ecco quello che sto pensando:Android - strings.xml vs statico costanti

Le corde su strings.xml dovrebbero essere utilizzati per il layout (XML) da utilizzare. E le costanti statiche sono per i codici (.java) da usare.

Quando si tratta di buone pratiche, mi piacerebbe sapere quale dovrebbe essere utilizzato.

Se si dispone di molte stringhe, avrà un effetto sulle prestazioni?

getString(...) vs MyConstants.THIS_IS_A_CONSTANT 
+1

Se non si cura di localizzazione o qualsiasi degli altri [qualificatori] (http://developer.android.com/guide/topics/resources/providing-resources.html) supportati da Android per le risorse, quindi è possibile utilizzare le costanti Java. Vorrei che le costanti fossero leggermente più veloci, in quanto possono essere sottolineate dal compilatore e non devono essere gonfiate. Tuttavia, è probabilmente solo una micro-ottimizzazione, quindi non mi preoccuperei troppo, a patto che non stiate eseguendo operazioni di loop sul thread dell'interfaccia utente in cui costantemente gonfiate stringhe o array di stringhe. –

+0

Se si desidera pubblicare l'app in lingue diverse, tutte le stringhe visualizzate nell'interfaccia utente devono essere nel file strings.xml. Il resto puoi renderli statici se vuoi. –

+1

Se si tratta davvero di "best practice", non utilizzare mai le stringhe UI hardcode, nemmeno in un piccolo progetto personale. Meglio evitare le cattive abitudini che un giorno far sì che i tuoi colleghi programmatori versino del sale nel tuo caffè quando devono internazionalizzare il tuo codice. Anche nel codice, alcune stringhe dovrebbero essere risorse, ad es. durante l'elaborazione dell'input dell'utente che può variare in base alla locale. – MarsAtomic

risposta

33

Ci sono sia alcuni vantaggi che svantaggi (dovrei dire vantaggi e meno vantaggi) in questi due casi.

come nei commenti della tua domanda hanno detto tutto. Voglio solo aggiungere alcuni punti minori.

Localizzazione:

Per problema di localizzazione sicuramente risorsa stringa è la migliore in quanto è possibile utilizzare file di lingua diversa per differente Locale.

Memoria:

As String risorse vengono salvati in file xml quindi ci sono un certo overhead in più (non un grande uno, però)

Performance:

lettura dalla memoria è sempre più veloce della lettura dal file. Anche se in questo caso la differenza di prestazioni non è significativa

Manutenzione:

E 'solo un parere personale. Per me mantenere il file res è più facile che mantenere una stringa in classe. string.xml è più leggibile per me.

Infine:

Quindi il mio suggerimento è

risorse uso di stringa per i testi che verranno visualizzati per l'utente.

e

utilizzare costanti statiche per puposes interne del vostro programma come i nomi database, variabile interna, Filtro intento ecc

+0

Per quanto ne so i file xml sono anche compilati nell'apk quindi non penso ci sia un sovraccarico. –

+0

Un'altra cosa è che una stringa da XML può essere utilizzata direttamente nei layout XML, non è il caso delle costanti. –