inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

리팩토링 3. 필드 이름 바꾸기

레코드에 대해 질문 있습니다.

해결된 질문

219

감바스

작성한 질문수 92

0

  1. DTO 대신 레코드 위주로 사용해도 될까요?

  2. 만약 DTO에 있는 필드중에서 값 변경이 자주 발생한다면 레코드가 아닌 DTO를 유지해서 사용하는게 좋을까요?

java intellij-idea 리팩토링

답변 2

0

백기선

네 레코드를 지원하는 자바 버전을 사용한다면 레코드를 사용해서 DTO를 만들어도 됩니다.

이상적으로 값을 전달하는데만 사용이 되어야 하니까 그 안에 있는 값들은 변경이 되지 않는게 좋을텐데요. 변경이 되어야 한다면 레코드를 써도 변경이 가능하고, DTO에 세터를 만들어도 값은 변경이 가능하니까, 그런 관점에 둘이 큰 차이가 없어 보입니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 감바스님 질문 감사드립니다.

  1. DTO 대신 레코드 사용: 레코드(Record)는 주로 불변 객체를 만들 때 사용하는데, 이는 데이터 무결성을 유지하는 데 큰 도움이 됩니다. DTO(Data Transfer Object)는 보통 데이터를 여러 계층 간에 이동시킬 때 사용됩니다. 레코드로 대체할 수 있는 상황이 많지만, 레코드를 사용하려면 해당 객체의 불변성을 유지할 수 있는지 확인해야 합니다. 불변성 유지가 중요하지 않은 경우에는 여전히 DTO를 사용하는 것이 더 적절할 수 있습니다.

  2. 값 변경이 자주 발생하는 필드: DTO는 값 변경이 가능한 객체로 설계되기 때문에 이런 상황에서 유리합니다. 레코드는 불변 객체이므로 변경이 필요한 상황에서는 부적절할 수 있습니다. 값이 자주 바뀌는 필드가 있다면 DTO를 유지하는 것이 좋은 접근일 수 있습니다.

관련된 토론과 유사한 사례를 확인하려면 아래의 링크들을 참고하시면 도움이 될 것입니다:

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

리팩토링 10. 함수를 명령으로 바꾸기 강의 부분에서 질문있습니다.

0

94

1

함수 추출하기 부분에서 의도와 구현에 대해 질문 있습니다.

0

202

1

.github 토큰 등록하는 방법에 대한 질문

0

220

2

깃허브

0

202

1

홈 디렉토리 .github 파일 생성

0

456

1

리팩토링 22. 여러 함수를 변환 함수로 묶기 강의 내용과 소스 코드가 다른 부분 문의

0

554

1

필드를 감추는 것이 중요한 이유?

0

568

1

오타제보. CVS -> CSV

0

375

0

객체의 필드 몇개만 전달할 경우, 통째로 넘기기 vs 여러개로 넘기기

0

510

0

[오탈자제보] 아주 작은 오타

2

401

0

basePrice

0

294

1

4:04 단축키 궁금합니다.

0

435

1

rename 메뉴에 대한 사소한 질문

0

356

1

테스트 코드 예제

0

308

1

Exception 부분

0

338

1

리팩토링 강의 [ 일부 소스 파일 누락 ]

0

331

1

stream으로 변경 시 성능 문제

0

437

2

로컬 변수에 final

0

457

1

Area 밑줄 나온부분

0

404

1

클래스의 상속 vs 네임스페이스 vs nested 클래스

0

321

1

이런 경우도 따로 함수로 빼는게 좋을지 궁금합니다.

0

278

1

질문입니다

2

264

1

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

0

236

1

해당 강의를 실행시 아래와 같은 에러가 발생합니다..!

0

596

2