chap08-경계
목차
1. 경계란
- 오픈소스, 라이브러리를 안쓰는 프로젝트는 없다.
- 우리가 만든 코드에 외부에서 들어온 코드를 병합해야 한다.
- 외부 코드는 외부에서 만든 코드인데, 외부 시스템과 호출하거나 단순히 외부에서 만들어진 코드일 수 있다.
- 우리 코드와 외부 코드를 깔끔하게 통합시키기 위해 경계를 잘 지어야 한다.
2. 경계 짓기 (1) 우리 코드를 보호하기
○ 캡슐화(Encapsulation)
객체의 실체 구현을 외부로부터 감추는 방식
○ Sensor를 관리해야 한다. Sensor는 외부에서 사용된다
- Sensor Id와 Sensor 객체로 저장하고 싶어서, Map을 사용한다.
- 하지만 Map을 그대로 사용하면 Map이 가진 clear()가 외부로 노출된다.
- Sensor의 '외부'코드 관점에서 Sensor 객체의 값들만 가져오고 싶다.
- 캡슐화를 한다!
3. 경계 짓기 (2) 우리 코드를 보호하기
○ 외부 코드와 호환하기 - Adapter 패턴
외부 코드를 호출할 때, 우리가 정의한 인터페이스 대로 호출하기 위해 사용하는 패턴
○ Adapter 패턴 in Elastic Search
- 우리가 원하는 방식인 read할 때 ByteBuffer[]로 parameter를 보내면, 외부 코드인 nettyChannel에 ByteBuf 타입으로 parameter를 변환하여 전달한다.
- Page[] 타입 parameter로도 전달할 수 있다. Adapter에 매서드를 추가해 우리가 원하는 타입의 파라미터를 전달할 수 있다.
- 만약 adapter를 통한 변환을 거치지 않았다면 nettyChannel에 데이터를 전달할 때마다 타입을 변환하는 과정이 필요했고, 이는 중복을 발생시켰을 것이다.
4. 외부 라이브러리 테스트하기
○ Learning Test를 작성해 라이브러리를 테스트한다
외부 코드를 배우고, 안정성도 미리 검증할 수 있다
'Study Cafe > Clean Code 스터디' 카테고리의 다른 글
chap10-클래스 잘 설계하기 (0) | 2023.03.29 |
---|---|
chap09-깨끗한 테스트 코드 (0) | 2023.03.28 |
chap07-오류 처리 (0) | 2023.03.24 |
chap06-객체와 자료구조 (0) | 2023.03.24 |
chap05-형식 맞추기 (0) | 2023.03.22 |
댓글
이 글 공유하기
다른 글
-
chap10-클래스 잘 설계하기
chap10-클래스 잘 설계하기
2023.03.29 -
chap09-깨끗한 테스트 코드
chap09-깨끗한 테스트 코드
2023.03.28 -
chap07-오류 처리
chap07-오류 처리
2023.03.24 -
chap06-객체와 자료구조
chap06-객체와 자료구조
2023.03.24