코드의 의도
http://www.ologist.co.kr/507

위에 많은 덧글들이 달려서 덧글 및 트랙백을 통해서 느낌점을 얘기해보려 합니다.

cycle length calculator
http://cavin.egloos.com/3049122

이 이야기의 시작은 바로 위에 있는 링크입니다.

애시당초 number 라는 변수의 이름 자체가 모호해서 생긴 문제를 불필요하게 해결한 건 아닌가 하는 생각이 듭니다. - 이희승

네이밍을 잘 지으면, 구현이 단순해질수 있다는 교훈을 희승님이 남겨주셨습니다. 하지만, 3n+1 문제를 가지고 더 좋은 이름을 지어 보려고 하는데, 생각이 잘 안나더군요...OTL

그래서, 저도 cavin님과 똑같이 이름을 짓고, extract local varibable이나 extract method를 통해서 의도를 전달을 했을 것입니다.

일단, 여기까지 코드를 작성을 합니다. 그리고, 좀더 많은 부분을 구현을 하다가 보면, 또는 pair나 코드리뷰를 통해서 더 좋은 이름이 나오면 refactoring을 통해서 불필요한 코드들을 제거를 하면 됩니다. cavin님은 테스트 케이스가 있어서 더욱더 쉽게 refacotring을 할수가 있습니다.

희승님의 아름다운 작명을 기대를 했는데, 조금 바쁘신듯 합니다...^^

3n+1문제 관련하여..
http://cavin.egloos.com/3085039

오픈마인드는 많은 경험을 갖게 하는 듯하다. 자신이 만든 소스를 공개를 한다는 것은 쉬운 일이 아니지만, 공개를 하면 더욱더 많은 경험과 좋은 의견들을 들을수가 있다.

과거에 1999년도쯤 자바를 처음하면서 고수들의 코득다 무척 궁금했을 때가 있었지만, 이원영님을 제외하고는 대부분의 사람들이 소스를 공개를 잘 하지 않아서 실제 잘 만들어진 코드를 보기 어려웠다. 지금은 오픈소스도 많이 있고, 주위에 많은 분들이 소스를 공개를 하셔도 많은 도움이 된다.

팀내에서 코드리뷰를 통해서 내가 너무 형식적으로 구현한 것들에 대한 불편함을 알수도 있게 된다. 사실 구현을 해두고 시간이 지나면서 좀더 도메인 영역을 자세히 알면서 매일 꾸준히 리팩터링을 하고 있지만, 정말 꼭 맘에 드는 아름다운 코드를 만들어 내는 일은 쉬운일이 아니다.

API 및 코드가 오픈이 되고, 사용자들의 의견이 더해질때 좀더 의미있는 객체들이 탄생을 하게 된다고 생각을 합니다.

김창준임이 가독성에 대한 좋은 이야기를 해주셨습니다.
prefactoring을 책을 보다가 보면, 극단적인 가독성과 추상화에 대한 좋은 이야기들이 나온다.

저의 생각은 최소한 클라이언트가 사용하는 인터페이스에서는 극단적으로 가독성과 추상화를 지켜주었으면 하는 생각이다. 내가 만든 코드가 애매하게 보일때, 메타포에 대한 지식이 있는 사람과 없는 사람은 가독성에 대해 현저한 차이가 난다.

아래 이야기는 비슷한 관점에서 나온 것이 아닐까 생각을 해봅니다.

만약 코드가 비지니스 로직이 들어가고 그 로직이 domain-rich하다면 되도록 가독성을 추구하겠지만(가독성은 독자에 따른 상대적 개념이라는 것을 명심하면서), 저는 때로 가독성을 손해보면서까지 중복을 줄이기도 합니다. - 김창준

자바지기 아저씨도 그와 관련해서 좋은 이야기를 적어주었다.
http://wiki.javajigi.net/pages/viewpage.action?pageId=7565

프리팩토링

Ken Pugh / 한빛미디어



객체지향에서 그걸 하다 보면 흥미로운 객체들을 발견합니다. 함수형에서 그렇게 하다 보면 흥미로운 함수와 함수의 함수(functional)를 발견합니다. 이 "흥미로운 무엇"은 강력합니다. 내가 전에 모르던 것을 배우게 됩니다. 그리고 종종 이것은 프로그래머의 울타리를 넘어서 영향력을 끼치기도 합니다. 고객들의 대화가 바뀔 수도 있습니다.

