Smalltalk Best Practice Patterns의 Money 예제 자바로 따라하기

Implementation Patterns 스터디의 동료가 IP 설명을 위한 예를 위해서 SBPP의 마지막 장 예제를 자바로 해보려고 했는데 스몰톡과 자바의 차이가 너무 커서 그만 뒀다고 했다. 그렇게도 많이 다른가 싶어서 나도 한 번 해봤다. 총 10쪽의 내용인데 5번째 쪽 이후로는 그대로 따라하면 전혀 자바스럽지 않게 된다.

내가 느낀 점은

  • 생각과는 달리 타입을 결정하는 것이 어려웠다. 타입 결정도 가능한 뒤로 미루고 쉽게 변경할 수 있도록 하는 것이 자연스럽다.

  • 스몰톡 같이 인터렉티브한 개발환경이 아닌 경우 유닛 테스트는 익터랙티브한 개발 환경을 흉내내는데 도움을 준다.

  • 자바에서는 타입 정보를 중복해서 많이 표시한다. 사람을 위해서 표시는 아닌 것 같다.

  • 자바에서 오브젝트는 확실히 일등시민이 아니다. 프리미티브 타입과 오브젝트는 너무 다르다.



자바식 Money 예제는 Test-Driven Development by Example를 참고.

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 이피 | 2008/02/06 16:48 | 트랙백(1) | 덧글(4)

트랙백 주소 : http://colus.egloos.com/tb/4137925
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from 두개의 자아 at 2008/02/06 17:51

제목 : SBPP 마지막장 예제 자바로 만들어 보기
Smalltalk Best Practice Patterns의 Money 예제 자바로 따라하기 class Money { private int amount; private String currency; public Money() { } public Money(......more

Commented by 정재훈 at 2008/02/06 22:56
제가 느낀 제일 불편한 점이 소위 말하는 duck typing의 부재였습니다.
message를 기반으로 한 typing(동적 언어)과 compile time의 static typing을 기반으로 한 typing(java)사이의 고민에서 그냥 안하는게 낫다 싶었습니다.
SBPP를 따라하다보면 java버전에서는 Money와 MoneySum의 공통 인터페이스를 만들어야 합니다.
MoneySum이 Money를 상속하는 방법도 있지만, 제 생각에 이건 별로 맘에 들지 않았습니다.
또 꼴랑 message 3개 때문에 공통 인터페이스를 만드는 것도 맘에 들지 않았습니다.
SBPP의 예제 정도면 java 버전 에서는 굳이 double dispatch도 사용할 필요가 없다고 봅니다. java답게 구현하는게 훨씬 보기도 쉬울 듯 합니다.
설 잘 보내시구, 복 많이 받으세요~^^
Commented by ologist at 2008/02/11 20:32
저번에도 얘기했지만, duck-typing이 필요할 때가 있는 것이지, 항상 duck-typing이 좋다는 것은 반대입니다. 장단점이 있을 테고, 남의 떡이 더 커보이는 경우가 많죠.

타입정보를 중복해서 표시하는 것은 정말 생각해볼만한 문제!
Commented by 이피 at 2008/02/11 23:06
저도 TDD를 한 이후로는 Duck Typing으로 기울었습니다. 출신 성분에 상관없이 능력으로만 판단하는 시스템이죠 ㅎㅎ.

Haskell 같이 타입 추론을 하면 타입 정보를 중복해서 써줄 필요가 없습니다. JVM위에서 돌아가는 Scala도 타입 추론을 하죠. http://www.scala-lang.org/intro/inference.html
Commented by ologist at 2008/02/12 09:27
타입추론이 자바스크립트하고 같은 원리군요. 코드가 짧고, 로컬변수정도면 좋아보입니다.

TDD 얘기가 나와서 말인데, 신뢰하는 확실한 테스트 코드만 있으면 duck-typing도 괜찮아요. 난 컴파일 에러보다 런타임에러가 더 무섭습니다...^^

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