더북(TheBook)

어떤 작업이 정적 메서드가 될 수 있는지 여부를 판단하는 또 다른 방법은 그 작업이 얼마나 순수(pure)한지 확인하는 것이다. 문자열을 받아 그 안의 쉼표 개수를 반환하는 간단한 유틸리티 메서드가 순수한 작업의 예다. 이런 메서드는 많은 다른 클래스에 의존하지 않으며, 더 중요한 것은 외부 리소스에도 의존하지 않는다는 점이다. 순수 함수를 정적 메서드로 사용하는 것은 대부분 괜찮다. 프로덕션이나 테스트 중에 이를 교체해야 할 일이 거의 없기 때문이다.

반대로 앞에서 본 서비스 클래스의 메서드들은 순수하지 않은(impure) 함수다. 이런 메서드는 시스템 상태를 변경( 새로운 정보를 데이터베이스에 영속화하는 등)하며, 입력이 같아도 다른 결과를 낼 수 있다. 이런 클래스나 작업을 정적 메서드로 작성하면 안 된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.