закодировать строку против @string в Java - коде Андроид
Мне просто интересно, каковы преимущества / накладные расходы для использования @string, а не жестких строк кодирования в реальном коде Java... Например:
// To get the string resource:
getActivity.setTitle(getString(R.string.my_string));
Это лучшая практика для таких вещей, как заголовки панели действий, динамически создаваемый текст кнопки и т. д... Или я должен просто сделать это:
// Hardcoded string
getActivity.setTitle("My String");
Я знаю, что будет немного больше накладных расходов, делая это первым способом.. Просто не уверен, что это лучшая практика.
5 ответов:
Если вы не знали о фактической точке наличия системы
@string, пожалуйста, прочитайте документацию по локализации . Он позволяет легко находить текст в приложении, а затем переводить его.Edit Спасибо Бегемоту, что прояснил ситуацию.
Использование нескольких строк одного и того же значения независимо от метода (Strings.xml vs programmatically), похоже, не имеет никаких связанных с этим накладных расходов. Согласно Oracle " все литеральные строки и строки-значения постоянные выражения интернируются", что означает, что объект используется повторно, а не создается заново, если вы используете его снова.
Не рекомендуется вставлять жесткие строки кода в файлы макета/ код. Вы должны добавить их в файл строковых ресурсов,а затем ссылаться на них из вашего макета.
Причины:
- это позволяет обновлять каждое вхождение одного и того же слова во всех макетах одновременно, просто редактируя строки.XML-файл.
- Он также чрезвычайно полезен для поддержки нескольких языков в виде отдельных строк.xml-файл может быть использован для каждого поддерживаемого язык.
Предположим, что язык вашего приложения по умолчанию-английский. Предполагать кроме того, вы хотите локализовать весь текст в вашем приложении, чтобы Французский, и большая часть текста в вашем приложении (все, кроме название приложения) на японский язык. В этом случае вы можете создать три альтернативных строки.xml-файлы, каждый из которых хранится в определенном языковом стандарте каталог ресурсов
Я думаю, что эти причины достаточно рекомендовать перейти на @String
Таким образом, у вас есть фиксированное место для изменения всех ваших строк в проекте. Допустим, вы использовали одну и ту же строку в 10 различных местах кода. Что, если вы решите изменить его? Вместо того, чтобы искать, где все это было использовано в проекте, вы просто меняете его один раз, и изменения отражаются везде в проекте.
Ну строки.xml должен быть проанализирован, не так ли? Тогда я полагаю, что жесткий код будет лучшим для производительности, хотя, вероятно, незаметен во время выполнения. Люди предпочитают использовать его, Хотя для того, чтобы иметь все строки в одном месте в случае, если есть планы по переводу приложения.
Есть много преимуществ для установки строк в строке.xml-файл; в двух словах, он позволяет использовать одну и ту же строку в нескольких местах, что хорошо, если вам каким-то образом потребуется изменить строку позже. Он также позволяет отображать один и тот же текст на разных языках; жесткое кодирование строки не дает вам всех этих возможностей.
Кстати, вам не нужно помещать каждый текст в строки.XML-файл; только те, которые могут быть использованы в нескольких местах приложения.
Общий правило для размещения строк в строках.xml-файл таков:Я уверен, что есть и другие причины, но это те, которые я знаю.
- будет ли он использоваться в нескольких местах?
- будет ли он использоваться на нескольких языках?
Будет ли она динамичной или статичной?
Надеюсь, это поможет.
Comments