2013-04-23 16 views
11

Hier ist, was ich denke:android - strings.xml vs statische Konstanten

Die Saiten auf strings.xml sollten Verwendung für die Layouts (xml) zu bedienen. Und statische Konstanten sind für Codes (.java) zu verwenden.

Wenn es um Best Practices geht, würde ich gerne wissen, welche verwendet werden sollte.

Wenn Sie viele Saiten haben, wird es Leistungseffekt haben?

+1

Wenn Sie kümmern sich nicht um die Lokalisierung oder jede der anderen [Qualifier] (http://developer.android.com/guide/topics/resources/providing-resources.html), die Android für Ressourcen unterstützt, könnten Sie auch Java-Konstanten verwenden. Ich würde die Konstanten etwas schneller machen, da sie vom Compiler inline geschrieben werden können und nicht aufgeblasen werden müssen. Es ist jedoch wahrscheinlich nur eine Mikrooptimierung, also würde ich mich nicht zu sehr darum kümmern, vorausgesetzt, Sie führen keine Schleifenoperationen im UI-Thread durch, in dem Sie ständig Strings oder String-Arrays aufblasen. –

+0

Wenn Sie Ihre App in verschiedenen Sprachen veröffentlichen möchten, sollten alle auf der Benutzeroberfläche angezeigten Zeichenfolgen in der Datei strings.xml enthalten sein. Den Rest kannst du statisch machen, wenn du willst. –

+1

Wenn es sich wirklich um "Best Practices" handelt, sollten Sie die UI-Strings niemals hartcodieren, nicht einmal in einem kleinen, persönlichen Projekt. Am besten ist es, schlechte Angewohnheiten zu vermeiden, die eines Tages dazu führen, dass Ihre Mitschüler Salz in Ihren Kaffee schütten, wenn sie Ihren Code internationalisieren müssen. Auch im Code sollten einige Zeichenfolgen Ressourcen sein, z. bei der Verarbeitung von Benutzereingaben, die je nach Gebietsschema variieren können. – MarsAtomic

Antwort

33

In diesen beiden Fällen gibt es sowohl Vor- als auch Nachteile (ich würde Vorteile und weniger Vorteile sagen).

wie in den Kommentaren Ihrer Frage sagten sie alles. Ich möchte nur einige kleinere Punkte hinzufügen.

Lokalisierung:

Zur Lokalisierung Ausgabe definitiv String-Ressource ist die beste, wie Sie verschiedene Sprachdatei für differente Locale verwenden können.

Speicher:

As String-Ressourcen in XML-Datei gespeichert werden, so gibt es einige zusätzlichen Aufwand sind (kein großer ein though)

Performance:

aus dem Speicher zu lesen ist immer schneller als das Lesen aus der Datei. Obwohl in diesem Fall ist die Leistung Unterschied nicht signifikant

Wartung:

Es ist nur eine persönliche Meinung. Für mich ist die Pflege der Res-Datei einfacher als die Pflege der Zeichenkette in der Klasse. string.xml ist für mich besser lesbar.

Endlich:

Also mein Vorschlag ist

Verwendung String-Ressourcen für die Texte, die an Benutzer angezeigt wird.

und

Verwendung statische Konstanten für interne puposes des Programms wie Datenbanknamen, interne Variable, Intent-Filter Name usw.

+0

Soweit ich weiß, sind die XML-Dateien auch in der Apk kompiliert, so dass ich keine Überlastung denke. –

+0

Eine andere Sache ist, dass ein String aus XML direkt in XML-Layouts verwendet werden kann, was bei Konstanten nicht der Fall ist. –