CleanCode 8장 경계

김희윤·2021년 3월 7일
0

cleancode

목록 보기
8/13

시스템에 들어가는 소프트웨어를 모두 개발하는 경우는 거의 없다. 즉 외부 라이브러리를 사용하게 되는데 소포트웨어 간의 경계를 깔끔하게 하는 방법들이다.

1. 외부코드 사용하기

인터페이스 제공자와 사용자 사이에는 긴장이 존재한다

  • 제공자는 적용성을 넓히려 한다.
    (많은 사람에게 판매하기 위해)
  • 사용자는 자신에게 완전히 맞는 인터페이스를 원한다.

이러한 이해관계의 대립의 경계선에서 문제가 생길 수 있다.

java.util.Map은 다양한 인터페이스를 가지고 있고 편리성을 준다. 하지만 Map의 clear를 사용해서 사용자가 마음대로 Map 내용을 삭제할 수 있다. 반대로 추가도 가능해진다.

public class Sensors {
	private Map sensors = new Hashmap();

	public Sensor getById(string id) {
		return (sensor) sensors.get(id);
	}
}

위의 경우는 Map을 sensors 라는 객체로 감쌌기에 Map 인터페이스가 변하더라도 프로그램에는 영향을 주지 않는다.

2. 경계 살피고 익히기

타사 라이브러리를 가져왔을 때 사용법이 분명하지 않다면

  1. 하루나 이들 문서를 읽으며 사용법을 결정
  2. 코드를 작성해 라이브러리가 예상대로 동작하는지 확인
  3. 디버깅

의 과정을 거쳐야한다.

3. 학습 테스트는 공짜 이상이다

학습테스트는 드는 비용은 없지만 지식만을 확보할 수 있는 가장 손쉬운 방법이다.

  • 패키지가 예상대로 도는지 검증하고, 통합 이후에도 주기적으로 검증이 가능
    (새 버전이 나오면 테스트만 돌려 확인후 보완 가능)
    (호환되지 않을 경우 코드를 재수정하든 패키지를 수정하든 조치 취할 수 있음)
    -> 낡은 버전을 사용하려는 유혹에서 빠져 나올 수 있음!

이와 같이 깨끗한 경계는 향후 변경으로 인핸 비용을 줄일 수 있다!

profile
블록체인, IOT, 클라우드에 관심이 많은 개발자 지망생

0개의 댓글