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

Tomi님의 프로필 이미지

작성한 질문수

당신을 함께 일하고 싶은 개발자로 만들어 줄 클린 코드 작성법

그밖의 좋은 코드 작성을 위한 Tip6

이해가 안되는 부분이 있어서 질문드립니다.

20.10.03 15:55 작성

·

201

1

안녕하세요 좋은 강의 잘 듣고 있습니다!

제가 지식이 얕아서 아래와 같은 말을 이해 할 수가 없었던 부분이 있어 질문드립니다.

"로우 레벨 클래스를 사용할 때는 Don’t reinvent the wheel을 꼭 기억하세요."

로우 레벨 클래스는 하이 레벨 클래스를 도와주는 클래스들 이네요. 근데 로우 레벨 클래스를 사용하는데 있어서 이미 개발된 기능을 다시 만드는 데 시간을 쓰지 말라는 말씀의 의도를 파악을 하지 못했습니다.

바쁘신 와중에 죄송하지만 확인 부탁드립니다.

답변 1

0

클린 코더님의 프로필 이미지
클린 코더
지식공유자

2020. 10. 25. 23:12

아닙니다 :) 

충분히 오해하실만합니다. 

이게 사실,

코드의 추상화 수준을 일관성있게 하라는 소주제에 넣었다가 

소주제 'Don't reinvent the wheel'로 변경하게 된 케이스인데요, 

Don't reinvent the wheel과도 연관이 있고

추상화 수준 관련 내용이 먼저 나와 이해에 어려움이 없을 것이라고 생각했네요.

자바 언어에서, System.out.println() 이라는 (표준 출력)메서드의 코드를 예로들어 답변 드려보겠습니다.

위 메서드의 코드를 보니 print(), newLine() 등이 메서드를 사용하고 있네요.

print() 메서드 코드도 한 번 봐보겠습니다.

print() 메서드는 write()라는 보다 저수준 메서드를 호출하고 있네요

더 들어가보니까 flush(), flushBuffer() 같은 메서드 호출 코드가 보입니다.

이 정도로 추적을 끝내고 답변 드려보겠습니다.

 flush(), flushBuffer() 같은 메서드 이름만봐도 System.out.println() 와 그 추상화 수준이 다른 것을 바로 알 수 있을 거에요

만약 이렇게 서로 다른 추상화 수준의 코드가 혼재되어 있다,

그러면 (저수준 기능으로 구현된)이미 만들어진 기능이 있는 것은 아닌지 생각해보라는 의미입니다 :)

Tomi님의 프로필 이미지

작성한 질문수

질문하기