외부코드와 우리 코드가 융합되는 부분을 깔끔하게 처리하는 법
외부코드 사용하기
외부 코드를 활용하는 경우, 이를 이용하는 클래스나 클래스 계열 밖으로 노출시키지 않고 내부에서 처리
--> 외부 코드를 사용할 수 있도록 내부 코드에서 클래스 같은걸로 묶어서 인터페이스만 열어주면 나중에 외부 코드가 바뀔 때도 여유있게 대응 가능
경계 살피고 익히기
학습테스트: 외부 코드를 사용하기 전에 간단한 TC를 작성해보면서 외부 코드를 익힘
--> 프로그램에서 사용하는 방식으로 외부 API를 호출해보면서 내가 예상한대로 동작하는지를 체크하는 과정
학습테스트는 공짜 이상이다
외부 API에 대해 필요한 지식만 확보하는 손쉬운 방법
--> 새로운 패키지 버전이 나오는 경우, 미리 짜둔 학습테스트를 돌려서 변경사항을 체크할 수 있다
아직 존재하지 않는 코드를 사용하기
아는 코드와 모르는 코드를 분리하는 경계
--> 우리가 바라는 인터페이스의 형태로 구현 : 추후 예상 모습과 달라지더라도 간극을 메울 수 있다 + 인터페이스 전체적으로 통제 가능 + 코드 가독성 높아짐
깨끗한 경계
- 경계에 위치하는 코드는 깔끔하게 분리
- 기대치를 정의하는 TC 작성
- 외부 패키지를 호출하는 코드를 최대한 줄이자 (새로운 클래스로 감싸기, Adaptor 패턴으로 구현해 변경을 최소화)
--> 변경에 드는 시간은 낮추고 코드 가독성과 경계 인터페이스 사용 일관성은 높인다.
100% 순수하게 내 손으로 짠 코드만 넣으면 좋겠지만, 시간과 성능을 고려하다보면 외부 라이브러리를 쓰게 된다. 이럴 때 외부 라이브러리의 업데이트 버전이 나올때면 업데이트 내용을 확인한 뒤 버전을 올려서 문제가 되는 부분을 체크하는데 드는 시간이 생각보다 많이 소요되는데(대대적 개편이 일어나기라도 하면.... OMG...) 이런 부분들을 학습테스트나 코드 분리를 통해 조금이나마 유지보수력을 높여줄 수 있다는 점이 아주 뇌리에 깊게 박혔다. 개발자들의 시간은 소듕하니까...!
'books > clean code' 카테고리의 다른 글
10. 클래스 (1) | 2023.12.22 |
---|---|
9. 단위테스트 (1) | 2023.12.20 |
7. 오류처리 (0) | 2023.12.14 |
6. 객체와 자료구조 (0) | 2023.12.13 |
5. 형식 맞추기 (0) | 2023.12.11 |