Helper와 Utility 클래스의 차이점은 무엇입니까?
XHelper 또는 XUtils 클래스를 호출하는 방법을 결정하는 방법은 무엇입니까?
내 마음에 :
도우미 클래스 는 인스턴스화 할 수 있고 비즈니스 작업을 수행 할 수있는 클래스입니다.
Utils 클래스 는 일종의 인스턴스에 대해 작고 반복적 인 작업을 수행하는 정적 클래스입니다 (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, 덕트 테이프, 군용 칼, 접착제, 손전등 등)에서 작동 할 것으로 예상됩니다.
이것에 대한 궁극적 인 답은 없습니다. 하나의 명명 체계를 파악하고이를 고수하십시오. 패키지와 클래스의 이름을 지정하는 것은 소프트웨어 아키텍처의 중요한 부분이며 누구도 그 결정을 앗아 갈 수 없습니다.
개인적으로 XHelper를 더 좋아하지만 XUtils는 외래 코드에서 더 자주 봅니다.
또한 JDK와 Guava 에서 모두 찾을 수있는 "복수"명명 체계를 좋아합니다 .
클래스가 Collection
객체를 처리하는 경우Collections
배열> 배열 (jdk)
목록> 목록 (guava)
맵> 맵 (guava)
기타
Jesper가 말했듯이, 그것은 완전히 임의적 입니다. 조직에 적합한 것이 무엇인지 생각하고이를 관습으로 만들 수 있습니다.
저에게는 다음과 같습니다.
utils- 어디로 든 자유롭게 이동하고 가져올 수있는 정적 클래스입니다.
다른 모듈에서 유용 할 수있는 일반적인 작업을 수행합니다. Peter Lawrey가 말했듯이 더 구체적인 이름 이 유용합니다.
헬퍼 - 클래스 돕는 또 다른 클래스 나 모듈을.
Tasks that are only used in the module it's placed and won't make sense to be imported elsewhere. Hence the name could be more specific - ModuleNameHelper (e.g. AdministrationHelper, LoginHelper)
'developer tip' 카테고리의 다른 글
'스위프'기능 사용 방법 (0) | 2020.08.27 |
---|---|
Bootstrap 3이 box-sizing : border-box로 전환 한 이유는 무엇입니까? (0) | 2020.08.27 |
Amazon Elastic Search Cluster에 대한 적절한 액세스 정책 (0) | 2020.08.27 |
Android OpenGL ES 및 2D (0) | 2020.08.27 |
git rerere를 활성화하는 데 단점이 있습니까? (0) | 2020.08.27 |