본문 바로가기
SW

테스트 주도 개발(Test-Driven Development:By Example) - 1부 : 화폐 예제 (13 ~ 14장)

by 라꾸스떼(YR) 2020. 2. 6.
반응형

[13장] 진짜로 만들기

이 코드는 다음 두 가지 이유로 지저분하다.

-캐스팅(형변환). 이 코드는 모든 Expression에 대해 작동해야 한다.

-공용(public) 필드와 그 필드에 대한 두 단계에 걸친 레퍼런스.

클래스를 명시적으로 검사하는 코드가 있을 때에는 항상 다형성(polymorphism)을 사용하도록 바꾸는 것이 좋다.

 

[정리]

-모든 중복이 제거되기 전까지는 테스트를 통과한 것으로 치지 않았다.

-앞으로 필요할 것으로 예상되는 객체의 생성을 강요하기 위한 테스트를 작성했다.

-일단 한 곳에 캐스팅을 이용해서 코드를 구현했다가, 테스트가 돌아가자 그 코드를 적당한 자리로 옮겼다.

-명시적인 클래스 검사를 제거하기 위해 다형성을 사용했다.

 

[14장] 바꾸기

하지만 지금은 리팩토링하는 중에 코드를 작성하는 것이기 때문에 테스트를 작성하지는 않을 것이다. 우리가 이 리팩토링을 마치고 모든 테스트가 통과한다면, 그때 우리는 그 코드가 실제로 사용되었다고 생각할 수 있다.

0은 최악의 해시 코드다. 하지만 구현하기 쉽고 우리가 빨리 달릴 수 있도록 도와준다는 장점이 있다. 해시 코드를 이대로 둔다면 해시 테이블에서의 검색이 마치 선형 검색과 비슷하게 수행될 것이다.

나중에 코드를 읽어볼 다른 사람들에게도 알려주기 위해 테스트로 만들어 두자.

 

[정리]

-코드와 테스트 사이에 있는 데이터 중복을 끄집어 냈다.

-별도의 테스트 없이 전용(private) 도우미(helper) 클래스를 만들었다.

-리팩토링하다가 실수를 했고, 그 문제를 분리하기 위해 또 하나의 테스트를 작성하면서 계속 전진해 가기로 선택했다.

반응형

댓글