'DRY(Don't Repeat Yourself)법칙' 이라든지 '직교성' 에 대한 부분을 공감하며 읽던 도중,
"나쁜 코드야 말로 많은 주석을 필요로 한다. 주석은 높은 차원의 설명을 위해 아껴둬라." 라는 대목에서 약간의 충격을 받았다. 스스로가 주석을 꽤 많이 달고 있었고, 주석의 내용도 추상적이지 못했기 때문이다.
주석을 꼼꼼하게 다는 것이 좋은 습관이고, 그런 주석은 기억력이 좋지 못한 경우를 대비하는 차원에서 좋은 것 아닌가? 하지만, 돌이켜보면, 예전 소스의 상세한 주석이 도움이 된 적은 거의 없었던 것 같다. 주석의 내용이 최신의 것인지도 잘 모르겠고, 그정도 까지의 상세한 내용은 주석을 통하여 알 필요도 없었다.
주석은 다른 말 이더라도 개념상으로 유사한 경우가 있어서 아무래도 코드에 비해 중복될 염려도 많다. 코드의 갱신과 함께 주석도 갱신되야 하는데, 유사하거나 중복된 주석이 많을수록 낡은 주석이 방치될 가능성도 높아진다. 게다가 이렇게 방치된 주석은 스파게티 코드보다 위험하다. 아마도 주석을 왠만하면 달지 말라는 것이 아니라, 잘 변하지 않는 높은 차원의 설명을 통한 최소한의 주석을 달아야 한다는 것을 의미하는 것 같다.
코드의 경우 인터페이스와 구현을 분리하는 경우가 많은데, 이런 구조에서 주석의 중복을 최소화 하려면, 헤더파일에서는 인터페이스에 대하여 (잘 변하지 앟는) 간략한 사항만을 기록하고, 구현부에는 코드의 사용자가 알필요가 없는 어느정도 상세한 것들을 (높은차원의 설명으로) 기록한다. 구현부는 해당 코드를 최적화 하는 경우가 아니라면 거의 볼 필요가 없기 때문에 헤더에는 구현과 관련된 주석이 달릴 필요가 없다. 아무래도 주석을 다는 스타일에 변화를 줘야 할 것 같다.