클린코드 chap 8. 모호한 경계를 적당히 구분짓기

최준영·2021년 10월 7일
0

클린한 코드

목록 보기
9/16

1. 경계란


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

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


캡슐화(Encapsulation)

  • 객체의 실체 구현을 외부로부터 감추는 방식

예제 1. 나쁜 예

map<Sensor> sensors = new hashMap<sensor>();
Sensor s = sensors.get(sensorId);
  • Map 인터페이스가 제공하는 clear 등 불필요한 기능이 노출된다.
  • 외부 코드를 함부로 호출하면 sensor 데이터가 손상될 수 있고, 이는 의도와 벗어난다.

예제 2. 좋은 예

public class Sensors {
    private Map sensors = new HashMap();
 
    public Sensor getById(String id) {
        return (Sensor) sensors.get(id);
    }
    // ..
}
  • 캡슐화를 통해 Map을 감춘다.
  • 원하는 기능만 공개할 수 있다.
  • 적절한 경계로 우리 코드를 보호할 수 있다.

3. 경계 짓기 (2) 외부 코드와 호환하기


Adapter 패턴

  • 외부 코드를 호출할 때, 우리가 정의한 인터페이스대로 호출하기 위해 사용하는 패턴

4. 외부 라이브러리 테스트하기 - Learning Test


Learning Test를 작성해 라이브러리를 테스트한다.

  • 외부 코드를 배우고, 안정성도 미리 검증할 수 있다
    • 학습 테스트는 이해도를 높인다
    • 외부 코드의 버전이 변경됐을 때, 우리 코드와 호한되는지 확인할 수 있다.
  • 실무에서 반드시 작성해야 하는 것은 아니지만, 여유가 된다면 작성해 두는 것이 좋다.
profile
do for me

0개의 댓글