Clean Code 5장 - 형식 맞추기

2 분 소요

코딩을 함에 있어 네이밍은 상당히 중요하다. 이에 더해 코드의 형식을 맞추는 것도 상당히 중요한데, 형식을 잘 맞춘 코드는 그 퀄리티가 더욱 높아 보이게 만들어주며 그렇지 않은 코드는 무성의해 보이게 만든다. 팀 내의 컨벤션, 사내 컨벤션을 준수하는 것이 얼마나 중요한 것인지 이번 장을 통하여 알게 되었다. 아래는 클린코드 5장을 정리한 내용이다.

형식을 맞추는 목적

코드 형식은 의사소통의 일환이다. 의사소통은 전문 개발자의 일차적인 의무다. 오늘 구현한 내용이 내일 바뀔 수 있다. 하지만 이 바뀌게 되는 코드의 가독성은 기존의 코드에 많은 영향을 받는다. 오랜 시간이 지나 초기의 코드와는 전혀 다르게 변해도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다.

적절한 행 길이를 유지하라

일반적으로 큰 파일모다 작은 파일이 이해하기 쉽다. 곧, 한 기능만을 수행하는 함수를 만들기 위해 노력하고, 한 객체는 객체와 관련된 기능들만을 처리할 수 있도록 간결하게 만들기 위해 노력하자.

  • 신문 기사처럼 작성하라 사람은 기사를 읽을 때 위에서 아래로 읽는다. 독자는 표제를 보고 기사를 읽을지 말지를 결정한다. 첫 문단은 전체 기사 내용을 요약하며 뒤로 갈수록 세세한 사실이 조금씩 드러난다.

코드 또한 비슷하게 작성하는 것이 읽기 편하다. 이름은 간단하면서도 설명이 가능하도록 짓도록 한다. 이름만 보고도 올바른 모듈을 살펴보고 있는지 판단할 수 있도록 신경쓰도록 한다. 또한 첫 부분에서 고차원 개념을 설명하고, 점점 내려갈수록 의도를 세세하게 표현한다.

  • 개념은 빈 행으로 분리하라 빈 행은 새로운 개념을 시작한다는 시각적 단서이다. 코드를 읽다보면 빈 행이 나온 다음 줄에 눈길이 멈춘다. 코드의 빈 행이 없이 계속된다면 가독성은 점점 더 떨어지게 된다.

  • 세로 밀집도 서로 밀접한 코드는 세로로 가깝게, 그렇지 않은 코드는 빈 행으로 분리한다.

  • 수직거리 밀접한 개념은 세로로 가까이 두어야하듯 연관된 기능은 한 파일에 속해야 한다. 같은 파일에 속할 정도로 밀접한 두 개념은 세로 거리로 연관성을 표현한다. 연관성이 싶은 두 개념이 멀리 떨어져 있으면 코드를 읽는 사람이 소스 파일과 클래스를 여기저기 뒤지게 된다.

  • 변수선언
    • 변수는 사용하는 위치에 최대한 가까이 위치하게 한다.
    • 루프를 제어하는 변수는 루프 문 내부에 선언한다.
    • 다소 긴 함수에 블록 상단이나 루프 직전에 변수를 선언하기도 한다. -> 우리는 간결한 코드를 하는 목적을 갖고 있기에 이러한 선언은 극히 적을 것이다.
    • 인스턴스 변수는 클래스의 맨 처음에 선언한다.
  • 함수 선언
    • 한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치한다.
  • 개념적 유사성
    • 비슷한 동작을 수행하는 일군의 함수 (ex: 오버로딩된 함수)

가로 형식 맞추기

  • 가로 공백과 밀집도 가로로는 공백을 사용해 밀접한 개념과 느슨한 개념을 선호한다.
    • 할당문은 좌변과 우변 사이 공백을 추가한다.
    • 괄호 내 인자간의 쉼표를 강조하여 인수가 별개라는 사실을 보여주기 위해 공백을 추가한다.
    • 연산자 우선순위를 강조하기 위해 공백을 추가한다.
  • 가로정렬 저자는 가로정렬을 하는 습관을 갖고 있었다. 하지만 이 습관으로 선언부의 변수 유형은 무시되고 변수 이름만 강조되는 느낌을 받았다고 한다. 또한 IDE에서는 선언의 정렬은 무시된다. 따라서 정렬의 방식을 고수하지 않기로 했다고 서술한다. 이 파트에서의 중요한 점은 정렬이 필요할 정도로 선언부가 길다면 이는 클래스를 나누는 것을 고려해야 한다는 것이다.

  • 들여쓰기 들여쓰기 체계를 통해 개발자는 더욱 시각적으로 정돈된 느낌을 받는다. 클래스 영역, 메서드 영역, 조건문과 반복문의 영역을 들여쓰기로 구분하여 해당 부분을 더 쉽게 찾을 수 있으며 가독성을 증대시킨다.

팀 규칙

팀은 한 가직 규칙에 합의해야 하고 팀원들은 그 규칙을 따라야 한다. 이러한 태도는 소프트웨어가 일관적인 스타일을 보이게 한다. 한 소스 파일에서 봤던 형식이 다른 소스 파일에도 쓰이리라는 신뢰감을 독자들에게 심어줘야 한다. 갖가지 스타일로 코드를 복잡해 보이게 하는 행동을 하지 않아야 할 것이다.

카테고리:

업데이트:

댓글남기기