모호한 경계를 구분짓기

박근수·어제
0

01. 경계란

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

캡슐화 (Encapsulation) - 객체의 실제 구현을 외부로부터 감추는 방식

02. 경계 짓기 - 우리 코드를 보호하기

Sensor 관리. Sensor는 외부에서 사용된다.

* Sesor Id와 Sesor 객체로 저장하고 싶어서, Map을 사용
* 하지만 Map을 그대로 사용하면 Map이 가진 clear()가 외부로 노출
* Sensor의 '외부' 코드 관점에서 Sesor 객체의 값들만 가오고 싶다면 캡슐화를 한다.
//Bad
Map<Sensor> sensors = new HashMap(Sensor>();
Sensor s = Sensor.get(sersorId);
//Map 인터페이스가 제공하는 clear 등 불필요한 기능이 노출
// 외부 코드가 함부로 호출하면 sensor 데이터가 손상될 수 있음

//Good
public class Sensors{
	private Map<Sensor> sensors = new HashMap<Sensor>();
    
    public Sensor getById(String sensorId){
    	return sensors.get(sensorId);
    }
}
//캡슐화를 통해 Map을 감춘다.
//원하는 기능만 공개할 수 있다.

04. 외부 라이브러리 테스트 하기

테스트 이유

  • 학습 테스트는 이해도를 높인다.
  • 외부 코드의 버전이 변경됐을 때, 우리 코드와 호환되는 지 알 수 있다.
profile
개발블로그

0개의 댓글