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

sunghoo.lim님의 프로필 이미지
sunghoo.lim

작성한 질문수

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

리팩토링 42. 레코드 캡슐화하기

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

작성

·

442

0

안녕하세요 강사님

레코드 캡슐화 설명을 들으면서 궁금한 점이 생겨 질문 드립니다.

강의에서, 퍼블릭 필드를 감추는 용도로 퍼블릭 메서드를 사용할 수 있는데, 그 이유로는 퍼블릭 필드(ex, String name) 와 퍼블릭 메서드(ex, String setLastName()) 의 이름이 완전히 동일하다는 보장이 없기 때문입니다.

위 문장을, 퍼블릭 메서드는 퍼블릭 필드를 감추는 용도로 사용할 수 있다고 이해했습니다.

궁금한 점은, 그렇다면 필드를 감추는 것이 중요한 이유는 클라이언트단에서 데이터 클래스의 필드에 무작위적인 접근을 방지하기 위함인가요? 무작위적인 필드의 접근은 데이터를 쉽게 수정할 수 있게 때문이라고 추측했습니다.

감사합니다.

답변 1

1

  1. 데이터 접근에 대한 제한 - 데이터 보호

  2. 조금 더 명시적인 인터페이스를 제공 - 가독성

강사는 아니지만 댓글달아요. 이유야 많겠지만... 저는 이렇게 생각해요

비유하자면 퍼블릭 필드를 그대로 사용하는 것은 편의점에서 가판대를 외부에 배치하는 것과 비슷한 느낌이라 관리가 힘들고 많은 사람이 직접 접근해서 사용하게 됩니다. 심지어 사람들이 가판대에 위치한 물건을 던지고 깨고 가지고 도망갈지 등 어찌됐든 문제가 많아보이는 느낌. 그리고 가판대에 내놓은 물건이 팔려고 내놓은 물건이지 전시용인지 등 어떠한 파악이 불가하다.

퍼블릭 필드를 퍼빌릭 메소드로 빼는 것은 베라에서 아이스크림을 먹고 싶을 때 점원에게 이 아이스크림 먹고싶네요 고르는 것과 비슷한 느낌입니다. 직접 접근할때도 어떠한 의도를 가지고서야 접근하게 되는 것.

sunghoo.lim님의 프로필 이미지
sunghoo.lim

작성한 질문수

질문하기