2010년 11월 23일 화요일

[Book] Clean Code

오늘은 Clean Code 를 꺼내 들어서 일고 있는 중입니다.

얼마전에 게임코디 눈팅을 하다가 본 getter/setter
=> 최대한 클래스 내에서 처리하도록 해서 getter/setter 없는 세상을 - 멋진 말인듯 합니다.
=> 사실 엔진 회사에서는 쉽지는 않은 듯(인터페이스를 어떻게 제공해야 할지가 문제.)
=> 무작정 상속받아서 처리하라고 그러기엔-ㅅ-

return null, pass null
=> 사실 이런 저런 악의 근원인데요.  포인터가 없는 언어가 많은 것도 이런 이유이겠지요-ㅁ-
=> 뭐 최대한 안쓰고 널객체를 넣어주면 좋긴 한 듯 합니다.
=> 최근에 널 사운드 시스템을 넣었습니다. 널 렌더러등도 필요한듯 한데요(이건 뭐 일단 제 당담이 아니니; =_=) 크게는 여러 객체들이 널 타입을 갖는 것이 테스트 하기도 좋고 한 거 같습니다. MockObject (이 개념이 맞는지는 정확히 모르겠습니다만) 처럼 행동을 흉내내고 테스트 하는 하나의 요소가 될 수도 있을 거 같습니다.

함수 이름 잘 짓기
=> 일단 영어라는 압박이, 제가 요즘 코드 리뷰시 지적받는 사항이 함수 이름과, 코멘트입니다.
=> 일단 영어는 둘째 치고 뭐하는 지 고민하고 함수 이름 짓는게 중요한 거 같습니다.(생각보다 쉽지 않은 거 같습니다.

리팩토링의 생활화
=> 회사에서 자주 하는 일이 여러 군데 흩어진 비슷한 코드를 모아서 이쁘게 함수를 작성 후 테스트 돌리기(완벽한 유닛 테스트가 없어서 손 테스트도 해야 되긴 합니다만,,=_=) 어느 정도 규모가 되면 전체적인 코드양이 일정하게 유지 되야 하는 거 같습니다.(기존 기능들이 통폐합,,,비슷한 기능들을 묶다 보면---+)

클래스는 한가지일만, 함수도 한가지 일만,
컴포넌트 패턴하고도 잘 맞는 얘기인 거 같습니다.
요즘 대세는 리플렉션(뭔지 정확하게 이해는 안갑니다만,,,) 시리얼라이제이션, RTTI 그리고 멀티코어에 중요한 메시징 시스템 까지 이미 있는 컴포넌트 라이브러리가 많으니 잘 가져다 써야 할 거 같습니다. 결국 C#의 프로퍼티 그리드로까지 깔끔하게 연결;; gpg 책에도 내용이 많고, http://nocturnal.insomniacgames.com/   여기에는 깔끔하게 통짜로 제공하니 함 가져다 쓰면 좋을 거 같습니다.!!!

그리고 요즘 느끼는 건데, 소프트웨어라는게 어디서 만들 던 초반에 버그가 없을 수는 없나봅니다. 뭐든 x.0 버전을 쓰면 고생하네요 -ㅁ- 최소한 좀 기다렸다 작업하는 게 내 코드도 깔끔하게 만들고 마음도 편한 듯 합니다.!!><