2021 02 22
2021-02-22
Why TDD?
- 과정
1. 테스트 작성
2. 테스트를 통과하는 가장 간단한 코드 작성
3. 리팩터링
- 장점
- 응집도가 높고, 결합도가 낮은 클래스로 구성된 시스템 개발
- 책임을 수행할 객체 선정
- 클라이언트가 기대하는 객체의 요구와 응답을 검토할 수 있음
- 객체가 어떤 다른 객체와 협력할 것인지를 집증
- 테스트를 작성하기 위해 객체의 메서드를 호출하고, 반환값을 검증하는 것은, 순간적으로 객체가 수행하는 책임/역할에 관해 생각한 것
refactoring 하면서 생긴 질문
- 결과에 대한 계산... controller가 해야하나 model이 해야하나?
- model에서 하는게 맞는거 같다.. 엄연히 비즈니스 로직이자너
- enum에 대한 테스트?
- 로직이 없고 싱글톤으로 구성된 그저 상수의 나열이라면 굳이?
- 좋은 네이밍?
- GameMoney 클래스 -> numberOfLottoToBuy
- LottoBall / LottoGenerator -> 데이터 구조상 1이 더 있어야 한다. 이를 표현하는 좋은 네이밍? 패딩?
- UnmodifiableList는 만능?
- 좀 뜯어볼 필요성이 있는듯
- 우선 불변객체라니까 써보자