강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của seaud55109
seaud55109

câu hỏi đã được viết

Cách viết mã sạch (clean code) giúp bạn trở thành một lập trình viên mà ai cũng muốn làm việc cùng

Mẹo thứ 6 để viết mã tốt hơn nữa

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

Viết

·

300

1

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

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

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

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

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

refactoring

Câu trả lời 1

0

seunghx3368님의 프로필 이미지
seunghx3368
Người chia sẻ kiến thức

아닙니다 :) 

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

이게 사실,

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

소주제 '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() 와 그 추상화 수준이 다른 것을 바로 알 수 있을 거에요

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

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

Hình ảnh hồ sơ của seaud55109
seaud55109

câu hỏi đã được viết

Đặt câu hỏi