•
주석의 목적은 코드를 읽는 사람이 코드를 작성한 사람만큼 잘 이해하게 돕는 데 있다.
•
이 장에서는 머릿속에 있는 정보 중 어떤 정보를 언제 적어야 하는 가에 대해 보여줄 것이다.
◦
설명하지 말아야 하는 것
◦
코딩을 수행하면서 머릿속에 있는 정보를 기록하기
◦
코드를 읽는 사람의 입장에서 필요한 정보가 무엇인지 유추하기
설명하지 말아야 하는 것
•
주석은 코드에서 설명할 수 없는 부분을 설명해야 한다. 코드만 보고 빠르게 유추 가능한 내용을 설명하는 주석은 가치가 없는 주석이다.
•
무가치한 주석을 피하기 위한 지침은 다음과 같다.
◦
설명 자체를 위한 설명을 달지 마라.
◦
나쁜 이름에 주석을 달지 말고 이름을 고쳐라.
•
좋은 코드가 나쁜 코드와 좋은 주석을 합친 것보다 가독성이 더 낫다.
생각을 기록하라
•
좋은 주석은 단순히 자신의 관점을 작성해두는 것만으로도 탄생할 수 있다. 즉 코딩할 때 중요하게 생각한 내용을 기록하면 된다.
•
좋은 주석을 작성하기 위한 지침은 다음과 같다.
◦
감독의 설명을 포함하라.
◦
코드에 있는 결함을 설명하라.
▪
todo를 사용해 개선점이나 수정 사항을 기록해두는 것이 좋다.
▪
todo 외에도 fixme, hack, xxx, textmate 같은 표시가 있다.
◦
상수에 대한 설명을 추가하라.
▪
상수명으로 충분히 설명되지 않는 매직넘버는 주석을 추가하는 것이 좋다.
코드를 읽는 사람의 입장이 되어라.
•
좋은 코드를 작성하는 방법 중 하나는 우리의 도메인에 익숙하지 않은 외부인이 코드를 처음봤을 때의 관점에서 보는 것이다.
•
이 기법은 주석을 추가하기 위한 부분을 찾을 때 특히 유용하다.
◦
나올 것 같은 질문 예측하기
▪
내가 작성한 코드를 누군가 읽었을때, 이게 무슨 코드일까? 하는 부분에 주석을 달아라.
◦
사람들이 쉽게 빠질 것 같은 함정을 경고하라.
▪
내가 작성한 코드에 사이드 이펙트가 존재한다면 이를 주석으로 충분히 경고해두는 것도 좋다.
◦
‘큰 그림’에 대한 주석
▪
상세하고 공식적인 문서를 작성할 필요가 없다. 각 계층에 적절히 추상화된 내용을 주석으로 추가해두기만 해도 충분하다.
◦
요약 주석
▪
특정한 코드 블록이 무언가를 해낼 때, 이에 대해 개략적인 설명을 주석으로 다는 것도 좋다.
마지막 고찰 - 글 쓰는 두려움을 떨쳐내라
•
프로그래머들은 좋은 주석을 만들기 위해 시간을 보내는 것을 두려워한다. 아깝기 때문이다.
•
너무 두려워하지 말고 다음과 같은 순서를 따라 주석을 일단 써보고 점차 수정한다면 적은 시간을 들이고도 적절히 유용한 주석을 작성하는 것에 도움이 될 것이다.
◦
마음에 떠오르는 생각을 일단 적는다.
◦
주석을 읽고 무엇인 개선되어야 하는지 확인한다.
◦
개선한다.
요약
•
주석을 다는 목적은 코드를 작성하는 사람의 의도를 읽는 사람에게 충분히 전달하기 위함이다.
•
설명하지 말아야하는 주석의 내용은 다음과 같다.
◦
코드 자체에서 빠르게 도출될 수 있는 정보
◦
나쁜 함수명과 같이 본질적인 문제가 메소드에 있는 경우
•
기록해야 하는 주석의 내용은 다음과 같다.
◦
코드가 특정한 방식으로 작성된 이유를 설명해주는 이유
◦
코드에 담긴 결함
◦
어떤 상수가 특정한 값을 갖게 된 계기
•
외부인의 관점에서 본다면 어느 부분에서 주석이 필요한지 조금이나마 더 명확해질 것이다.
◦
코드를 읽는 사람이 자기가 작성한 코드의 어느 부분을 보고 뭐라고?라는 생각을 할지 예측해보자.
◦
평범한 사람이 예상하기 힘든 특이한 동작인지 생각해보자.
◦
파일이나 클래스 수준 주석에서 큰 그림을 설명하고 각 멤버들이 어떻게 작동하는지 설명해보자.