필드를 감추는 것이 중요한 이유?
568
3 asked
안녕하세요 강사님
레코드 캡슐화 설명을 들으면서 궁금한 점이 생겨 질문 드립니다.
강의에서, 퍼블릭 필드를 감추는 용도로 퍼블릭 메서드를 사용할 수 있는데, 그 이유로는 퍼블릭 필드(ex, String name) 와 퍼블릭 메서드(ex, String setLastName()) 의 이름이 완전히 동일하다는 보장이 없기 때문입니다.
위 문장을, 퍼블릭 메서드는 퍼블릭 필드를 감추는 용도로 사용할 수 있다고 이해했습니다.
궁금한 점은, 그렇다면 필드를 감추는 것이 중요한 이유는 클라이언트단에서 데이터 클래스의 필드에 무작위적인 접근을 방지하기 위함인가요? 무작위적인 필드의 접근은 데이터를 쉽게 수정할 수 있게 때문이라고 추측했습니다.
감사합니다.
Answer 1
1
데이터 접근에 대한 제한 - 데이터 보호
조금 더 명시적인 인터페이스를 제공 - 가독성
강사는 아니지만 댓글달아요. 이유야 많겠지만... 저는 이렇게 생각해요
비유하자면 퍼블릭 필드를 그대로 사용하는 것은 편의점에서 가판대를 외부에 배치하는 것과 비슷한 느낌이라 관리가 힘들고 많은 사람이 직접 접근해서 사용하게 됩니다. 심지어 사람들이 가판대에 위치한 물건을 던지고 깨고 가지고 도망갈지 등 어찌됐든 문제가 많아보이는 느낌. 그리고 가판대에 내놓은 물건이 팔려고 내놓은 물건이지 전시용인지 등 어떠한 파악이 불가하다.
퍼블릭 필드를 퍼빌릭 메소드로 빼는 것은 베라에서 아이스크림을 먹고 싶을 때 점원에게 이 아이스크림 먹고싶네요 고르는 것과 비슷한 느낌입니다. 직접 접근할때도 어떠한 의도를 가지고서야 접근하게 되는 것.
리팩토링 10. 함수를 명령으로 바꾸기 강의 부분에서 질문있습니다.
0
94
1
함수 추출하기 부분에서 의도와 구현에 대해 질문 있습니다.
0
202
1
레코드에 대해 질문 있습니다.
0
219
2
.github 토큰 등록하는 방법에 대한 질문
0
220
2
깃허브
0
202
1
홈 디렉토리 .github 파일 생성
0
456
1
리팩토링 22. 여러 함수를 변환 함수로 묶기 강의 내용과 소스 코드가 다른 부분 문의
0
554
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
458
1
Area 밑줄 나온부분
0
404
1
클래스의 상속 vs 네임스페이스 vs nested 클래스
0
322
1
이런 경우도 따로 함수로 빼는게 좋을지 궁금합니다.
0
279
1
질문입니다
2
265
1
파라미터와 이들을 가진 클래스
0
237
1
해당 강의를 실행시 아래와 같은 에러가 발생합니다..!
0
598
2

