인프런 커뮤니티 질문&답변

김상형님의 프로필 이미지
김상형

작성한 질문수

Readable Code: 읽기 좋은 코드를 작성하는 사고법

객체 설계하기 (2)

정적 팩토리 메서드 of() 컨벤션

해결된 질문

작성

·

145

0

  • 학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!

  • 먼저 유사한 질문이 있었는지 검색해 보세요.

  • 서로 예의를 지키며 존중하는 문화를 만들어가요.

     

 
강의 중 정적 팩토리 메서드를 만드실 때 of()안의 파라미터가 없거나, 한 개 혹은 여러 개 일 때 모두 사용 하신 것 같아요

유명 기술 블로그를 보면 https://tecoble.techcourse.co.kr/post/2020-05-26-static-factory-method/
여러개의 파라미터를 통해 생성할 때 of를 쓰라고 되어있는데요, 이때 여러개 라는 말은 없거나, 한개 혹은 여러개 모든 경우를 포함하는 말 일까요?

실제로 List인터페이스의 경우에서도 구분하지 않고 전부 of를 사용해서 맞는 것 같긴 한데 위의 블로그 표현과는 약간 다른 것 같아서 질문드립니다

답변 2

2

박우빈님의 프로필 이미지
박우빈
지식공유자

안녕하세요, 김상형 님!

파라미터가 1개일 때 from(), 2개 이상일 때 of()를 사용하자는 뉘앙스는 제가 생각하기에 영어적 표현의 자연스러움 때문이라고 생각합니다.
그렇다고 반대로 파라미터가 0개, 1개일 때 of()를 쓰면 안 된다, 라는 의견에는 동의하지 않아요.

파라미터의 수에 따라 이름을 달리 하는 것보다, 이름을 통해 의도를 드러내는 데에 초점을 맞추는 것이 가장 중요하다고 생각합니다.
저는 그래서 보통 인스턴스 생성의 의미를 나타내는 정적 팩토리 메서드는 of(), create() 등을 많이 사용하고 있어요 ㅎㅎ

도움이 되셨기를 바랍니다.
감사합니다. 🙂

김상형님의 프로필 이미지
김상형
질문자

답변 감사합니다..!!

1

안녕하세요, 인프런 AI 인턴입니다.

김상형님께서 정적 팩토리 메서드의 of() 메서드 컨벤션에 대해 궁금해 하시는군요. 이에 대해 답변드릴 수 있는 유사한 질문과 그 답변들을 소개합니다.

  1. 정적 팩터리 메서드 사용 기준

    • 정적 팩터리 메서드는 생성의 의미를 명확히 전달할 수 있으며, 여러 파라미터 세트를 통해 역할에 맞게 인스턴스를 생성할 수 있는 장점이 있습니다. 생성자보다 인스턴스 생성의 유연성을 높일 수 있습니다.
  2. 팩토리 메서드를 지양하고 생성자 혹은 Builder 패턴을 쓰라는 말씀에 관하여

    • 팩토리 메서드는 객체 생성과 관련된 로직을 캡슐화할 수 있어 테스트 독립성을 보장할 수 있습니다. 생성자의 파라미터가 많아 실수할 확률이 있는 경우에도 유용합니다.
  3. static 사용 기준이 궁금합니다

    • 정적 메서드는 가독성을 높이면서도 객체의 생성 로직을 명확하게 정의할 수 있습니다. 특히, 객체를 캐싱하거나 객체 생성 로직을 감추는 데 유용합니다.

정적 팩토리 메서드의 of() 메서드는 의미상 인스턴스를 생성하는 역할을 명확하게 표현하는 메서드입니다. 여러 파라미터를 받아 객체를 생성하는 경우뿐만 아니라, 파라미터가 없거나 한 개인 경우에도 of() 메서드를 사용하는 것은 일반적인 컨벤션입니다. 예를 들어, List.of() 메서드는 다양한 파라미터 개수에 따라 리스트를 생성할 수 있어, 이러한 적용이 유효합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김상형님의 프로필 이미지
김상형

작성한 질문수

질문하기