[13장] 진짜로 만들기
이 코드는 다음 두 가지 이유로 지저분하다.
-캐스팅(형변환). 이 코드는 모든 Expression에 대해 작동해야 한다.
-공용(public) 필드와 그 필드에 대한 두 단계에 걸친 레퍼런스.
클래스를 명시적으로 검사하는 코드가 있을 때에는 항상 다형성(polymorphism)을 사용하도록 바꾸는 것이 좋다.
[정리]
-모든 중복이 제거되기 전까지는 테스트를 통과한 것으로 치지 않았다.
-앞으로 필요할 것으로 예상되는 객체의 생성을 강요하기 위한 테스트를 작성했다.
-일단 한 곳에 캐스팅을 이용해서 코드를 구현했다가, 테스트가 돌아가자 그 코드를 적당한 자리로 옮겼다.
-명시적인 클래스 검사를 제거하기 위해 다형성을 사용했다.
[14장] 바꾸기
하지만 지금은 리팩토링하는 중에 코드를 작성하는 것이기 때문에 테스트를 작성하지는 않을 것이다. 우리가 이 리팩토링을 마치고 모든 테스트가 통과한다면, 그때 우리는 그 코드가 실제로 사용되었다고 생각할 수 있다.
0은 최악의 해시 코드다. 하지만 구현하기 쉽고 우리가 빨리 달릴 수 있도록 도와준다는 장점이 있다. 해시 코드를 이대로 둔다면 해시 테이블에서의 검색이 마치 선형 검색과 비슷하게 수행될 것이다.
나중에 코드를 읽어볼 다른 사람들에게도 알려주기 위해 테스트로 만들어 두자.
[정리]
-코드와 테스트 사이에 있는 데이터 중복을 끄집어 냈다.
-별도의 테스트 없이 전용(private) 도우미(helper) 클래스를 만들었다.
-리팩토링하다가 실수를 했고, 그 문제를 분리하기 위해 또 하나의 테스트를 작성하면서 계속 전진해 가기로 선택했다.
댓글