테스트 주도 개발

사용자 삽입 이미지
읽으면서 코딩도 따라 해보고 재밌습니다. AJN에서 이 책으로 스터디를 하면서 위키에 정리 중입니다. 저는 svn에 한 챕터 마다 커밋을 하고 있습니다.

프로젝트 구조는 아래 처럼 매우 단순합니다.
사용자 삽입 이미지svn 주소는 http://agilejava.googlecode.com/svn/trunk/ 이겁니다.

목차 별로 구현한 코드 중심으로 요약하겠습니다.

1. 다중 통화를 지원하는 Money 객체 – Dollar 만들기, times() 스텁 구현, p48 의존성과 중복
2. 타락한 객체 – times() 구현 마무리.
3. 모두를 위한 평등 – equlas() 구현하기.
4. 프라이버시 – amount를 보이지 않게 하기.
5. 솔직히 말하면 – Franc 만들기.
6. 돌아온 ‘모두를 위한 평등’ – equals()를 Money로 올리기.
7. 사과와 오렌지 – Franc과 Dollar 비교하기.
8. 객체 만들기 – Dollar와 Franc를 new가 아닌 Money의 Factory 메소드로 만들 도록 변경.
9. 우리가 사는 시간 – Dollar와 Franc을 없애기 위해서 둘을 구분한 currency를 만들어 냄.
10. 흥미로운 시간 – times()를 Money로 올리기, p103 생략된 부분 있는듯..
11. 모든 악의 근원 – Franc과 Dollar 클래스 없애기. 필요 없어진 test 없애기. p110 잘못 된 부분 있는듯…
12. 드디어, 더하기 – Expression이라는 메타포 도입하여 plus()구현 중.
13. 진짜로 만들기 – plus()는 Expression 반환하고, Expression에 Money reduce(String to) 인터페이스 만들고, Sum과 Money에서 reduce() 구현함. p126 복잡함.
14. 바꾸기 – 정말 많이 바꿨다. rate(Bank, String), Pair 클래스, Bank에서 rate 책임지기.
15. 서로 다른 통화 바꾸기 – Expression에 plus() 추가, Sum에 있는 reduce()가 재귀호출 인게 이제야 보이는 나..
16. 드디어, 추상화 – Sum에 있는 plus() 구현 마무리, Expression에 times() 추가. 맨 마지막 테스트는 실패한 것인가??

등록금 고지서에 왠 졸업비와 앨범비

등록금 고지서에 졸업비와 앨범비 항목으로 9만 얼마가 붙어있습니다. 학생회비 만원도 붙어있네요. 등록금은 316만 얼마..

선배님 중에는 등록금 100만원 일 때 다녔다던 선배도 있었는데.. 90번대 학번이셨는데..이대로 가면 제 자식의 대학 등록금은 한 학기에 천만원이 되겠군요. 벌써부터 등골 빠지는 소리가 들리는 것 같습니다.

아.. 글을 쓰게 된 요지는 등록금에 대한 한탄이 아니였는데 어쩌다 보니 그렇게 되버렸군요. 그림으로 대강 고지서를 그려보면 아래 처럼 생겼습니다.
사용자 삽입 이미지빨간 선만 절취선[footnote]뜯어 낼 수 있는 선입니다. 종이 찟기 쉽게 해놨죠.[/footnote]이고 파란 선은 그냥 그려져만 있습니다. 그리고 파란 동그라미는 수취인이라고 도장 찍는 곳입니다.

졸업비와 앨범비 그리고 학생회비는 필수로 내야하는 돈이 아닙니다. 그럼에도 절취선은 없습니다. 그나마 수취인은 따로 둔 걸 보면 분명히 내지 않아도 됩니다. 하지만 이런 건 돈을 내주시는 부모님이 알 수가 없죠. 그냥 다 내야 하는 걸로 알고 분명 전부 다 내시게 될 겁니다. 왜냐면 한덩어리로 묶여 있기 때문이죠. 위에 있는 덩어리는 은행이 가지고 아래 있는 덩어리는 영수증처럼 챙기면 되는 것 처럼 보이니깐요. 위에 있는 하나의 덩어리를 전부 내야 하는 것 처럼 보이죠.

만약에.. 등록금과 졸업비 사이에 절취선이라도 있었으면.. 전부 다 내려고 하시기 전에 한번쯤은 자식들에게 물어보려고 하시지 않을까요? 등록금을 320만원이나 받아가면서 아무런 동의 없이 졸업비와 앨범비를 얼렁뚱땅 받아가려는 농간으로 보이네요. 절취선 하나 더 만들어 주는게 그렇게 빡쌔단 말인가.. 10만원이면 책이 몇 권인데 보지도 않을 앨범 비에 검은 옷 걸치고 학사모 한 번 써보겠다고 그 돈을 낸단 말인가..ㅎㅎ