[java] StringUtils.EMPTY를 권장합니까?

StringUtils.EMPTY대신 사용 ""합니까?

반환 값으로 또는 String 변수의 값을 설정하는 경우를 의미합니다. 비교를 의미하지는 않습니다.StringUtils.isEmpty()



답변

당연히 아니지. 정말로 “”가 충분히 명확하지 않다고 생각하십니까?

상수에는 기본적으로 3 가지 사용 사례가 있습니다.

  1. 값의 의미 문서화 (상수 이름 + javadoc 사용)
  2. 공통 값으로 클라이언트를 동기화합니다.
  3. 일부 초기화 비용을 피하기 위해 특별한 값에 대한 단축키를 제공하십시오.

여기에는 적용되지 않습니다.


답변

나는 StringUtils.EMPTY리터럴을 숨기고 return StringUtils.EMPTY완전히 예상했던 것을 표현 하고 빈 문자열을 반환해야 한다는 것을 표현 ""하기 위해를 사용하면 ""쉽게 다른 것으로 변경 될 수 있고 이것은 아마도 실수 일 수 있다는 가정으로 이어질 수 있습니다. EMPTY더 표현력이 있다고 생각합니다 .


답변

아니요, "".

문자 ""는 수정처럼 분명합니다. 의미에 대한 오해가 없습니다. 나는 당신이 왜 그것을 위해 클래스 상수가 필요한지 모르겠습니다. StringUtils대신 이 상수가 포함 된 패키지 전체에서 사용된다고 가정 할 수 있습니다 "". 그렇다고해서 사용해야한다는 의미는 아닙니다.

보도에 바위가 있으면 던질 필요가 없습니다.


답변

얼마나 많은 사람들이 “”가 실제로 빈 문자열이고 유니 코드의 눈에 띄지 않고 공백이없는 멋진 문자를 포함하지 않는다고 맹목적으로 가정하는 것에 대해 놀랐습니다. 선하고 품위있는 모든 것에 대한 사랑을 위해 가능할 때마다 EMPTY를 사용하십시오.


답변

String인턴 과 클래스 초기화에 대해 얘기하는 사람이 아무도 없기 때문에 여기에 2 센트를 추가하겠습니다 .

  • 모든 String자바 소스에서 리터럴은 구금하고 있습니다 어떤 ""같은 객체StringUtils.EMPTY
  • 을 사용하면 클래스 가 선언되지 않은 경우에만 정적 멤버에 액세스하므로 클래스 StringUtils.EMPTY 초기화 할 수 있습니다 (JLS는 해당 지점에서 특정적임). 그러나 이며 이 클래스를 초기화하지 않도록, 마지막.StringUtilsEMPTY finalorg.apache.commons.lang3.StringUtils.EMPTY

JLS 12.4.1을 참조하여 String interningClass 초기화 대한 관련 답변을 참조하십시오 .


답변

. return "";보다 짧기 때문에 나는 그것을 사용하고 싶지 않습니다 return StringUtils.EMPTY.

그러나 이것을 사용하는 한 가지 잘못된 이점은 return " ";대신 입력 return "";하면 다른 동작이 발생할 수 있다는 것입니다 (빈 문자열을 올바르게 테스트하는지 여부와 관련하여).


답변

당신의 클래스가 커먼즈의 다른 것을 사용하지 않는다면,이 마법의 가치를 위해이 의존성을 갖는 것은 유감입니다.

StringUtils의 디자이너는이 상수를 많이 사용하며 이것이 올바른 일이지만 그렇다고해서 반드시 사용해야한다는 의미는 아닙니다.