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 |