강의

멘토링

커뮤니티

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

JuNu님의 프로필 이미지
JuNu

작성한 질문수

Readable Code: 읽기 좋은 코드를 작성하는 사고법

추상화 레벨

[강의 질문] 메서드 선언부

작성

·

35

·

수정됨

0

안녕하세요 우빈님 메서드 선언부 강의 내용 중 궁금한 부분이 있어서 질문 남깁니다.

 

기존 메서드(checkIfAllCellIsOpened)가

  1. 셀이 모두 열렸는지 체크

  2. 게임이 모두 끝났는지 체크

위의 두 내용을 나타내지 못하기 때문에
결국 게임이 끝났는지를 체크하는 메서드로 변경되었습니다. (checkIfGameOver)

여기서 궁금한점이 1. 의 일은 2. 에 대한 과정이라고 생각하는데 과정을 메서드 이름으로 드러내지 않아도 되는건지요?

메서드만 보았을 땐 셀이 모두 열렸는지를 체크하는 것을 알지 못하기 때문에 이것또한 이름으로 드러내야하는지가 궁금합니다. 🙇🏻‍♂️

답변 1

1

박우빈님의 프로필 이미지
박우빈
지식공유자

안녕하세요, JuNu 님!

좋은 질문이네요.

'추상과 구체', '추상화 레벨' 강의에서 살펴 보았듯이, 추상화 레벨이 높은 메서드명은 구현체의 모든 내용을 담을 필요가 없습니다. 추상화 단계가 올라가면서 자연스레 생략되는 구체의 정보가 생기기 마련입니다.
위의 예시에서는, '게임이 끝났는지 체크'하는 것은 메서드의 목적으로 추상화 레벨이 높고, '셀이 열렸는지 체크'하는 것은 게임이 끝났는지 체크하기 위한 구체적인 방법으로 추상화 레벨이 낮습니다. (즉, 구체에 가까운 정보입니다.)

만약 읽는 사람이 checkIfGameOver()라는 메서드를 읽고 '게임을 끝냈는지 어떻게 체크했지?'라는 궁금증이 든다면, 그 때 추상화 레벨이 낮은 메서드 구현부로 진입하여 내용을 읽고 '셀이 모두 열렸는지를 체크하는구나!' 라는 정보를 얻을 수 있습니다. 반대로 구체적인 내용에 관심이 없는 사람은 메서드명으로 충분한 정보를 얻고 넘어갈 수도 있을 거고요.

도움이 되셨기를 바랍니다.
감사합니다. 🙂

JuNu님의 프로필 이미지
JuNu

작성한 질문수

질문하기