테스트 주도 개발<br />by googletest<br />3장. 모두를 위한 평등<br />
참고<br />값 객체 패턴(value object pattern)<br /><ul><li>객체를 값처럼 쓸 수 있는 패턴
객체 인스턴스변수는 생성자 통해 한 번 설정한 후에는 결코 변하지 않음
별칭 문제 걱정 끝</li></ul>별칭 문제<br />수표1=$5<br />수표1=$10<br />$5<br />$10<br />수표2=$5<br />수표2<br />
To do:<br /><ul><li>$5 + 10CHF = 10$(환율 2:1)
$5 * 2 = $10
amount를 private으로 만들기
Dollar 부작용(side effent)?
Upcoming SlideShare
Loading in …5
×

테스트 주도 개발 By googletest 3장 모두를 위한 평등

915 views

Published on

테스트 주도 개발 By googletest - 3장, 모두를 위한 평등
관련글: http://surpreem.com/archives/45

Published in: Technology
  • Be the first to comment

테스트 주도 개발 By googletest 3장 모두를 위한 평등

  1. 1. 테스트 주도 개발<br />by googletest<br />3장. 모두를 위한 평등<br />
  2. 2. 참고<br />값 객체 패턴(value object pattern)<br /><ul><li>객체를 값처럼 쓸 수 있는 패턴
  3. 3. 객체 인스턴스변수는 생성자 통해 한 번 설정한 후에는 결코 변하지 않음
  4. 4. 별칭 문제 걱정 끝</li></ul>별칭 문제<br />수표1=$5<br />수표1=$10<br />$5<br />$10<br />수표2=$5<br />수표2<br />
  5. 5. To do:<br /><ul><li>$5 + 10CHF = 10$(환율 2:1)
  6. 6. $5 * 2 = $10
  7. 7. amount를 private으로 만들기
  8. 8. Dollar 부작용(side effent)?
  9. 9. Money 반올림?
  10. 10. equals()
  11. 11. hashCode()</li></ul>목록에 추가<br />‘값 객체’여야 한다는 것은…<br /><ul><li>모든 연산은 새 객체를 반환
  12. 12. 값 객체는 equals()를 구현</li></ul>Dollar를 해시 테이블 키로 쓴다면 equals() 구현할 때 hashCode()도 함께 구현<br />
  13. 13. To do:<br /><ul><li>$5 + 10CHF = 10$(환율 2:1)
  14. 14. $5 * 2 = $10
  15. 15. amount를 private으로 만들기
  16. 16. Dollar 부작용(side effent)?
  17. 17. Money 반올림?
  18. 18. equals()
  19. 19. hashCode()</li></ul>빨간 막대를<br />빨리 녹색 막대로<br />가짜로 구현<br />
  20. 20. 삼각측량<br />
  21. 21. To do:<br /><ul><li>$5 + 10CHF = 10$(환율 2:1)
  22. 22. $5 * 2 = $10
  23. 23. amount를 private으로 만들기
  24. 24. Dollar 부작용(side effent)?
  25. 25. Money 반올림?
  26. 26. equals()
  27. 27. hashCode()</li></ul>삼각 측량 위한 두 번째 예:$5 != $6<br />동치성(equality) 일반화<br />
  28. 28. 생각…<br /><ul><li>코드와 테스트 사이 중복 제거하고 일반적 해법 구할 수 있으면 바로 처리
  29. 29. 설계가 떠오르지 않으면 삼각 측량으로 몇 부분을 바꿔 가며 다른 각도에서 생각</li></ul>또 다른 생각…<br /><ul><li>널 값, 다른 객체와 비교할 때는 어떻게 될까? 할 일에 추가</li></li></ul><li>지금까지 우리는…<br /><ul><li>디자인 패턴이 또 다른 오퍼레이션을 암시한다는 걸 알아 챘다.
  30. 30. 해당 오퍼레이션을 테스트 했다.
  31. 31. 해당 오퍼레이션을 간단히 구현했다.
  32. 32. 곧잘 리팩토링하는 대신 테스트를 조금 더 했다.
  33. 33. 두 경우를 모두 수용할 수 있도록 리팩토링했다.</li>

×