포스트

2024-07-01-TIL

2024-07-01-TIL

Today I Learned

Helper Class vs Utility Class

  • https://www.baeldung.com/java-helper-vs-utility-classes
  • https://naveen-metta.medium.com/java-helper-vs-utility-classes-a-comprehensive-guide-f0be3d863699

둘 다 반복되는 작업을 한곳에 모은다는 점은 같지만, 인스턴스를 만들 수 있느냐와 쓰이는 범위가 다르다.

헬퍼 클래스는 다른 클래스를 돕는 기능을 모은 클래스다. 앱의 핵심 목적은 아니지만 여러 클래스에서 반복되는 작업을 맡는다. 인스턴스를 만들 수 있고, 인스턴스 변수와 인스턴스 메서드, static 메서드를 함께 가질 수 있다. Baeldung 예시는 클래스에 기본 접근 제어자(package-private)를 써서 같은 패키지 안의 클래스만 쓰게 한다. 생성자로 할인율을 받아 두고 할인 가격을 계산하는 식으로, 상태를 가진 도우미가 될 수 있다.

유틸리티 클래스는 애플리케이션 전체에서 쓰는 static 메서드만 모은 클래스다. 인스턴스를 만들 수 없게 클래스를 final로 선언하고, 모든 메서드를 static으로 두고, private 생성자를 넣는다. private 생성자를 하나라도 선언하면 컴파일러가 기본 생성자를 만들지 않으므로 바깥에서 new로 만들 수 없다. JDK의 java.util.Arrays, java.lang.Math, java.util.Collections가 대표적인 예다.

1
2
3
4
5
6
7
8
9
public final class StringUtils {

    private StringUtils() {
    }

    public static boolean isBlank(String value) {
        return value == null || value.isBlank();
    }
}

정리하면 상태 없이 입력만으로 결과가 정해지는 범용 함수는 유틸리티 클래스로, 특정 기능 영역에서만 쓰이고 설정값 같은 상태가 필요한 도우미는 헬퍼 클래스로 두는 것이 자연스럽다. 다만 유틸리티 클래스에 도메인 규칙까지 쌓이기 시작하면, 그 로직이 원래 있어야 할 도메인 객체를 다시 찾아보는 신호로 보는 편이 좋겠다.


AI 키워드: Gemma 2

Google이 6월 27일 오픈 모델 Gemma 2를 연구자와 개발자에게 공개했다. 9B와 27B 두 크기로 나왔고, 27B 모델은 단일 TPU 호스트나 NVIDIA A100 80GB, H100 GPU 한 장에서 full precision으로 추론할 수 있게 설계했다고 한다. 게이밍 노트북부터 클라우드까지 다양한 하드웨어에서 빠르게 돌아간다는 점도 내세웠다. 큰 상용 모델만 있는 것이 아니라, 직접 내려받아 돌릴 수 있는 모델 계열도 같이 키우고 있다는 말이구나.

참고한 자료외부 출처 2

외부 출처

이 글은 저작권자의 CC BY 4.0 라이선스를 따릅니다.

댓글

아직 댓글이 없습니다