티스토리 뷰

[클린 코드: Clean Code] 8장 경계

나는 devssun 2019. 8. 16. 23:56

8장 경계 부분은 조금 어렵다고도 할 수 있습니다

8장의 주제는 외부 코드(패키지/오픈 소스/컴포넌트 등)를 우리 코드에 깔끔하게 통합해야 하는데 이 소프트웨어 경계를 깔끔하게 처리하는 기법과 기교를 알아본다.


8장 경계

외부 코드 사용하기

인터페이스 제공자와 사용자 간 시스템 경계에서 문제가 생긴다

제공자는 최대한 많은 환경에서 돌아가야 많은 수익이 발생하므로 적용성을 넓히려 애쓰고, 사용자는 자신의 요구와 환경에 적합한 인터페이스를 바라기 때문이다.

 

경계 인터페이스인 Map 을 사용하게 되었을 때 Map 인터페이스가 변할 경우 따라서 수정해야 할 코드가 발생한다.

이런 경우 Map 을 다른 클래스를 만들어 숨기도록 하자

그 클래스 안에서 객체 유형을 관리하도록 한다.

 

경계 살피고 익히기

테스트 케이스를 작성해 외부 코드를 익힌다

 

아직 존재하지 않는 코드를 사용하기

경계와 관련해 또 다른 유형은 아는 코드와 모르는 코드를 분리하는 경계다

 

책에서는 예제로 자신의 이야기를 했는데 무선통신 시스템에 들어갈 SW 개발에 참여했다고 한다.

이 SW에 송신기라는 하위 시스템이 있었는데 여기에 대한 지식이 없어 인터페이스도 정의하지 못한 상태였다.

그래서 송신기 하위 시스템과 아주 먼 부분부터 작업하기 시작했다.

 

송신기 모듈에 원하는 기능을 생각하여 우리가 바라는 인터페이스를 구현한다.

그러면 인터페이스를 전적으로 통제한다는 장점이 생기고 코드 가독성과 코드 의도가 분명해진다.

 

깨끗한 경계

통제하지 못하는 코드를 사용할 때는 향후 변경 비용이 지나치게 커지지 않도록 각별히 주의한다.

경계에 위치하는 코드는 깔끔히 분리한다. 그리고 기대치를 정의하는 테스트 케이스도 작성한다.

외부 패키지를 호출하는 코드를 가능한 줄여 경계를 관리하자.

새로운 클래스로 경계를 감싸거나 Adapter 패턴을 사용해 우리가 원하는 인터페이스를 패키지가 제공하는 인터페이스로 변환하자.

 

도움이 되셨다면.. Buy me a coffeeBuy me a coffee