我想知道在Android代码中使用java文件中定义的字符串有什么缺点.
我喜欢使用普通的旧Java字符串来处理不可见的字符串,例如我正在解析的XML文档中的名称,或者bundle的键.将所有这些内容保存在使用它们的java文件中而不是将它们移动到XML文件中并使代码更复杂似乎是个好主意.
然而,我看到许多Android代码示例似乎将每个字符串放入资源文件中.
在java文件中使用字符串有什么问题?人们不这样做的原因是什么?我一直在我的应用程序中这样做,到目前为止还没有看到任何问题.
请注意,我知道XML文件对于需要翻译的内容非常有意义.这个问题适用于字符串保持不变的情况.
让我试着让这个问题更清楚:
有什么理由除外:
>因为它是标准/最佳实践等 – 我的问题基本上是:为什么它是最佳实践,仅仅因为i8n,还是有其他原因?
>因为它允许您使用资源框架进行翻译,依赖于设备的字符串等.
>因为它允许您使用非ASCII字符.
例如.如果你想在5个不同的文件中使用“Ok”改为“确认”,你必须在所有这5个文件中进行更改,但对于String资源,你只需要更新一个string.xml文件.
编辑
请在下面找到我们应该使用String.xml的一些原因
1)更新对多次出现的单个引用.根据@treesAreEverywhere它可以使用公共静态字符串完成,但它将在应用程序启动时占用内存,直到应用程序关闭.但是在String.xml中编写的String将在使用时加载.
2)多语言支持.您可以创建多语言资源文件夹以支持您的多语言应用程序,因此使用Locale更改的语言将由OS在运行时根据语言资源文件夹动态维护.
3)请查看Localization文档,其中提供了有关使用string.xml的更多信息
4)字符串不会使应用程序代码混乱,使其清晰易用.
这是一种像其他任何语言一样的编码标准.但是如果需要,可以忽略它,并且可以在代码中使用公共静态字符串变量创建代码.使用string.xml不是必须的,但它是一个很好的编码实践来使用它.良好的做法,例如用括号括起单个语句来关闭if块而不是保持原样.
if(condition){statement;而不是if(condition)语句;