Backend
home
🧹

7. chap08 - 경계

생성일
2025/02/15 05:15
태그
CleanCode

1. 경계란

오픈소스, 라이브러리를 안쓰는 프로젝트는 없다.
우리가 만든 코드에 외부에서 들어온 코드를 병합해야 한다.
외부 코드는 외부에서 만든 코드인데, 외부 시스템과 호출하거나 단순히 외부에서 만들어진 코드일 수 있다.
우리 코드와 외부 코드를 깔끔하게 통합시키기 위해 경계를 잘 지어야 한다.

2. 경계 짓기 - (1) 우리 코드를 보호하기

캡슐화(Encapsulation) - 객체의 실체 구현을 외부로부터 감추는 방식
Sensor를 관리해야 한다. Sensor는 외부에서 사용된다.
Sendsor 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를 작성해 라이브러리를 테스트한다
외부 코드를 배우고, 안정성도 미리 검증할 수 있다