리팩토링 8. 매개변수 객체 만들기 강의 부분에서...
191
작성한 질문수 12
안녕하세요!
리팩토링 8. 매개변수 객체 만들기 강의를 보다가 궁금한점이 생겨서 질문 드립니다.
백기선님이 처음에 getRate()와 getMarkdownForParticipant()에서 매개변수인 int 타입의 totalNumberOfEvents와 Participant 타입의 매개변수가 반복적으로 등장하기 때문에 매개변수 객체 만들기를 실시하여야 한다고 하셨습니다. 변경하는 와중에 다른방법을 채택하여 totalNumberOfEvents를 필드 변수로 이동시켰는데요 혹시 이 상황에서 매개변수 객체 만들기 대신 필드이동을 선택하신 이유가 있을까요?
답변 1
1
좋은 질문 감사합니다. 해당 필드가 클래스 내부의 여러 메소드에서 사용하는 경우에 보통 필드로 선언하고 메서드에서 직접 참조하는 선택을 하는데요. 이렇게 하면 클래스 내부에 공유하는 데이터가 생기기 때문에 해당 데이터를 정말 클래스에 필드로 선언해도 적절한지 고민을 한 다음에 그 방법을 선택해야 합니다.
이 예제의 경우에는 그런 선택이 적절하다고 생각했기 때문에 2개의 매개변수를 묶은 매개변수 객체를 만들지 않고 그 중 하나를 필드로 선언하고 매개변수 한개만 넘기도록 고쳤습니다.
(질문을 남겨 주실 때 해당하는 수업에서 질문 남기기를 하실 수 있습니다. 그렇게 해주시면 해당 수업을 수강하는 다른 분들께도 도움이 될 것 같아요.)
감사합니다.
0
해당 데이터의 범위가 메소드라는 좁은 단위에서 좀 더 넓은 클래스 범위로 늘어났으니 그만큼 변경 될 여지가 많아지는거고 변경을 추적하는게 어려워 질 수 있습니다. 그렇다고 그 자체가 단점이라는게 아니라 (저는 단점이라는 말을 언듭한 적이 없는데요.) 그렇게 범위를 넓혔을 때 효용성이 더 나아진다면 그자체로 좋은 선택이 될 수 있습니다.
0
> 변경 될 여지가 많아지는거고 변경을 추적하는게 어려워 질 수 있습니다.
차근차근 답변을 다시 읽어보고 있는데 복잡한 시스템을 개발한 경험이 별로 없다보니 위의 부분이 정확히 이해가 되지가 않네요 ㅠㅠ
변경 될 여지가 많다는건 메소드 단위에서 클래스 단위로 변경이 되었으니 여러 메소드에서 해당 필드를 수정할수가 있게 되는것이기 때문에 변경 될 여지가 많다는것으로 이해했습니다. 그런데 여기서 변경을 추적한다는게 잘 와닿지가 않네요 ㅠㅠ
리팩토링 10. 함수를 명령으로 바꾸기 강의 부분에서 질문있습니다.
0
103
1
함수 추출하기 부분에서 의도와 구현에 대해 질문 있습니다.
0
211
1
레코드에 대해 질문 있습니다.
0
228
2
.github 토큰 등록하는 방법에 대한 질문
0
229
2
깃허브
0
205
1
홈 디렉토리 .github 파일 생성
0
467
1
리팩토링 22. 여러 함수를 변환 함수로 묶기 강의 내용과 소스 코드가 다른 부분 문의
0
557
1
필드를 감추는 것이 중요한 이유?
0
576
1
오타제보. CVS -> CSV
0
376
0
객체의 필드 몇개만 전달할 경우, 통째로 넘기기 vs 여러개로 넘기기
0
512
0
[오탈자제보] 아주 작은 오타
2
404
0
basePrice
0
295
1
4:04 단축키 궁금합니다.
0
440
1
rename 메뉴에 대한 사소한 질문
0
361
1
테스트 코드 예제
0
310
1
Exception 부분
0
340
1
리팩토링 강의 [ 일부 소스 파일 누락 ]
0
333
1
stream으로 변경 시 성능 문제
0
443
2
로컬 변수에 final
0
460
1
Area 밑줄 나온부분
0
408
1
클래스의 상속 vs 네임스페이스 vs nested 클래스
0
328
1
이런 경우도 따로 함수로 빼는게 좋을지 궁금합니다.
0
284
1
질문입니다
2
267
1
파라미터와 이들을 가진 클래스
0
239
1





