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() 와 그 추상화 수준이 다른 것을 바로 알 수 있을 거에요
만약 이렇게 서로 다른 추상화 수준의 코드가 혼재되어 있다,
그러면 (저수준 기능으로 구현된)이미 만들어진 기능이 있는 것은 아닌지 생각해보라는 의미입니다 :)