[Clean Code] 클린 코드 #Day 10 / 경계

ChilihC·2022년 3월 6일
0

Clean Code

목록 보기
11/13
post-thumbnail

TIL(Today I Learned) 🧑🏻‍💻


8. 경계


내용 정리 & 기억하고 싶은 내용

  • Map과 같은 경계 인터페이스를 이용할 때는 이를 이용하는 클래스나 클래스 계열 밖으로 노출되지 않도록 주의한다. Map 인스턴스를 공개 API의 인수로 넘기거나 반환값으로 사용하지 않는다.<p.146>

  • 곧바로 우리쪽 코드를 작성해 외부 코드를 호출하는 대신 먼저 간단한 테스트 케이스를 작성해 외부 코드를 익히면 어떨까? 짐 뉴커크(Jim Newkirk)는 이를 학습 테스트라 부른다. <p.147>

  • 학습 테스트를 이용한 학습이 필요하든 그렇지 않든, 실제 코드와 동일한 방식으로 인터페이스를 사용하는 테스트 케이스가 필요하다. 이런 경계 테스트가 있다면 패키지의 새 버전으로 이전하기 쉬워진다. <p.150>

  • 아직 존재하지 않는 코드를 사용하기. 우리가 바라는 인터페이스를 구현하면 우리가 인터페이스를 전적으로 통제한다는 장점이 생긴다. 또한 코드 가독성도 높아지고 코드 의도도 분명해진다. <p.150>

  • 경계에 위치하는 코드는 깔끔히 분리한다. 또한 기대치를 정의하는 테스트 케이스도 작성한다. <p.152>

  • 통제가 불가능한 외부 패키지에 의존하는 대신 통제가 가능한 우리 코드에 의존하는 편이 훨씬 좋다. 자칫하면 오히려 외부 코드에 휘둘리고 만다.


생각 & 느낀점 📝

  • 외부 패키지를 사용할때마다 나중에 이 패키지에 문제가 생기면 어떻게 하지? 버전이 변경되었을떄는 어떻게 하지? 같은 고민을 갖게 되기 마련이다. 이러한 문제가 생겼을때 그 피해를 최소하기 위한 방법은 무엇인가? 그것은 경계를 확실히 하는 것이라는 것을 배웠다.

  • 경계를 확실히 하고 문제를 테스트 해볼 수 있는 TDD를 구현해 학습 테스트를 실현하는게 외부 패키지를 익히고 문제 없이 사용하며 추후 프로그램 관리에도 효과적이라는 것을 알았다.

  • 새로운 패키지를 doc을 보며 공부하고 여러 기능들을 사용해 보지만 TDD는 실현하지 않았다. 귀찮기도하고 그렇게까지 해야하나? 라는 생각이 들었다. 하지만 이번 기회에 이것이 얼마나 중요한지 배운 만큼 프로젝트를 시작할때 이를 고려하는 프로그램을 제작해야겠다.


새로 용어 정리


참고 문헌


profile
developer junior

0개의 댓글

관련 채용 정보