본문 바로가기
개발 관련/클린코드

5. 형식 맞추기

by lazysnack 2022. 7. 13.

형식을 맞추는 목적

오늘 구현한 기능이 다음 버전에서 바뀔 확률은 매우 높다.

그리고 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다.

오랜 시간이 지나 원본을 찾기 힘들정도로 코드가 변해도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 계속 영향을 미친다.

적절한 행 길이를 유지하라

200줄 정도인 파일로도 커다란 시스템을 구축할 수 있다. (그만큼 모듈화가 되어있다는 뜻)

일반적으로 큰 파일보다 작은 파일이 이해하기 쉽다.

신문 기사처럼 작성하라

최상단에 기사를 몇 마디로 요약하는 표제가 나온다.

독자는 표제를 보고서 기사를 읽을지 말지 결정한다.

첫 문단은 전체 기사 내용을 요약한다. 세세한 사실은 숨기고 커다란 그림을 보여준다.

쭉 읽으며 내려가면 세세한 사실이 조금씩 드러난다. 날짜, 이름, 발언, 주장, 기타 세부 사항이 나온다.

개념은 빈 행으로 분리하라

빈 행은 새로운 개념을 시작한다는 시각적 단서다.

코드를 읽어 내려가다 보면 빈 행 바로 다음 줄에 눈길이 멈추게 된다.

수직 거리

서로 밀접한 개념은 세로로 가까이 둬야 한다.

물론 두 개념이 서로 다른 파일에 속한다면 규칙이 통하지 않는다.

하지만 타당한 근거가 없다면 서로 밀접한 개념은 한 파일에 속해야 마땅하다.

연관성이 깊은 두 개념이 멀리 떨어져 있으면 코드를 읽는 사람이 소스 파일과 클래스를 여기저기 뒤지게 된다.

  • 변수 선언 : 변수는 사용하는 위치에 최대한 가까이 선언
  • 인스턴스 변수 : 클래스 맨 처음에 선언 (이유인 즉, 잘 설계한 클래스는 많은 클래스 매서드가 인스턴스 변수를 사용하기 떄문)
  • 종속 함수 : 한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치한다. 또한, 가능하다면 호출하는 함수를 호출되는 함수보다 먼저 배치한다.

가로 형식 맞추기

통계적으로 봤을 때, 20 ~ 60자의 행이 총 행 수의 40%, 10자 미만은 30% 정도이다.

가로 공백과 밀집도

가로로는 공백을 사용해 밀접한 개념과 느슨한 개념을 표현한다.

들여쓰기

들여쓰기 한 파일은 구조가 한 눈에 들어온다.

반면에 들여쓰기를 하지 않은 코드는 열심히 분석하지 않는 한 거의 불가능하다.

덧붙이면...?

책으로 보면 이번 챕터는 코드가 많고, 짧은 느낌이 있다.

하지만 내용면에서는 충분하다.

한 마디로 말하자면 가독성 이 하나로 충분하지 않을까

그러고보면 이 형식맞추기라는 측면은 학부생때부터 계속 고민해온 사항이기도 하다.

예전에 국비 교육을 들었을 때, 반복문과 지역 변수들 사이의 개행에 관해 어떤 게 보기 좋을지 강사님한테 물었던 기억이 있다.

당시 강사님이 했던 말씀이 "보통 그런 경우는 의미 단위로 개행을 한다." 라고 비스무리 하게 말하셨던 거 같고, 덧붙여

경험이 쌓이면, 좀 더 쉽게 개행할 수 있을 거라고 하셨던 거 같은데.. (큰일이다 2년 정도밖에 안 지났는데도 기억이 잘 안나는거보니)

'개발 관련 > 클린코드' 카테고리의 다른 글

7. 오류 처리  (0) 2022.07.13
6. 객체와 자료 구조  (0) 2022.07.13
4. 주석  (0) 2022.07.13
3. 함수  (0) 2022.07.13
2. 의미 있는 이름  (0) 2022.07.13