강의

멘토링

로드맵

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

강낭콩님의 프로필 이미지
강낭콩

작성한 질문수

코딩으로 학습하는 리팩토링

리팩토링 9. 객체 통째로 넘기기

파라미터와 이들을 가진 클래스

작성

·

233

0

안녕하세요 기선님! 강의 항상 잘 듣고 있습니다. 오늘 궁금한 점은 파라미터 수를 줄이기 위해 해당 파라미터를 갖고 있는 다른 클래스를 의존해도 되는가 입니다

제가 작성한 코드 중 A  메소드에서 여러개의 파라미터를 받는데, 그 파라미터들이 한 엔티티 클래스의 필드들입니다. 그리고 이 A 메소드에서 사용되는 파라미터들이 또 다른 메소드들에서도 공통적으로 사용되고 있는 상황입니다.

그래서 저는 이 공통적으로 사용되는 파라미터를 가진 DTO 클래스를 만든 후 이 클래스에 해당 엔티티를 받는 팩토리 메소드를 만들어서 A를 비롯한 여러 메소드의 파라미터를 DTO 하나로 줄이는 리팩토링을 진행했습니다.

하지만 해당 엔티티 클래스는 필드가 10개가 넘고, 고작 이 엔티티의 필드 몇개를 사용하기 위해 의존하는 것은 다소 무거운 게 아닌가라는 고민이 생기는데, 기선님의 시각은 어떠한지 궁금합니다!

 

 

퀴즈

코드에서 '긴 함수'라고 판단하는 주된 기준은 무엇일까요?

함수의 코드 라인 수가 특정 개수(예: 10줄)를 초과하는 경우

함수 이름만으로 무슨 일을 하는지 알기 어렵고, 내부 구현을 자세히 봐야 이해되는 경우

성능 최적화를 위해 여러 기능을 하나의 함수에 모아둔 경우

함수가 너무 짧아 빈번한 컨텍스트 스위칭을 유발하는 경우

답변 1

0

백기선님의 프로필 이미지
백기선
지식공유자

해당 엔티티를 직접 참조하지 않고 DTO를 만들어서 참조하게 한 이유는 무엇인가요?

강낭콩님의 프로필 이미지
강낭콩
질문자

해당 엔티티가 JPA 엔티티이고 이 엔티티를 수정할 일이 없어서 엔티티를 직접 참조하는 것 보다 필요한 값만 래핑한 dto를 넘겨주는게 좋겠다라는 판단을 하게 되었습니다!

백기선님의 프로필 이미지
백기선
지식공유자

그렇군요. 해당 DTO를 불변 객체로 데이터 참조용으로만 만들어서 제공한다면 변경될 수 있는 엔티티를 넘기는것보다 안전하고 명시적이겠네요. 좋은 선택인것 같습니다.

강낭콩님의 프로필 이미지
강낭콩

작성한 질문수

질문하기