객체지향 생활 체조
“객체지향 생활 체조”는 [소트웍스 앤솔러지]에 실린 여섯 번째 글이다. 연습용 코드로 “규칙 1, 메서드당 들여쓰기 한 번”과 “규칙 2, else 금지”를 해봤는데, 생각했던 것보다 리팩토링을 더 많이 하게 되더라.
규칙 1은 if (foo) { if (bar) { }} 이런 경우를 금하는 거니까, ‘메서드 당 네스팅은 한 번만’이라고 해도 같은 말이 되겠다.
규칙 2는 말 그대로 else를 안쓰는 건데, 원래는 다형성이나 Null Object를 쓰라는 말이었지만 1번을 하다보니 if (foo) return bar(); 같은 짓을 하게 되면서 대부분 사라졌다. =_=;;
Add comment March 27, 2009
MapReduce 해보기
책 보다가 연습삼아 한 번 해봤다. 혹시 모르시는 분을 위해 거칠게 설명하자면, “사과는 천원, 오렌지는 이천원”을 “천원은 사과, 이천원은 오렌지”처럼 키를 바꾸는 것이 Map, 이렇게 만든 여러 개의 테이블을 한 데 모으는 것이 Shuffle, 모은 걸 가지고 “천원짜리는 1개, 2천원짜리는 1개”라는 식으로 가공하는 게 Reduce 라고 할 수 있겠다.


조금 더 자세한 설명은 [구글을 지탱하는 기술]에서, 아름다운 코드는 [Beautiful Code]에서 볼 수 있다. 아름답지 않지만 내가 연습해본 코드는 TableMapper.cpp에서 볼 수 있다.
Add comment February 6, 2009
GuildMemberList
See also SpringNote
캐릭터가 월드에 들어가면 접속해 있는 길드원의 목록을 채팅창에 보여주는 애드온. 어차피 길드원이 몇 명 없고, 들어가면 누가 있나 확인하다보니 편하게 살자고 만들었다. 사용법은 딱히 없다. =_=;
만들면서 재미있었던 건 역시 루아 함수의 반환값들.
a, b = 1, 2
라고 하면 당연히 a는 1, b는 2가 되지만,
a, a = 1, 2
라고 하면 a의 값은 1이 된다. 관심없는 결과값을 무시하고 코드를 깔끔하게 하는 데에도 다음과 같이 사용할 수 있다는 것을 알게 되었다.
local name, _, _, _, class, zone, _, _, _, _ = GetGuildRosterInfo(i);
여기서 변수 “_”는 펄의 “$_”나 파이썬 인터프리터의 “_”하고 상관없이 그냥 루아 커뮤니티 안에서 사용하는 습관이라고 한다.
Add comment January 6, 2009
