개발자 99% 커뮤니티에서 수다 떨어요!
2장. 의미있는 이름
변수나 함수 그리고 클래스 이름은 다음과 같은 굵직한 질문에 모두 답해야 한다. "존재이유는?, 수행기능은?, 사용방법은?" 여기에 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다. (22p, 의도를 분명히 밝혀라)
특정 문화에서만 사용하는 농담은 피하는 편이 좋다. 의도를 분명하고 솔직하게 표현하라 (33p, 기발한 이름은 피하라)
의미 있는 맥락을 추가하라(35page, 특히 상속을 통해서 Hierarchical Structure 를 짤 때, 유효할 것 같다고 느낀 부분)
책에서 지양해야 할 점으로 열거한 것들이 거의 나한테 해당되는 사항이었다. 코드를 짜면서 막히던 부분에서 갑자기 아이디어가 퍼뜩 떠올랐을 때 일본어로 "설마?!" 를 뜻하는 "마사카"를 변수명으로(masaka) 짓고 나중에 사람들 앞에서 코드 리뷰 할 때 적잖이 당황했던 적도 있던 터라 특히, <기발한 이름은 피하라> 부분을 읽으면서 많이 반성했다.
Program Solving 분야 쪽에 있는 사람이라면, 주의하고 버릇을 들여놔야 될 것 같다는 생각이다. 알고리즘 대회나 문제를 풀 때는 개인, 혹은 서로 아는 가까운 사람 몇명끼리 하고만 함께하기 때문에 본인만의 언어 또는 그들만의 은어를 사용하는 것, 코드를 최대한 짧게 쳐서 통과하는 "숏코딩" 등 적어도 클린코드에서 논하는 내용이랑은 완전 다른 방향으로 코드를 짜는 경향이 강하다.
이번 장에서 다룬 주제가 [1. 코드 확인 -> 2. 코드 이해 -> 3. 작성자 의도 파악] 이 3개의 프로세스에 2번 단계에 쏟는 시간을 비약적으로 줄여주는 점에서 좋지만, 반대로 코드작성자의 입장에서 코드 작성시간이 더 늘어난것은 명백한 사실이다.
코드를 짜는 것과 읽는 것에는 분명히, Trade-off 가 존재한다. 짤 때는 좋았지, 읽을 때는 지옥인 코드가 있는 반면에, 짤 때는 괴로웠다가도 그 코드는 나중에 몇 년 지나고 나서도 이해되는 코드로 남아 있다. 적용은 코드를 누가 짜는지, 용도가 무엇인지, 추후에 재사용할 것인지, 따져봐서 결정해야 할 사안일 것이다.