[클린 코드] 형식 맞추기

이승훈·2023년 3월 20일
1

CleanCode

목록 보기
4/4
post-thumbnail

코드의 형식은 매우 중요하다.
코드 형식은 의사소통의 일환이다.
오늘 구현한 기능이 다음 버전에서 바뀔 확률은 아주 높다.
그런데 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다.

⚙️ 적절한 행 길이를 유지하라

이 책에서 제안하는 한 파일의 행길이는 최대 500줄을 넘기지 말것이며 평균적으로 200줄 이내에서 작업하길 제안한다.
현재 우리 회사에서 사용하는 서비스의 한 파일은 1200줄이었고 내가 얼마전에 진행한 리팩토링을 통해 800줄 까지 줄여놓은 상태이다.
기준이 생겼다. 일단 1차 목표는 500줄

⚙️ 신문 기사처럼 작성하라

좋은 신문기사는 표제를 보고서 기사를 읽을지 말지 결정한다.
첫 문단은 전체 기사 내용을 요약한다.
그리고 쭉 읽으며 내려가면 세세한 사실이 조금씩 드러난다.

소스 파일도 이와 유사하게 작성해야한다.
이름은 간단하면서도 설명이 가능하게 작성해야한다.
이름만 보고도 올바른 모듈(컴포넌트)를 살펴보고 있는지 아닌지를 판단할 정도로 신경써서 지어야한다.

소스파일의 첫 부분은 고차원 개념과 알고리즘을 설명하고 아래로 내려갈수록 의도를 세세하게 묘사해야한다.

⚙️ 개념은 빈 행으로 분리

빈 행은 새로운 개념을 시작한다는 시각적 단서다.
코드를 읽어 내려가다 보면 빈 행 바로 다음 줄에 눈길이 멈춘다.
이 책에서는 여러 클래스들이 있는 하나의 파일들을 클래스 단위로 빈행을 주어 구분하는것을 예시로 보여준다.

내가 주로 작성하는 리액트코드에선 하나의 컴포넌트 내의 HOOK과 함수들을 빈 행으로 분리해주여 하는것으로 적용해 볼 수 있을것같다.

⚙️ 세로 밀집도

서로 밀접한 코드 행은 세로로 가까이 놓여야 한다.

⚙️ 수직 거리

서로 밀접한 개념은 세로로 가까이 둬야 한다.
물론 두 개념이 서로 다른 파일에 속한다면 규칙이 통하지 않는다.
하지만 타당한 근거가 없다면 서로 밀접한 개념은 하나의 파일에 속해야 마땅하다.

같은 파일에 속할 정도로 밀접한 두 개념은 세로 거리로 연관성을 표현한다.
여기서 연관성은 한 개념을 이해하는데 다른 개념이 중요한 정도다.
연관성이 깊은 두 개념이 멀리 떨어져 있으면 코드를 읽는 사람이 소스 파일과 클래스를 여기저기 뒤지게 된다.

⚙️ 종속 함수

한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치한다.
또한 가능하다면 호출하는 함수를 호출되는 함수보다 먼저 배치한다.
그러면 프로그램이 자연스럽게 읽힌다.
규칙을 일관적으로 적용한다면 독자는 방금 호출한 함수가 잠시 후에 정의 된다는 사실을 예측한다.
이는 곧 가독성을 높이는 길이다.

⚙️세로 순서

일반적으로 함수 호출 종속성은 아래 방향으로 유지한다.
즉, 호출되는 함수를 호출하는 함수보다 나중에 배치한다.
그러면 소스 코드 모듈이 고차원에서 저차원으로 자연스럽게 내려간다.

이는 위에서 말한 신문 기사와 마찬가지로 가장 중요한 개념을 가장 먼저 표현하라는 말과 일맥상통한다.

세세한 사항을 가장 마지막에 표현할 때 독자는 소스파일에서 첫 함수 몇개만 읽어도 개념을 파악하기가 쉬워진다.

⚙️가로 형식 맞추기

이책의 저자는 가로행은 최대 120자는 넘기지 말라고 말한다.
뭐.. 나도 그게 맞다고 생각한다.

profile
Beyond the wall

1개의 댓글

comment-user-thumbnail
2023년 3월 21일

마지막 줄 수긍하는 모습 보기조아요 ㅋ

답글 달기