본문 바로가기
WEB/Clean Code

[Clean Code] 8장. 경계

by IT황구 2022. 2. 22.
728x90
반응형

Clean Code 8장 (경계)

이곳에서의 경계는 클라이언트 코드와 외부 코드의 경계인것 같다.

외부 코드 사용하기

  • java.util.Map을 보면 굉장히 많은 인터페이스가 있다. clear(), equals() 등등..
    • 이것을 여기저기 넘긴다고 했을때, clear()는 어디서 불리더라도 맵에 있는 모든 값들이 삭제되는 문제가 생긴다.
경계 인터페이스인 Map을 seonsor 안으로 숨긴다.
Seonsor 클래스에서 프로그램에 필요한 인터페이스만 제공한다.

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

  public Sensor getById(String id)
  {
    return (Sensor) sensors.get(id);
  }
}
  • 항상 위와같이 만들 필요는 없지만, Map과 유사한 경계 인터페이스를 여기저기 넘기지 말라는 뜻이다. (노출 방지)

학습테스트

  • 외부 코드를 익히기가 어렵다면, 간단한 TC를 작성해서 외부 코드를 익히자. 이 방법을 학습테스트라 부른다.
  • 프로그램에서 사용하고자 하는 방식대로 외부 API를 호출한다. 통제된 환경에서 API를 제대로 이해하는지 확인하는 것이다.
  • 학습 테스트는 API를 사용하려는 목적에 초점을 맞춘다.

log4j (로깅기능을 위한 아파치의 패키지)

  • 외부 코드를 사용할때 그 패키지가 항상 안전한것은 아니라는 교훈을 주었다.
  • 그만 알아보자.

깨끗한 경계 (Clean Boundaries)

  • 소프트웨어 설계가 우수하면 변경하는데 많은 투자와 재작업이 필요하지 않다.
  • 통제하지 못하는 코드를 만든다면, 향후 변경 비용이 굉장히 비싸진다.
  • 외부 패키지를 호출하는 코드를 가능한 줄여 경계를 관리하자
  • 새로운 클래스로 감싸거나, ADAPTER 패턴을 이용하자.

여기서 우리 프로젝트에 적용할점은?

  • 아직 다 이해를 못하겠습니다.
728x90
반응형

'WEB > Clean Code' 카테고리의 다른 글

[Clean Code] 10장. 클래스  (0) 2022.02.23
[Clean Code] 9장. 단위테스트  (0) 2022.02.23
[Clean Code] 7장. 오류처리  (0) 2022.02.21
[Clean Code] 6장. 객체와 자료구조  (0) 2022.02.21
[Clean Code] 5장. 형식 맞추기  (0) 2022.02.20