클린코드 핵심 정리 (8장 경계)
경계란
- 오픈소스, 라이브러리를 안쓰는 프로젝트는 없다.
- 우리가 만든 코드에 외부에서 들어온 코드를 병합해야 한다.
- 외부 코드는 외부에서 만든 코드인데, 외부 시스템과 호출하거나 단순히 외부에서 만들어진 코드일 수 있다.
- 우리 코드와 외부 코드를 깔끔하게 통합시키기 위해 경계를 잘 지어야 한다.
경계 짓기 (1) 우리 코드를 보호하기
캡슐화(Encapsulation)
객체의 실제 구현을 외부로부터 감추는 방식
Sensor를 관리해야 한다. Sensor는 외부에서 사용된다.
- Sensor Id와 Sensor 객체로 저장하고 싶어서, Map을 사용한다.
- 하지만 Map을 그대로 사용하면 Map이 가진 clear()가 외부로 노출된다.
- Sensor의 '외부' 코드 관점에서 Sensor 객체의 값들만 가져오고 싶다.
캡슐화
를 한다!
Sensor를 관리하고 싶다. Sensor는 외부에서 사용된다.
Map<Sensor> sensors = new HashMap<Sensor>();
Sensor s = sensors.get(sensorId);
- Map 인터페이스가 제공하는 clear 등 불필요한 기능이 노출된다.
- 외부 코드가 함부로 호출하면 sensor 데이터가 손상될 수 있고, 이는 의도와 벗어난다.
public class Sensors {
private Map<Sensor> sensors = new HashMap<Sensor>();
public Sensor getById(String sensorId) {
return sensors.get(sensorId);
}
}
- 캡슐화를 통해 Map을 감춘다.
- 원하는 기능만 공개할 수 있다.
- 적절한 경계로 우리 코드를 보호할 수 있다.
경계 짓기 (2) 외부 코드와 호환하기
외부 코드를 호출할 때 우리가 원하는 방식으로 사용하고 싶다!
💡 Adapter Pattern
한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환한다.
어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다.
외부 라이브러리 테스트하기 - Learning Test
Learning Test를 작성해 라이브러리를 테스트한다.
- 🤔라이브러리는 자기들이 이미 테스트를 했겠지.
- 근데 라이브러리를
사용
하는 내가 테스트를 한다고?
사용
하는 내가 테스트를 한다고?외부 코드를 배우고, 안정성도 미리 검증할 수 있다!
- 학습 테스트는 이해도를 높인다.
- 외부 코드의 버전이 변경됐을 때,
우리 코드와 호환되는 지 확인할 수 있다.
참고
해당 포스팅은 제로 베이스 클린코드 한달한권을 수강 후 정리한 내용입니다.
Author And Source
이 문제에 관하여(클린코드 핵심 정리 (8장 경계)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@coconenne/클린코드-핵심-정리-8장-경계
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
해당 포스팅은 제로 베이스 클린코드 한달한권을 수강 후 정리한 내용입니다.
Author And Source
이 문제에 관하여(클린코드 핵심 정리 (8장 경계)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@coconenne/클린코드-핵심-정리-8장-경계저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)