Util Method- static or non-static

smallcherry's techlog·2022년 12월 16일
0

배경

개발하다가 Util클래스를 만들 일이 생겼는데, 이전 회사에서 있던 프로젝트에서는 Util 메서드를 static으로 만들어 썼는데 우리 회사에서는 일반 클래스를 쓰고 있다는 것을 발견했다. 일반적으로 Util 메서드는 static으로 많이 만든다고 생각했던 나는, 이에 관한 간단한 리서치를 진행하였다.

리서치

내가 만드려고 했던 FileUtil 클래스의 메서드들을 만들 때 필드에 따로 저장하는 값이 없고 단순한 형태 변환, 서비스와 독립적인 기능 등등 정말 util기능만 해서 static메서드로 만들어서 쓰려고 했는데 (마치 Integer.parseInt()처럼!) 현회사의 프로젝트 util들 까보니까 다 일반 메서드(non-static)를 사용하고 있었다.

구글링해봤는데 일반적으로 Util클래스, 메서드 만들 때는 static을 많이 쓰기도 하는데 Spring 개발 시에는 이런 점들을 고려해 non-static으로 구성하기도 한다.

  1. Spring처럼 싱글톤으로 객체를 관리해주는 프레임워크에서는 static으로 만들지 않는다고 해서 여러가지 객체가 생기는 건 아니라, 일반 class로 만들어도 메모리 관리상 큰 차이가 없다.
  2. Mockito framework에서 Static Method에 대한 Mocking을 지원하지 않는다.

결론

Util클래스 내부 메서드도 non-static 으로 만들어서, 싱글톤 객체로 만들어서 메모리 낭비는 방지하고 테스트 코드도 짜기 좋게 하기도 한다!
그래서 새로 추가한 FileUtils 내부 메서드들도 그냥 non-static으로 짜기로 했다!!

Reference

Should a utility class be static?

profile
Java Developer

0개의 댓글