[클린코드] 8장 경계
시스템에 들어가는 모든 소프트웨어를 직접 개발하는 경우는 드물다.
외부 코드를 우리 코드에 통합해야만 한다. 소프트웨어 경계를 깔끔히 처리해보자.
외부 코드 사용하기
- Map과 같은 경계 인터페이스를 이용할 때는 이를 이용하는 클래스나 클래스 계열 밖으로 노출되지 않도록 주의한다.
// Map 인스턴스를 여기저기 넘기지 말자.
public class Sensors {
private Map sensors = new HashMap();
public Sensor getById(String id) {
return (Sensor) sensors.get(id);
}
경계 살피고 익히기
- 바로 코드를 작성하는 대신, 먼저 간단한 테스트 케이스를 작성해 외부 코드를 익히자. 이것을 학습 테스트라 부른다.
- 학습 테스트는 API를 사용하려는 목적에 초점을 맞춘다.
학습 테스트는 공짜 이상이다
- 패키지 새 버전이 나온다면 학습 테스트를 돌려 차이가 확인할 수 있다. 새 버전으로 이전하기 쉬워진다!
아직 존재하지 않는 코드를 사용하기
- 우리가 바라는 인터페이스를 먼저 구현하면 우리가 인터페이스를 전적으로 통제한다는 장점이 생기며, 코드 가독성도 높아지고 코드 의도도 분명해진다.
깨끗한 경계
- 경계에 위치하는 코드는 깔끔히 분리한다. 또한 기대치를 정의하는 테스트 케이스도 작성한다.
- 통제가 불가능한 외부 패키지에 의존하는 대신 통제가 가능한 우리 코드에 의존하는 편이 훨씬 좋다.
Reference
// Map 인스턴스를 여기저기 넘기지 말자.
public class Sensors {
private Map sensors = new HashMap();
public Sensor getById(String id) {
return (Sensor) sensors.get(id);
}
- 바로 코드를 작성하는 대신, 먼저 간단한 테스트 케이스를 작성해 외부 코드를 익히자. 이것을 학습 테스트라 부른다.
- 학습 테스트는 API를 사용하려는 목적에 초점을 맞춘다.
학습 테스트는 공짜 이상이다
- 패키지 새 버전이 나온다면 학습 테스트를 돌려 차이가 확인할 수 있다. 새 버전으로 이전하기 쉬워진다!
아직 존재하지 않는 코드를 사용하기
- 우리가 바라는 인터페이스를 먼저 구현하면 우리가 인터페이스를 전적으로 통제한다는 장점이 생기며, 코드 가독성도 높아지고 코드 의도도 분명해진다.
깨끗한 경계
- 경계에 위치하는 코드는 깔끔히 분리한다. 또한 기대치를 정의하는 테스트 케이스도 작성한다.
- 통제가 불가능한 외부 패키지에 의존하는 대신 통제가 가능한 우리 코드에 의존하는 편이 훨씬 좋다.
Reference
- 우리가 바라는 인터페이스를 먼저 구현하면 우리가 인터페이스를 전적으로 통제한다는 장점이 생기며, 코드 가독성도 높아지고 코드 의도도 분명해진다.
깨끗한 경계
- 경계에 위치하는 코드는 깔끔히 분리한다. 또한 기대치를 정의하는 테스트 케이스도 작성한다.
- 통제가 불가능한 외부 패키지에 의존하는 대신 통제가 가능한 우리 코드에 의존하는 편이 훨씬 좋다.
Reference
클린 코드: 애자일 소프트웨어 장인 정신 - 로버트 마틴 지음
Author And Source
이 문제에 관하여([클린코드] 8장 경계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jun-k0/클린코드-8장-경계저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)