객체지향 생활 체조

“객체지향 생활 체조”는 [소트웍스 앤솔러지]에 실린 여섯 번째 글이다. 연습용 코드로 “규칙 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

Next Posts Previous Posts


Tags

addon android Assembly batch book C++ editor excel google InstallShield lua personal physic security wow

Recent Posts

Recent Comments

지양 on Source Insight – Browse …
조프 on Source Insight – Browse …
조프 on Source Insight – Browse …
랑탕 on Google 크롬의 Crash message
지양 on n&(n-1)

Blogroll