티스토리 뷰
| 8. 경계
- 소프트웨어 경계를 깔끔하게 처리하는 기법과 기교
|| 외부 코드 사용하기
- 외부 코드(인터페이스)가 변할 가능성이 거의 없다고 여길 수 없다.
외부 코드가 변하게 되면 수정할 코드가 상당히 많아진다.
(자바 5가 제네릭스를 지원하면서 Map 인터페이스가 변했다고 한다..)
- java.util.Map 을 예로 보자.
경계 인터페이스인 Map을 class 안으로 숨기면,
Map 인터페이스가 변하더라도 나머지 프로그램에는 영향을 미치지 않는다.
Class 안에서 객체 유형을 관리하고 변환해주자.
1 2 3 4 5 6 7 8 9 | public class Sensors { private Map sensors = new HashMap(); public Sensor getById(String id) { return (Sensor) sensors.get(id); } // .. } | cs |
* Map과 같은 경계 인터페이스를 이용할 때는 이를 이용하는 클래스나 클래스 계열 밖으로 노출되지 않도록 주의하자.
|| 경계 살피고 익히기
- 우리 자신을 위해 우리가 사용할 코드를 테스트해보자.
- 간단한 테스트 케이스를 작성해 외부 코드를 익혀보자.
"학습 테스트" : 프로그램에서 사용하려는 방식대로 외부 API를 호출. API를 사용하려는 목적에 초점
- log4j 와 같은 패키지를 이용해보자.
- 실제 코드와 동일한 방식으로 인터페이스를 사용하는 테스트 케이스가 필요
- 경계 테스트가 있다면 패키지의 새 버전으로 이전하기 쉬워짐
|| 깨끗한 경계
- 경계에 위치하는 코드는 깔끔히 분리
- 외부 패키지를 호출하는 코드를 가능한 줄여 경계를 관리
- 새로운 Class로 경계를 감싸거나,
ADAPTER 패턴을 사용해 우리가 원하는 Interface를 패키지가 제공하는 Interface로 변환하자.
출처 : 클린 코드 (Robert C. Martin)
'Books' 카테고리의 다른 글
[클린 코드: Clean Code] 10. 클래스(Class) (0) | 2021.01.19 |
---|---|
[클린 코드: Clean Code] 9. 단위 테스트 (0) | 2021.01.16 |
[클린 코드: Clean Code] 7. 오류 처리 (0) | 2021.01.13 |
[클린 코드: Clean Code] 6. 객체와 자료 구조(Object and data structure) (0) | 2021.01.12 |
[클린 코드: Clean Code] 5. 형식 맞추기(Formatting) (0) | 2021.01.11 |