2008년 02월 06일
Smalltalk Best Practice Patterns의 Money 예제 자바로 따라하기
Implementation Patterns 스터디의 동료가 IP 설명을 위한 예를 위해서 SBPP의 마지막 장 예제를 자바로 해보려고 했는데 스몰톡과 자바의 차이가 너무 커서 그만 뒀다고 했다. 그렇게도 많이 다른가 싶어서 나도 한 번 해봤다. 총 10쪽의 내용인데 5번째 쪽 이후로는 그대로 따라하면 전혀 자바스럽지 않게 된다.
내가 느낀 점은
자바식 Money 예제는 Test-Driven Development by Example를 참고.
내가 느낀 점은
- 생각과는 달리 타입을 결정하는 것이 어려웠다. 타입 결정도 가능한 뒤로 미루고 쉽게 변경할 수 있도록 하는 것이 자연스럽다.
- 스몰톡 같이 인터렉티브한 개발환경이 아닌 경우 유닛 테스트는 익터랙티브한 개발 환경을 흉내내는데 도움을 준다.
- 자바에서는 타입 정보를 중복해서 많이 표시한다. 사람을 위해서 표시는 아닌 것 같다.
- 자바에서 오브젝트는 확실히 일등시민이 아니다. 프리미티브 타입과 오브젝트는 너무 다르다.
자바식 Money 예제는 Test-Driven Development by Example를 참고.
# by | 2008/02/06 16:48 | 트랙백(1) | 덧글(4)







☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
제목 : SBPP 마지막장 예제 자바로 만들어 보기
Smalltalk Best Practice Patterns의 Money 예제 자바로 따라하기 class Money { private int amount; private String currency; public Money() { } public Money(......more
message를 기반으로 한 typing(동적 언어)과 compile time의 static typing을 기반으로 한 typing(java)사이의 고민에서 그냥 안하는게 낫다 싶었습니다.
SBPP를 따라하다보면 java버전에서는 Money와 MoneySum의 공통 인터페이스를 만들어야 합니다.
MoneySum이 Money를 상속하는 방법도 있지만, 제 생각에 이건 별로 맘에 들지 않았습니다.
또 꼴랑 message 3개 때문에 공통 인터페이스를 만드는 것도 맘에 들지 않았습니다.
SBPP의 예제 정도면 java 버전 에서는 굳이 double dispatch도 사용할 필요가 없다고 봅니다. java답게 구현하는게 훨씬 보기도 쉬울 듯 합니다.
설 잘 보내시구, 복 많이 받으세요~^^
타입정보를 중복해서 표시하는 것은 정말 생각해볼만한 문제!
Haskell 같이 타입 추론을 하면 타입 정보를 중복해서 써줄 필요가 없습니다. JVM위에서 돌아가는 Scala도 타입 추론을 하죠. http://www.scala-lang.org/intro/inference.html
TDD 얘기가 나와서 말인데, 신뢰하는 확실한 테스트 코드만 있으면 duck-typing도 괜찮아요. 난 컴파일 에러보다 런타임에러가 더 무섭습니다...^^