객체지향을 하면서 흥미로운 객체들을 발견하지 못한다면 너무 고리타분한 코딩은 아닐까 생각합니다. - 김창준

김창준님의 흥미로운 객체에 대한 이야기는 DDD책에서 나오는 이야기와 일맥상통한다. cohesive하고, 도메인 객체 자신이 많은 이야기를 할수 있는 객체는 내가 코딩을 할때 큰 기쁨을 줍니다. DDD에서는 RIch Domain을 만들어가는 것은 쉽지 않은 일이지만, 진정한 Rich한 Domain객체를 만드는 일은 정말 의미있는 일이라고 나옵니다.

객체지향을 하다가 보면, 흥미로운 객체, Rich한 Domain객체에 대해 만들고 싶은 마음이 많습니다. 하지만, 제 경우에는 한번에 만들어지지 않고, 이리저리 refactoring을 하다가 발견이 되더군요. 김창준님 애기처럼 발견이라는 말이 더 어울립니다.

김창준님, 이희승님, cavin님 덧글 고맙습니다...^^

트랙백 보낼 주소 :: http://www.ologist.co.kr/trackback/514

  1. 코드의 의도

    2007/02/09 09:01
    삭제
    cycle length calculatorhttp://cavin.egloos.com/3049122TDD로 구현한 코드를 블로그에 공개를 하신 cavin님의 코드를 구경을 해봤다. 그리고, 아래와 같은 덧글도 목격을 했다.frok님의 입장은 if문에 직접적으로 이해할수 없는 조건절을 넣는것으로 덧글을 남기셨고, cavin 님은 위와 같은 덧글로 코드에 의도를 나타냈다는 답글을 다셨다.저같은 경우는 멤버변수로 cavin님처럼 사용하지는 않지만, 가능한..

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

  1. 2008/05/23 04:22
    댓글 주소 수정/삭제 댓글
    걸출한 뉴스!! 종류 블로그!
  2. 2008/05/23 04:34
    댓글 주소 수정/삭제 댓글
    걸출한 뉴스!! 종류 블로그!
  3. 2008/05/23 04:52
    댓글 주소 수정/삭제 댓글
    일! 우수한 감사!
  4. 2008/05/23 04:53
    댓글 주소 수정/삭제 댓글
    걸출한 위치! 많은 감사.
  5. 2008/05/23 05:23
    댓글 주소 수정/삭제 댓글
    걸출한 위치! 많은 감사.
  6. 2008/05/23 05:31
    댓글 주소 수정/삭제 댓글
    나는 합의한다 너에 이다. 그것은 이렇게 이다.
  7. 2008/05/23 06:03
    댓글 주소 수정/삭제 댓글
    유용한 정보. 좋은 디자인.
  8. 2008/05/23 07:02
    댓글 주소 수정/삭제 댓글
    일! 우수한 감사!
  9. 2008/05/23 07:12
    댓글 주소 수정/삭제 댓글
    여보세요, 좋은 아주 위치!
  10. 2008/05/23 07:24
    댓글 주소 수정/삭제 댓글
    친구는 위치의 너의 현재 팬이 되었다!
  11. 2008/05/24 00:51
    댓글 주소 수정/삭제 댓글
    정말 같지 않는 블로그!
  12. 2008/05/24 00:53
    댓글 주소 수정/삭제 댓글
    나는 배웠다 매우…
  13. 2008/05/24 01:04
    댓글 주소 수정/삭제 댓글
    너는 위치가 우수한 있는다!
  14. 2008/05/24 01:15
    댓글 주소 수정/삭제 댓글
    저에서 유사한 역사는 이었다.
  15. 2008/05/24 01:24
    댓글 주소 수정/삭제 댓글
    좋은 너를 위치! 감사하십시요.
  16. 2008/05/24 01:26
    댓글 주소 수정/삭제 댓글
    친구는 너의 현재 위치의 팬이 되었다!
  17. 2008/05/24 01:37
    댓글 주소 수정/삭제 댓글
    나는 합의한다 너에 이다. 그것은 이렇게 이다.


BLOG main image
OOP and Java by ologist

공지사항

카테고리

All (649)
private!! (106)
WEB & IT (140)
Developer (400)