[java] Helper와 Utility 클래스의 차이점은 무엇입니까?

XHelper 또는 XUtils 클래스를 호출하는 방법을 결정하는 방법은 무엇입니까?

내 마음에 :

도우미 클래스 는 인스턴스화 할 수 있고 비즈니스 작업을 수행 할 수있는 클래스입니다.

Utils class 는 일종의 인스턴스에 대해 작고 반복적 인 작업을 수행하는 정적 클래스입니다 (Apache의 유틸리티 클래스 ArrayUtils 또는 IOUtils의 예).



답변

사용할 이름 지정 스타일이 많이 있습니다. 더 일반적이기 때문에 Utils를 제안합니다.

Utility 클래스는 정적 메서드 만 있고 상태 비 저장으로 이해됩니다. 그러한 클래스의 인스턴스를 만들지 않습니다.

도우미는 유틸리티 클래스이거나 상태 저장이거나 인스턴스 생성을 요구할 수 있습니다. 가능하면 이것을 피할 것입니다.

이름을 더 구체적으로 만들 수 있다면. 예를 들어 정렬 방법이 있으면 XSorter로 만듭니다.

배열의 경우 다음과 같은 도우미 클래스를 찾을 수 있습니다.

Array
Arrays
ArrayUtil
ArrayUtils
ArrayHelper

BTW 유틸리티 클래스의 약어는 인스턴스가없는 열거 형입니다.

enum XUtils {;
    static methods here
}

인터페이스를 구현해야하는 경우 Stateless Singleton을 사용합니다.

enum XHelper implements RequiredInterface {
   INSTANCE;
   // no instance fields.
}


답변

일반적으로? 그것은 완전히 임의적입니다. 이것에 대한 규칙은 없습니다.


답변

유틸리티는 일반적으로 사용되는 “리프 노드”클래스입니다. 즉, 프로젝트에 대한 종속성이 없으며 중단되거나 쓸모 없게되지 않고 프로젝트간에 이식 될 수 있습니다. 예 : Vector3, RandomNumberGenerator, StringMatcher, 등 …

“도우미”는 다른 클래스를 돕기위한 디자인을 가진 클래스로 보입니다. 프로젝트에 따라 다를 수도 있고 그렇지 않을 수도 있습니다. GameNetworkClient클래스를 만드는 경우 GameNetworkConnection클래스가 ‘도움’ 이라고 말할 수 GameNetworkClient있습니다..

개발자가 도구를 언급하는 방식은 이러한 단어의 일반적인 사용을 반영합니다. “유용함”대 “유용함”으로 설명 된 보청기 도구를 기억할 수 있다면 유용한 도구가 약간의 맥락을 갖는 경향이 있습니다 (치즈 강판은 치즈를 갈는 데 도움이되고 옥수수 스트리퍼는 옥수수를 벗기는 데 도움이되며 스피드 로더는 총기를 재장 전하는 데 도움이됩니다). “유틸리티”는 다양한 상황 (WD-40, 덕트 테이프, 군용 칼, 접착제, 손전등 등)에서 작동 할 것으로 예상됩니다.


답변

Jesper가 말했듯이, 그것은 완전히 임의적 입니다. 조직에 적합한 것이 무엇인지 생각하고이를 관습으로 만들 수 있습니다.

저에게는 다음과 같습니다.

utils- 어디로 든 자유롭게 이동하고 가져올 수있는 정적 클래스입니다.

다른 모듈에서 유용 할 수있는 일반적인 작업을 수행합니다. Peter Lawrey가 말했듯이 더 구체적인 이름 이 유용합니다.

헬퍼 – 클래스 돕는 또 다른 클래스 나 모듈을.

배치 된 모듈에서만 사용되며 다른 곳에서 가져 오는 것은 의미가 없습니다. 따라서 이름은 더 구체적 일 수 있습니다. ModuleName Helper (예 : AdministrationHelper , LoginHelper )


답변

이것에 대한 궁극적 인 답은 없습니다. 하나의 명명 체계를 파악하고이를 고수하십시오. 패키지와 클래스의 이름을 지정하는 것은 소프트웨어 아키텍처의 중요한 부분이며 누구도 그 결정을 앗아 갈 수 없습니다.

개인적으로 XHelper를 더 좋아하지만 XUtils는 외래 코드에서 더 자주 봅니다.

또한 JDK와 Guava 에서 모두 찾을 수있는 “복수”명명 체계를 좋아합니다 .

클래스가 Collection객체를 처리하는 경우Collections

배열> 배열 (jdk)
목록> 목록 (guava)
맵> 맵 (guava)

기타


답변