클린코드 #1 by Ophelia_song

개인적으로 책을 고르는 운은 좀 있는것 같다.
오랜만에 도서관에 가서 책을 고르던중 재미있어 보이는 책을 집었다.
목차를 보니 흥미가 생겼고 냉큼 집어서 들고 왔다.


알고보니 엉클밥의 클린코드

아직 초반부인 네이밍과 함수부분만 읽었는데 매우 흥미롭다.
되게 아직 초보딱지를 벗어내지 못한 나에겐 이런 책은 되게 좋은 가이드와 같다.
100%다 수긍하진 못하겠다. (내 나름대로의 철학과 철칙은 존재한다.)
하지만 90%는 수긍한다. 그러면서 다시 반성하고 만들던 코드를 애처로운 눈빛으로 다시 처다보게 되었다.

어익후.

헛웃음만 나오지만 어쩌리오.ㅡ_ㅡ;

첫장인 클린코드에 대한 이야기들과
변수의 네이밍에 관한 이야기를 잠시 요약해보았다.

"네이밍은 항상 짧지만 명확해야 한다!"

개인적으로 클래스를 설계하고 간단한 Diagram을 그리는 밑바탕을 다 하고 나면 가장 많은 시간이 들어가는 것은 바로
'네이밍'이다.
어떻게 하면 더 클라이언트가 쉽게 이해할수 있는 단어를 사용할 것인가.
이것은 팀작업을 하는 현재 제일 중요한 이야기다.
내부적으로 돌아가는 변수 및 함수들은 내가 클라이언트가 될 것이고, 외부로 노출되는 인터페이스의 경우 우리 팀원들이 클라이언트가 될 것이다. 과연 같이 보면서 단번에 이해 할 수 있는 단어를 선택하는가?라는 질문에 항상 난 회의적이다.
영어 단어의 폭이 좁은것이 발목을 잡기 때문이다.
그렇다고 너무 어렵거나 사전적 의미를 가진 단어를 쓴다면...과연 클라이언트들이 좋아할까?
이런면에서 상당히 고민을 많이 하는 부분이다.

prefix와 같은 부분에서는 최근에 고친 습관이 있는데

"vec3CharacterLocalTranslateVector" 와 같은 정말 긴 변수를 애용했다.
vec3는 prefix로 3항벡터를 의미하고, Character의 Local 위치 벡터라는 의미.
하지만 vec3와 벡터는 중복된다.
결국 최근에는 "vec3CharacterLocalTranslate"로 줄이긴 했는데 이것도 길다.
Translate를 고집한 이유는

'MainCharacter->SetTranslate(vec3CharacterLocalTranslate)'와 같이 Translate의 통일성을 위해서였는데.
너무 글이 긴데다가 중복된다.
결국 잘라내기를 할 필요성이 크게 보인다.

솔직히 3항벡터를 사용하면 위치벡터 혹은 방향벡터를 의미할텐데 주로 방향들은 Direction을 붙인다. 결국 둘 중 하나는 
생략해도 되는것 같다.

MainCharacter->SetTranslate(vec3CharacterLocal);
아 짧다. 의미가 명확한지는 모르겠다. 하지만 케릭터의 로컬좌표계의 벡터 라는 의미는 존재하는것 같다.
이런형태의 가장 큰 문제점은 저 vec3CharacterLocal이 방향벡터설정에 들어가게 될지도 모른다는 점이다.
뭐 typedef로 막아버리는것도 한 방법일지도?
(솔직히 캐릭터나 카메라의 디렉션과 위치는 계산은 벡터연산이 이루어져야 하지만 쓰임새는 분명히 달라야 한다.)


이렇게 네이밍은 올초부터 나를 끊이없이 괴롭히던 것중 하나이다.
어떻게 하면 조금 더 짧지만 분명한 의미를 가진 단어를 조합하느냐는 정말 어려운 일이다.
그런면에서 이번항목은 흥미로운 부분중 하나였다.

공유하기 버튼

 

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://OpheliaSo.egloos.com/tb/4143481 [도움말]

덧글

댓글 입력 영역