형식 맞추기(1)

형식을 위한 규칙들

책너두 5기 11일차

로버트 C. 마틴의 클린코드 p.95 ~ p.102

내용 정리

5. 형식 맞추기

처음 코드를 봤을 때 깔끔하고 일관적이며 꼼꼼한 코드로 보여야 한다. 그러기 위해선 규칙을 따라야 한다.

형식을 맞추는 목적

분명히 코드 형식은 중요하다. 오늘 구현한 기능이 다음 버전엣 ㅓ바뀔 확률은 아주 높다. 따라서 오늘 작성한 코드의 가독성은 미래에도 영향을 끼친다.

적절한 행 길이를 유지하라

파일의 세로 길이가 조금만 차이나도 실제 파일의 크기는 크게 달라진다. 비교적 적은 줄의 파일로도 커다란 시스템을 구축할 수 있다. 반드시는 아니지만 바람직한 규칙이다.

신문 기사처럼 작성하라

기사는 요약하는 표제가 나온 후 첫 문단에서 전체를 요약한다. 이후 세세한 사실을 드러낸다. 소스 파일도 마찬가지다. 신경써서 이름 짓고 첫 부분은 고차원 개념과 알고리즘을 설명한다.

개념은 빈 행으로 분리하라

일련의 행 묶음은 완결된 생각 하나를 표현한다. 생각 사이는 빈 행을 넣어 분리해야 마땅하다.

세로 밀집도

줄바꿈이 개념을 분리한다면, 세로 밀집도는 연관성을 의미한다. 따라서 서로 밀접한 코드 행은 세로로 가까이 놓여야 한다.

수직 거리

시스템이 무엇을 하는지 이해하기 위해, 이 조각 저 조각 어디에 있는지 찾고 기억하느라 시간 노력을 소모해선 안된다. 타당한 근거가 없다면 서로 밀접한 개념은 한 파일에 속해야 마땅하다. 따라서 protected변수를 피해야 한다.

  • 변수 선언 : 변수는 사용하는 위치에 최대한 가까이 선언한다. 지역 변수는 각 함수 맨 처음에 선언한다. 루프 문 내부나 아주 긴 함수에서는 블록 상단이나 루프 직전에 선언하는 사례도 있다.
  • 인스턴스 변수 : 클래스 맨 처음에 선언한다. 변수 간에 세로로 거리를 두지 않는다.
    • C++ : 가위 규칙 => 모든 인스턴스 변수를 클래스 마지막에 선언한다.
    • Java : 보통 클래스 맨 처음에 인스턴스 변수를 선언한다.

읽고 나서

요즘 편집기에서 자동으로 들여쓰기를 조정해주는 경우가 많아서 크게 신경쓰지는 않았다. 나름 잘 지키기도 했다. 빈 행을 두는 것은 개인적으로 자연스럽게 쓰게 되었는데, 아무래도 평소에 글을 쓸 때 문단을 나누는 습관을 가지다보니 코드에서도 그렇게 했던 것 같다. 다른 코드들을 보면서 빈 행을 두지 않는 경우가 왕왕 있길래, 괜히 전체 길이를 길게 만드는 건가 싶었는데 오늘 읽은 부분을 통해 명확해졌다. 결국 읽어야 하는건 사람이니까 읽기 편하게 작성하자.