인프런 워밍업 클럽 스터디 3기 - 백엔드 클린 코드, 테스트 코드 2주차 발자국

image

섹션 6 코드 다듬기

해당 섹션에서 가장 와닿았고, 머리가 아팠던 것은 "과연 좋은 주석이란 무엇일까?" 에 대한 것이었다.

결론적으로, 좋은 주석은 코드에 비즈니스 요구 사항과 의도를 모두 잘 녹여냈다는 가정 하에 더 전달해야만 하는 정보가 남았을 때 남기는 것이다!

 

섹션 7 리팩토링 미션

이제까지의 학습을 바탕으로, 리팩토링 진행

https://github.com/Chaeruin/readable-code/pull/1
단계적으로, 공통적인 것부터 추상화 및 리팩토링을 진행하였다.

  1. io 패키지 인터페이스 추상화

  2. model 일급컬렉션 분리

  3. Machine 기능 추상화

  4. 버그 수정!

이후 중간 점검 세션을 통해 다른 분들 코드와 비교하고, 말씀해주신대로 다음날 리팩토링 + 강의 수강을 통해 간과하고 있었던 Provider의 개념, 리팩토링을 놓친 부분 (FileHandler 등...), VO에 대한 부족한 이해가 있음을 알고 이에 대해 더 학습하는 시간이 필요할 것 같다는 생각... 더 미루지 말고 다음 주에는 꼭 !! 해보아야겠다.

 

참조 강의 :: https://www.inflearn.com/course/readable-code-%EC%9D%BD%EA%B8%B0%EC%A2%8B%EC%9D%80%EC%BD%94%EB%93%9C-%EC%9E%91%EC%84%B1%EC%82%AC%EA%B3%A0%EB%B2%95


섹션 2 테스트는 왜 필요할까?

테스트의 중요성 -> 테스트 코드의 부재는 결국 유지보수의 어려움을 낳는다

테스트 코드는 빠른 피드백과 코드의 자동화, 이는 곧 전체 프로젝트의 높은 안정성을 낳는다

 

섹션 3 단위테스트

단위 테스트란? 작은 단위(클래스나 메소드와 같은-)의 코드를 독립적으로 검증하는 테스트이다.

JUnit5/AssertJ를 기반으로 해피 케이스 / 예외 케이스 / 경계값 모두 테스트 해야함

 

섹션 4 TDD

TDD는 왜 하는걸까?

처음엔 시간이 오래 걸리는 것처럼 보이지만, 디버깅 시간 단축, 빠른 문제 식별, 리팩토링 안정성 보장 덕분에 장기적으로 개발 속도가 빨라진다고,

  • Flow (3단계 순환)

    • Red : 빨간 불을 보는 테스트를 먼저 작성 (내부 메서드 구현X 혹은 더미값)

    • Green : 단순하고 빠르게 테스트를 통과할 수 있는 로직 구현 

    • Refactor : 해당 Green을 기준으로 같은 값을 낼 수 있는 로직으로 리팩토링

  • 장점

    • 복잡도가 낮고, 테스트 가능한 코드를 구현할 수 있게 한다.

    • 쉽게 발견하기 어려운 엣지 케이스를 놓치지 않게 해준다.

    • 과감한 리팩토링이 가능해진다.

       

 

섹션 5 테스트는 [ ] 다.

JUnit5부터 @Display 를 통해

  • 명사의 나열보다 문장으로

  • 테스트 행위에 대한 결과까지 기술

  • 도메인 용어를 사용하여 한층 추상화된 내용을 담아

  • 테스트의 현상을 중점으로 기술하지 말 것

     

     

    BDD

     

  • 시나리오 기반 테스트 케이스에 집중한 테스트

  • Given // When // Then


참조 강의 :: https://www.inflearn.com/course/practical-testing-%EC%8B%A4%EC%9A%A9%EC%A0%81%EC%9D%B8-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EA%B0%80%EC%9D%B4%EB%93%9C

댓글을 작성해보세요.

채널톡 아이콘