提取大量String文字是一个好主意吗?

阿图尔

在我处理的遗留代码库中,有大量的字符串文字。其中很多是重复的。例如,在500个地方使用字符串“ userID”。可能有一千个这样的文字被重复使用。IntelliJ Idea静态代码分析建议我将其提取为常量。如果IDE为我自动执行此重构,而无需我输入一行代码,我应该这样做吗?

通常,将许多重复的字符串文字提取为常量是个好主意吗?显然,这将避免重复,将提供单点访问,声明等。

但是,其中一些文字会在访问时出现。如果我将所有文字声明为常量(静态最终),则所有这些文字将一起加载。在这种情况下,将所有这些文字声明为常量是一个好主意吗?在这种情况下,您能否提供一些指向垃圾回收和内存空间预防措施的指针?在这种情况下使用的最佳做法是什么?

一些注意事项:我知道字符串文字是固定的。因此,我认为在最坏的情况下我不会节省任何内存。而且似乎jdk 7会将这些字符串放在堆中,而不是在permgen上。我看到了夫妻 问题,像我,但觉得这是不同的。所以在这里发布。

谢谢

失落的心灵
  1. 所有字符串文字都将自动嵌入从JDK7 +,他们将GCed上课的时候(实际上是其加载的类加载器定义他们得到GCed定义字符串常量)(没有提供其他类是指它(虽然这种情况很少见。)。让它们staticfinal和从节省内存的角度来看,将它们放入一个普通的类确实是没有用的,但是从设计的角度来看却很有用,因为它将提供单点访问。

  2. 相同的字符串字面量在JVM在所有课程中共享。因此,将没有新的字符串。实际上,将它们放在一个类中并从该位置访问它们可以使您的代码更结构化/更易读。

我的建议是,不要修改遗留代码,除非有很大的不同。权衡是您的选择。:P

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用提取方法重构,这总是一个好主意吗?

来自分类Dev

组合实例VBO是一个好主意吗?

来自分类Dev

一个好主意是为此使用复合模式吗?

来自分类Dev

使用NTFS压缩是一个好主意吗?

来自分类Dev

绑定PasswordBox密码不是一个好主意吗?

来自分类Dev

组合实例VBO是一个好主意吗?

来自分类Dev

别名cd推送-这是一个好主意吗?

来自分类Dev

一个好主意是为此使用复合模式吗?

来自分类Dev

用提取方法重构,是否总是一个好主意?

来自分类Dev

一起使用HtmlCleaner和Jsoup是一个好主意吗?

来自分类Dev

用薄的Cache层覆盖jQuery的$ .ajax是一个好主意吗?

来自分类Dev

为文本标签创建CSS类不是一个好主意吗?

来自分类Dev

Javascript-在闭包内使用函数构造函数不是一个好主意吗?

来自分类Dev

contextlib.redirect_stdout总是一个好主意吗?

来自分类Dev

git rebase-压缩初始提交通常不是一个好主意吗?

来自分类Dev

什么是MongoDB的严格模式,使用它是一个好主意吗?

来自分类Dev

在HttpContext.Current上发送覆盖响应不是一个好主意吗?

来自分类Dev

片段将所有导航控件委托给Activity是一个好主意吗?

来自分类Dev

将Any用作Union类型是一个好主意吗?

来自分类Dev

由heroku上的node.js服务的静态文件-这是一个好主意吗?

来自分类Dev

使用boost :: program_options解析文本文件是一个好主意吗?

来自分类Dev

使用hgignore忽略* .orig文件不是一个好主意吗?

来自分类Dev

捕获TaskCanceledException并检查Task.Canceled是一个好主意吗?

来自分类Dev

在静态文件上分块使用Transfer-Encoding:是一个好主意吗?

来自分类Dev

使用宏在C中实现通用向量。这是一个好主意吗?

来自分类Dev

临时扩展Java中的现有对象-这是一个好主意吗?

来自分类Dev

在Web应用程序中使用反射是一个好主意吗?

来自分类Dev

全局公开Vulkan的函数指针是一个好主意吗?

来自分类Dev

为了可移植性,在游戏引擎的API上构建API是一个好主意吗?

Related 相关文章

  1. 1

    用提取方法重构,这总是一个好主意吗?

  2. 2

    组合实例VBO是一个好主意吗?

  3. 3

    一个好主意是为此使用复合模式吗?

  4. 4

    使用NTFS压缩是一个好主意吗?

  5. 5

    绑定PasswordBox密码不是一个好主意吗?

  6. 6

    组合实例VBO是一个好主意吗?

  7. 7

    别名cd推送-这是一个好主意吗?

  8. 8

    一个好主意是为此使用复合模式吗?

  9. 9

    用提取方法重构,是否总是一个好主意?

  10. 10

    一起使用HtmlCleaner和Jsoup是一个好主意吗?

  11. 11

    用薄的Cache层覆盖jQuery的$ .ajax是一个好主意吗?

  12. 12

    为文本标签创建CSS类不是一个好主意吗?

  13. 13

    Javascript-在闭包内使用函数构造函数不是一个好主意吗?

  14. 14

    contextlib.redirect_stdout总是一个好主意吗?

  15. 15

    git rebase-压缩初始提交通常不是一个好主意吗?

  16. 16

    什么是MongoDB的严格模式,使用它是一个好主意吗?

  17. 17

    在HttpContext.Current上发送覆盖响应不是一个好主意吗?

  18. 18

    片段将所有导航控件委托给Activity是一个好主意吗?

  19. 19

    将Any用作Union类型是一个好主意吗?

  20. 20

    由heroku上的node.js服务的静态文件-这是一个好主意吗?

  21. 21

    使用boost :: program_options解析文本文件是一个好主意吗?

  22. 22

    使用hgignore忽略* .orig文件不是一个好主意吗?

  23. 23

    捕获TaskCanceledException并检查Task.Canceled是一个好主意吗?

  24. 24

    在静态文件上分块使用Transfer-Encoding:是一个好主意吗?

  25. 25

    使用宏在C中实现通用向量。这是一个好主意吗?

  26. 26

    临时扩展Java中的现有对象-这是一个好主意吗?

  27. 27

    在Web应用程序中使用反射是一个好主意吗?

  28. 28

    全局公开Vulkan的函数指针是一个好主意吗?

  29. 29

    为了可移植性,在游戏引擎的API上构建API是一个好主意吗?

热门标签

归档