클린코드 - 형식맞추기

주노·2022년 11월 6일
1

클린코드

목록 보기
3/5
post-thumbnail

서론

코드를 작성하는 형식에 대해서 알아보자.

적절한 행 길이

신문기사처럼 작성하라

이름은 신문기사의 제목처럼 간단하면서도 설명 가능하게 짓는다.

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

  • 개념은 빈 행으로 분리한다.
    문단을 작성할 때 사이 여백을 주듯이 개념이 나뉠 떄 마다 빈 행을 준다.

세로밀집도를 신경써라

세로밀집도는 연관성을 의미한다.
서로 밀접한 코드는 세로로 가까이 놓아야한다.

수직거리

같은 파일에 속할 정도로 밀접한 두 개념은 세로거리로 연관성을 표현한다.
인스턴스 변수는 클래스 맨 처음에 선언한다.

C++ 에서는 일반적으로 모든 인스턴스 변수를 클래스 마지막에 선언한다고 한다.

종속함수

한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치한다.

예를들면 다음과 같다.

void doSomething() {
	if (isReal()) {
    	return "";
    }
    ...
}

boolean isReal() { ... }

가능하면 호출하는 함수를 호출되는 함수보다 먼저 배치한다.

개념적 유사성
위에서 설명한 한 함수가 다른 함수를 호출해 생기는 직접적인 종속성 외에도 비슷한 동작을 수행하는 함수도 친화도가 높다고 볼 수 있다.

세로순서

위에서 이야기한 내용이지만 호출하는 함수를 호출되는 함수보다 먼저 배치함으로서 소스코드 모듈이 고차원에서 저차원으로 자연스럽게 내려간다.

가로형식 맞추기

프로그래머는 명백하게 짧은 행을 선호한다.
책에서는 개인적으로 한 행의 길이를 120자 정도로 제한하고있다.

우아한 테크코스 프리코스의 자바 컨벤션에서도 120자로 제한했다.

가로공백과 밀집도

뭔가 당연한 이야기지만 공백을 통해 밀접한 개념과 느슨한 개념을 표현할 수 있다.

예를들어 아래 할당문에서는 왼쪽 요소와 오른쪽 요소가 분병히 나뉘기 때문에 공백으로 구분한다.

...
// lineSize와 lineCount 사이에 공백을 줬다.
lineWithGistogram.addLine(lineSize, lineCount);
...
  • 반대로 함수와 인수는 밀접한 관계를 가지기 때문에 사이에 공백을 넣지 않고있다.
// 함수와 인수는 밀접한 관계를 가지고있다.
// 때문에 함수이름과 이어지는 괄호 사이는 공백을 넣지 않았다.
private boolean isBallByIndex(int index)

들여쓰기

들여쓰기한 파일은 구조가 한눈에 들어온다.
들여쓰기는 회사별로 정해진 컨벤션이 다를 수 있다.

  • 간단한 if문, 짧은 while문이라도 들여쓰기 규칙을 무시하지 않도록 유의하자.
public String render() throws Exception { return ""; }
  • 간혹 빈 while, for문을 (본적이 없긴한데..) 접하게 된다면 마치는 부분을 명확히 표기하기 위해 새 행에 세미콜론을 찍어주도록 하자.
while (doSomething...)
;

팀 규칙

뭐가 됐든 코드의 스타일은 일관적이고 매끄러워야한다.
떄문에 팀 규칙을 따르는 것이 1순위다.

후기

이번 장은 이름짓기가 아닌 어떻게 코드를 배치할지에 대해 알아보았다.

우아한 테크코스 2주차 미션을 진행하면서 아무리 네이밍에 신경쓰고 코드를 작성해도 코드가 잘 안읽혔는데 그 이유를 바로 해소시켜주는 그런 내용이었다.

신문기사처럼 핵심 문장을 위에 작성하고 그에 대한 설명을 줄줄이 풀어나가는 식으로 코드를 작성해나간다는 부분이 인상깊었다.

Reference

Clean Code(클린 코드) | 로버트 C. 마틴

profile
안녕하세요 😆

0개의 댓글