독서 기록/클린 코드

[클린 코드] 5장 형식 맞추기

JoJobum 2023. 1. 24.

코드가 깔끔하고, 일관적이며, 질서정연하려면

글과 동일하다 한 사람이 쓴 것 같이 형식은 통일되고 흐름은 비슷해야한다.

즉 코드 형식을 맞추기 위한 규칙을 정하고 팀원들이 이를 충실히 따라야 한다는 것이다.

 

형식을 맞추는 목적

유지보수 용이성과 확장성을 가지는 것이다.

 

세로 형식

 

적절한 행길이를 유지할 것

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

 

신문 기사처럼 작성할 것

신문은 위에서 아래로 읽기에, 첫 문단에 전체 기사 내요을 요약하고 내려오면서 세세한 사실을 설명.

 

이와 비슷하게 첫 부분은 고차원 개념과 알고리즘을 설명, 아래로 내려올수록 의도를 세세하게 묘사한다. 마지막에는 가장 저차원 함수와 세부 내역을 설명

 

개념은 빈행으로 분리

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

public String getName(){
	return "빈행으로";
}

public String getName2(){
	return "분리하자";
}
public String getName(){
	return "빈행으로";
}
public String getName2(){
	return "분리하지";
}
public String getName3(){
	return "않은";
}
public String getName4(){
	return "버전";
}

 

세로 밀집도

세로 밀집도는 연관성을 의미한다

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

 

수직 거리

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

  • 변수 선언은 사용하는 위치 최대한 가까이 선언
  • 인스턴스 변수는 클래스 맨 처음에 선언 ( C++ 에서는 가위 법칙을 적용하여 맨 마지막에 선언)
  • 종속 함수, 한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치할 것
  • 개념적 친화도가 높을수록 코드를 가까이 배치

수직 거리와 세로 밀집도와 비슷한 이야기

But, 세로 밀집도는 코드를 한눈에 보기 위함

수직 거리는 연관성이 깊은 개념들이 흩어져 있어 찾아다니지 않게 하기 위함  

 

세로 순서

함수 호출 종속성은 아래 방향 유지, 즉 호출되는 함수는 호출하는 함수보다 나중에 배치한다.

=> 자연스럽게 고차원에서 저차원으로 내려감

 

가로 형식

 

가로 공백과 밀집도

가로로는 공백을 사용하여 밀접한 개념과 느슨한 개념을 표현

private void measureLine(String line) {
    lineCount++;
    int lineSize = line.length();
    totalChars += lineSize;
    lineWidthHistogram.addLine(lineSize, lineCount);
    recordWidestLine(lineSize);
}

할당 연산자를 강조하기 위해 앞뒤 여백준 것처럼 공백을 주면 2 가지 주요 요소가 확실히 나뉜다는 사실이 분명해짐

함수의 이름과 이어지는 괄호 사이는 1개의 개념이기에 공백이 없다.

연산자의 우선 순위를 강조하기 위해서도 공백을 사용한다.

 

가로 정렬

선언문과 할당문을 별도로 정렬하지 않는 것이 오히려 좋음

 

들여쓰기

Scope로 이뤄진 계층을 표현하기 위해 들여쓰기를 사용

가독성에 크게 영향을 미치는 요소 중 하나

 

반응형

댓글