[Clean Code] TIL #5

5장. 형식 맞추기

목차

  1. 형식을 맞추는 목적
  2. 어떻게 형식을 맞출까?
    2-1. 세로 형식
    2-2. 가로 형식
  3. 느낀점

1. 형식을 맞추는 목적

코드 형식은 의사소통의 일환이다.
의사소통은 전문 개발자의 일차적 의무이다.

오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다.

2. 어떻게 형식을 맞출까?

2-1. 세로 형식

적절한 행 길이를 유지하라

소스코드는 얼마나 길면 적당할까?

책에서 통계 결과를 보면 500줄을 넘지 않고 대부분 200줄 정도로도 거대한 시스템을 구축할 수 있다고 한다.
이는 반드시 지켜야 할 규칙은 아니지만 참고로 알아두자.

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

신문기사처럼 작성하라

신문 기사는 보통 신문 내용을 몇 마디로 요약하는 제목이 먼저 나오고, 첫 문단이 전체 기사 내용을 요약한다.

소스 코드도 마찬가지이다.

소스파일의 첫 부분은 프로젝트의 개념과 알고리즘의 전반적인 개요를 나타내고, 밑으로 갈수록 그 내용이 세세하게 나와야 코드를 읽기 편하다.

보통 글을 위에서 아래로, 왼쪽에서 오른쪽으로 읽으니 당연한 소리이다.

개념은 빈 행으로 분리하라

세로 밀집도

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

수직 거리

시스템이 무엇을 하는지 이해하고 싶은데, 이쪽저쪽 왔다 갔다 하는 경험을 한 번씩 해봤을 것이다.

이러한 행위를 내 코드에서 방지하기 위해, 서로 밀접한 개념은 가까이 두자.
물론 두 개념이 서로 다른 파일에 속한다면 규칙은 통하지 않지만 타당한 근거가 없다면 서로 밀접한 개념은 한 파일에 속해야 마땅하다.

변수 선언

지역 변수는 각 함수 맨 처음에 선언하자.

인스턴스 변수는 클래스 맨 처음에 선언하자.

종속 함수

한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치하자.
또 가능하면 호출하는 함수를 먼저 배치하자.

개념적 유사성

개념적으로 유사한 함수들과 변수들은 가까이 배치하자

2-2. 가로 형식

가로 형식 맞추기

한 행은 가로로 얼마나 길어야 적당할까?

이번에도 마찬가지로 통계 결과에서 10자 미만은 30%, 20~60자가 40%에 해당하다.
즉, 길어야 60자가 보통인 셈이다.

012345678901234567890123456789012345678901234567890123456789
public static void main(String[] args)

위 숫자가 총 60자이다.
psvm과 비교했을 때 좀 더 길다.

가로 공백과 밀집도

가로로는 공백을 사용해 밀접한 개념을 표시하자

totalChars += lineSize;
lineWidthHistogram.addLine(lineSize, lineCount);
  1. 할당문은 왼쪽 요소와 오른쪽 요소가 분명히 나뉜다. 공백을 통해 두 가지 요소가 확실히 나뉜다는 사실을 분명히 하자
  2. 함수 이름과 이어지는 괄호 사이에는 공백을 넣지 말자. 함수와 인수는 밀접하기 때문이다.
    하지만 괄호 안 인수는 공백으로 분리했다. 인수가 별개라는 사실을 보여주기 위해서이다.

연산자 우선순위를 강조하기 위해 공백을 적절히 붙이는 방법도 있다.
하지만 요즘 IDE는 자동정렬 시 수식을 모두 공백처리해준다

가로 정렬

쓸 데 없이 가로로 오와 열을 맞추면 오히려 더 보기 힘들다.

들여쓰기

이건 뭐 당연한 내용이다.

가짜 범위

가끔 while(); 이나 for(); 처럼 빈 반복문이 필요한 경우 ; 보다 {}로 감싸주자.

3. 느낀점

처음 형식이라고 했을 땐 어떤 내용이 나올지 사실 감이 잘 오지 않았다.
하지만 이번 단원을 읽고, 결국 들여쓰기와 띄어쓰기로 코드의 틀을 잡는 내용임을 금방 파악했다.

이 부분은 사실 코딩을 처음 배울 때부터 신경쓰고 당연하다고 느껴왔던 부분이라 그리 어렵게 읽진 않았다.
하지만 그만큼 중요하고 기본적인 내용이니, 다시 한 번 상기시킬 필요가 있다고 생각한다.

좋은 웹페이지 즐겨찾기