是否建议使用StringUtils.EMPTY?

时间:2010-11-04 09:59:46

标签: java apache-commons

您使用StringUtils.EMPTY代替""吗?

我的意思是作为返回值或者设置String变量的值。我不是要进行比较,因为我们使用StringUtils.isEmpty()

12 个答案:

答案 0 :(得分:96)

当然不是。 你真的认为“”不够清楚吗?

常量基本上有3个用例:

  1. 记录值的含义(使用常量名称+ javadoc)
  2. 以常用值同步客户端。
  3. 提供特殊值的快捷方式以避免某些初始化费用
  4. 此处不适用。

答案 1 :(得分:49)

我使用StringUtils.EMPTY来隐藏文字并且还表示return StringUtils.EMPTY完全被预期,并且应该返回一个空字符串,""可以导致假设{{1}可以很容易地变成别的东西,这可能只是一个错误。我认为""更具表现力。

答案 2 :(得分:24)

不,只需使用""

文字""清晰可见。什么意思没有误解。我不知道为什么你需要一个类常量。我只能假设在包含StringUtils而不是""的整个包中使用此常量。但这并不意味着你应该使用它。

如果人行道上有岩石,你不必扔掉它。

答案 3 :(得分:10)

我会在这里加上我的两分钱,因为我看不到有人在谈论String interning和类初始化:

  • Java源代码中的所有String个文字都被实习,使任何 ""StringUtils.EMPTY 相同的对象
  • 使用StringUtils.EMPTY 可以初始化StringUtils类,因为只有在未声明EMPTY时才会访问其静态成员final (JLS特定于此点)

请参阅related answer on String interningClass initialization,参考JLS 12.4.1

答案 4 :(得分:10)

我很惊讶有多少人乐于盲目地认为“”确实是一个空字符串,并且(不小心?)包含任何Unicode的精彩不可见和非间距字符。为了所有善良和体面的爱,尽可能使用EMPTY。

答案 5 :(得分:8)

我真的不想使用它,因为return "";return StringUtils.EMPTY短。

但是,使用它的一个 false 优势是,如果键入return " ";而不是return "";,则可能会遇到不同的行为(关于如果正确测试空字符串)或不)。

答案 6 :(得分:4)

如果你的班级没有使用其他任何来自公共场所的东西,那么仅仅因为这个神奇的价值而具有这种依赖性是很可惜的。

StringUtils的设计者大量使用这个常量,这是正确的做法,但这并不意味着你也应该使用它。

答案 7 :(得分:1)

不,因为我还有更多要写的东西。 empty String是独立于平台的(在Java中)。

File.separator优于“/”或“\”。

但随心所欲。你不能得到像return " ";

这样的拼写错误

答案 8 :(得分:1)

老实说,我也没有看到太多的用处。如果你想比较一个空字符串,只需使用StringUtils.isNotEmpty(..)

答案 9 :(得分:1)

我发现StringUtils.EMPTY在某些情况下对于易读性非常有用。特别是:

  1. 三元运算符,例如。

    item.getId() != null ? item.getId() : StringUtils.EMPTY;
    
  2. 从方法中返回空字符串,以确认是的我真的想这样做。
  3. 同样通过使用常量,可以创建对StringUtils.EMPTY的引用。否则,如果每次JVM必须检查字符串池中是否存在字符串文字"",那么它就会尝试实例化它(它可能会存在,因此不会产生额外的实例创建开销)。当然使用StringUtils.EMPTY可以避免检查字符串池吗?

答案 10 :(得分:0)

是的,这很有道理。 这可能不是唯一的方法,但我说这种“没有道理”的方式很少。

我认为:

  • 它比“”更突出。
  • 它说明您的意思是空的,而空白可能不会。
  • 如果您未定义自己的变量并在多个位置使用它,那么仍然需要在各处进行更改。
  • 如果您在代码中不允许使用免费的字符串文字,那么这会有所帮助。

答案 11 :(得分:0)

我建议将此常量用作健壮代码的基本组成部分之一,以降低在为变量分配空字符串时偶然出现不可见字符潜入的风险。

如果您的团队中有来自世界各地的人员,也许其中一些人经验不足,那么在代码中坚持使用此常量可能是个好主意。

周围有许多不同的语言,人们在计算机上使用自己的本地字母设置。有时他们只是忘记在编码时切换回去,而在使用退格键切换和删除后,文本编辑器会在“”中留下一些垃圾。使用echo 3 > /proc/sys/vm/drop_caches 可以消除这种风险。

但是,这不会对代码的性能或代码的可读性产生任何重大影响。此外,它不能解决您可能遇到的一些基本问题,因此完全取决于您是否将使用此常数的明智判断。