закодировать строку против @string в Java - коде Андроид



Мне просто интересно, каковы преимущества / накладные расходы для использования @string, а не жестких строк кодирования в реальном коде Java... Например:



// To get the string resource:
getActivity.setTitle(getString(R.string.my_string));


Это лучшая практика для таких вещей, как заголовки панели действий, динамически создаваемый текст кнопки и т. д... Или я должен просто сделать это:



// Hardcoded string
getActivity.setTitle("My String");


Я знаю, что будет немного больше накладных расходов, делая это первым способом.. Просто не уверен, что это лучшая практика.

461   5  

5 ответов:

Если вы не знали о фактической точке наличия системы @string, пожалуйста, прочитайте документацию по локализации . Он позволяет легко находить текст в приложении, а затем переводить его.

Edit Спасибо Бегемоту, что прояснил ситуацию.

Использование нескольких строк одного и того же значения независимо от метода (Strings.xml vs programmatically), похоже, не имеет никаких связанных с этим накладных расходов. Согласно Oracle " все литеральные строки и строки-значения постоянные выражения интернируются", что означает, что объект используется повторно, а не создается заново, если вы используете его снова.

Не рекомендуется вставлять жесткие строки кода в файлы макета/ код. Вы должны добавить их в файл строковых ресурсов,а затем ссылаться на них из вашего макета.

Причины:

  • это позволяет обновлять каждое вхождение одного и того же слова во всех макетах одновременно, просто редактируя строки.XML-файл.
  • Он также чрезвычайно полезен для поддержки нескольких языков в виде отдельных строк.xml-файл может быть использован для каждого поддерживаемого язык.

Как сказано в документации :

Предположим, что язык вашего приложения по умолчанию-английский. Предполагать кроме того, вы хотите локализовать весь текст в вашем приложении, чтобы Французский, и большая часть текста в вашем приложении (все, кроме название приложения) на японский язык. В этом случае вы можете создать три альтернативных строки.xml-файлы, каждый из которых хранится в определенном языковом стандарте каталог ресурсов

Я думаю, что эти причины достаточно рекомендовать перейти на @String

Таким образом, у вас есть фиксированное место для изменения всех ваших строк в проекте. Допустим, вы использовали одну и ту же строку в 10 различных местах кода. Что, если вы решите изменить его? Вместо того, чтобы искать, где все это было использовано в проекте, вы просто меняете его один раз, и изменения отражаются везде в проекте.

Ну строки.xml должен быть проанализирован, не так ли? Тогда я полагаю, что жесткий код будет лучшим для производительности, хотя, вероятно, незаметен во время выполнения. Люди предпочитают использовать его, Хотя для того, чтобы иметь все строки в одном месте в случае, если есть планы по переводу приложения.

Есть много преимуществ для установки строк в строке.xml-файл; в двух словах, он позволяет использовать одну и ту же строку в нескольких местах, что хорошо, если вам каким-то образом потребуется изменить строку позже. Он также позволяет отображать один и тот же текст на разных языках; жесткое кодирование строки не дает вам всех этих возможностей.
Кстати, вам не нужно помещать каждый текст в строки.XML-файл; только те, которые могут быть использованы в нескольких местах приложения.
Общий правило для размещения строк в строках.xml-файл таков:

  • будет ли он использоваться в нескольких местах?
  • будет ли он использоваться на нескольких языках?
  • Будет ли она динамичной или статичной?
Я уверен, что есть и другие причины, но это те, которые я знаю.

Надеюсь, это поможет.

Comments

    Ничего не найдено.