inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

변수와 메서드의 나열 순서

정적 팩토리 메서드의 위치는 어딜까요?

212

PrivilegeEscalate

작성한 질문수 27

1

안녕하세요 강사님. 강의 잘듣고있습니다. 다름이 아니라 정적 팩토리 메서드는 어디쯤 위치하느게 좋을까요?

 

우테코 컨벤션이나, 구글 컨벤션을 보면, public, private, ... static.. etc.. 순으로 정의하라고 나와있는데요

 

생성자에 의미를 부여하는 팩토리 메서드 public static 은 어디쯤 두는게 좋을까요? 컨벤션상으로는 하단이 맞는데.. 저는 개인적으로 생성자 바로 밑에 둬야할 것 같아요.

 

강사님 의견은 어떠실까요?

객체지향 리팩토링 클린코드-기획전

답변 2

0

박우빈

안녕하세요, PrivilegaEscalate 님!

저도 생성자 하단에 배치하는 것을 선호합니다.
생성에 대한 책임을 모아놓는 의미도 있고, 저는 public static도 결국 공개 메서드라 같은 public 메서드 내에서 static 끼리 군집을 이루어야 한다고 생각해요.

감사합니다. 🙂

0

PrivilegeEscalate

감사합니다. 많은 도움 받고있습니다. 앞으로도 양질의 강의 부탁드리겠습니다!

0

인프런 AI 인턴

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

PrivilegeEscalate님께서 정적 팩토리 메서드의 위치에 대해 고민하고 계시군요. 객체지향 설계 및 코딩 스타일에서 정적 팩토리 메서드의 위치는 일정 부분 개발자의 미학과 컨벤션에 따라 다르게 취급될 수 있습니다.

정적 팩토리 메서드는 일반적으로 클래스 상단에, 생성자 바로 아래에 위치하는 것이 관례처럼 사용되곤 합니다. 이유는 생성자와 유사한 역할을 하기에 팩토리 메서드와 생성자를 가까운 위치에 둠으로써, 코드 가독성을 높이려는 목적입니다.

반면 우테코나 구글의 컨벤션에 따라 정적 메서드를 클래스 하단에 배치하는 방식도 존재합니다. 이러한 경우엔 정적 메서드가 클래스의 다른 동작과 분리되어 있음을 강조하는 장점이 있습니다.

양쪽 스타일 모두 장단이 존재하며, 팀 차원에서 협의된 코딩 스타일을 따르는 것이 가장 이상적입니다. 강사님이나 강의에서 사용하는 스타일을 참고하거나, 팀 내에서 코딩 컨벤션을 확정해 일관성있게 정하는 것을 권장드립니다.

아래와 유사한 질문들을 통해 정적 팩토리 메서드에 대한 이해를 높이실 수 있습니다:

  1. 정적 팩터리 메서드 사용 기준
  2. 팩토리 메서드를 지양하고 생성자 혹은 Builder 패턴을 쓰라는 말씀에 관하여
  3. static 사용 기준이 궁금합니다

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

0

PrivilegeEscalate

AI 답변 굉장히 빠르군요..

[강의 질문] 메서드 선언부

0

90

1

[강의 질문] 메서드와 추상화

0

61

2

DIP 개념에 대한 질문입니다.

0

64

1

만약 보드를 이용한 게임의 종류가 더 다양해진다면 어떻게 될 수 있을지에 대한 고민

0

86

2

DIP 설명 후반부에 IOC에 대한 질문 드립니다.

0

80

2

안녕하세요 ! 혹시 자바가 아닌 다른 객체지향 언어를 알고있어도 강의를 들어도 괜찮을까요 ?!

0

71

1

안녕하세요 메서드명 때문에 고민이 있어서 질문드립니다.

1

64

2

자바 record 사용에 대해서 질문 드립니다!

0

128

2

강의 내용 정리 및 자료 제작 툴 문의 드립니다.

0

136

2

사용할 변수 가깝게 선언하기 질문

0

93

1

오버 엔지니어링

0

150

2

학습용 java/spring 오픈소스 추천

1

368

2

중복된 메서드 줄이는 방법

0

184

2

MarketPlace에서 Sonarlint 검색이 안됩니다.

0

417

3

isLandMineCell() 메서드 질문

0

209

1

Cell[][]BOARD 매개변수받기

0

153

2

ConsoleInputHandler에서 왜 final붙여야 하는지

0

194

1

정적 생성자 메서드 of, from

0

265

2

Getter관해서

0

148

3

이름 바꾸기

0

129

2

stack 대신 queue 를 사용해 bfs 로 변경해도 되나요??

0

164

2

현업에서 ISP를 도입하려는데 인터페이스 설계에 있어서 의문이 있습니다.

0

208

2

null을 가질 수 있는 값을 인자로 넘겨야 하는 경우

0

253

3

리팩토링을 하고 난 뒤 다시보면 오히려 더 복잡해 보이는것 같은 느낌입니다..

0

255

2