2013-04-23 10 views
11

Oto co mam na myśli:android - strings.xml vs statyczne stałe

Struny na strings.xml powinien być użyty do układów (XML) do wykorzystania. Stałe statyczne służą do używania kodów (.java).

Jeśli chodzi o najlepsze praktyki, chciałbym wiedzieć, które z nich należy zastosować.

Jeśli masz dużo strun, czy będzie to miało wpływ na wydajność?

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

Jeśli nie dbają o lokalizacji lub którykolwiek innych [kwalifikatory] (http://developer.android.com/guide/topics/resources/providing-resources.html), które Android obsługuje dla zasobów, możesz równie dobrze używać stałych Javy. Stałabym, żeby były nieco szybsze, ponieważ mogą być zaznaczone przez kompilator i nie trzeba ich zawyżać. Jest to prawdopodobnie tylko mikrooptymalizacja, więc nie przejmowałbym się tym zbytnio, pod warunkiem, że nie wykonujesz żadnych operacji zapętlania w wątku UI, w którym ciągle nadymasz ciągi znaków lub tablice ciągów. –

+0

Jeśli chcesz opublikować swoją aplikację w językach różnicowych, wszystkie ciągi wyświetlane w interfejsie powinny znajdować się w pliku strings.xml. Resztę możesz uczynić statycznymi, jeśli chcesz. –

+1

Jeśli chodzi o "najlepsze praktyki", o które prosisz, nigdy nie koduj ciągów UI, nawet w małym, osobistym projekcie. Najlepiej unikać złych nawyków, które pewnego dnia spowodują, że twoi koledzy programiści wyleją sól do kawy, gdy będą musieli umiędzynarodowić swój kod. Nawet w kodzie niektóre ciągi powinny być zasobami, np. podczas przetwarzania danych wprowadzanych przez użytkownika, które mogą się różnić w zależności od ustawień narodowych. – MarsAtomic

Odpowiedz

33

W obu przypadkach istnieją zalety i wady (muszę powiedzieć zalety i mniej zalet).

jak w komentarzu na twoje pytanie, powiedzieli to wszystko. Chcę tylko dodać drobne punkty.

Lokalizacja:

Na pewno kwestii lokalizacji zasobów String jest najlepsza, jak można wykorzystać inny plik językowy dla differente Locale.

Pamięć:

Ponieważ zasoby tekstowe są zapisywane w pliku xml więc istnieje jakiś dodatkowy narzut (nie jest to poważny jeden chociaż)

Wydajność:

odczytu z pamięci jest zawsze szybszy niż czytanie z pliku. Chociaż w tym przypadku różnica nie jest znacząca wydajność

robót:

To tylko osobista opinia. Utrzymywanie pliku res jest łatwiejsze niż utrzymywanie łańcucha w klasie. string.xml jest dla mnie bardziej czytelny.

Wreszcie:

Więc moja propozycja jest

używaj sznurka zasoby dla tekstów, które będą widoczne dla użytkownika.

i

używać statycznych stałe dla wewnętrznych puposes swojego programu, takich jak bazy danych, nazw zmiennej wewnętrznej, zamiar nazwy filtru itp

+0

O ile mi wiadomo pliki xml są również kompilowane w pliku APK, więc nie sądzę, że istnieje jakiekolwiek przeciążenie. –

+0

Inną sprawą jest to, że łańcuch z XML może być użyty bezpośrednio w układach XML, tak nie jest w przypadku stałych. –

Powiązane problemy