什么是“打字”,为什么不好?

时间:2010-11-26 19:51:42

标签: java string

我的老板一直在使用“字符串抨击”这个词(我们是一家Java商店),每当我问他什么的时候(通常我都应该知道它),通常会为我做出一个例子。我用谷歌搜索这个词只是为了找到与理论物理和弦理论有关的结果。

我猜它与使用String / StringBuilders错误或不符合最佳实践有关,但对于我的生活,我无法弄清楚它是什么。

6 个答案:

答案 0 :(得分:4)

“String bashing”是一个用于剪切字符串并对其进行操作的俚语:拆分,连接,插入,标记,解析等。

它本身并不坏(尽管有“抨击”的内涵),但正如你所指出的,在Java中,当StringBuilder更有效时,需要注意不要使用String。

答案 1 :(得分:2)

为什么不问你的老板一个字符串抨击的例子。 不要忘记问他正确的重构他给你的例子的方法。

答案 2 :(得分:1)

脱离背景,“字符串抨击”本身并没有任何意义。任何好的或坏的行为都不是一个流行词。它只是意味着“抨击字符串”,就像使用字符串操作一样。

这是好还是坏取决于你在做什么,而字符串的作用并不重要。处理任何类型的数据有好的和坏的方式。

有时候“抨击字符串”实际上是最好的解决方案。例如,考虑您要挑选字符串的前三个字符。您可以创建一个隔离字符的正则表达式,但这肯定会有点过分,因为有一个简单的字符串操作可以做同样的事情,这样可以更快,更容易维护。

答案 3 :(得分:1)

Effective Java有一个关于使用字符串的项目:“第50项:避免使用其他类型更合适的字符串”。同样在stackoverflow上:“Stringly typed”。

答案 4 :(得分:0)

一个猜测:它可能意味着与创建不必要的临时对象有关的东西,在这个特殊情况下,字符串。例如,如果您正在通过令牌构造String令牌,那么使用StringBuilder通常是个好主意。如果未使用构建器构建String,则每个串联都将导致创建另一个临时对象(以后再进行垃圾回收)。

在现代虚拟机中(我正在考虑HotSpot 1.5或1.6),除非你处于性能关键代码或者你正在构建长字符串,例如,这几乎不是问题。在for循环中。

只有猜测;可能更好问他或她的意思?我以前从未听过这个词。

答案 5 :(得分:0)

谷歌上有一些结果,在这种情况下引用字符串抨击。它们似乎并不是指对无效的临时工和使用StringBuilder的关注。

相反,它似乎指的是简单的字符串解析。即做一些事情,如检查子串,切片,等等。特别是,它似乎暗示它是一个hacky解决问题的方法。

可能看起来很糟糕,因为您应该使用真正的解析或以非字符串格式获取数据。