반응형
형식을 맞추는 목적
코드 형식의 목적은 의소소통의 일환이다.
오랜 시간이 지난 코드는 (요구사항 변화등으로)수정이 될지라도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 요이성과 확장성에 영향을 미친다.
경험상 형식이 안좋은 코드는 다른 개발자가 코드를 수정해야 할 때 안좋은 형식을 그대로 따라가게 된다. 따라서 눈에 읽기 좋은 코드를 만들기 위해 형식을 맞추도록 노력해야한다.
적절한 행 길이를 유지하라
개발 언어마다 차이는 있겠지만 하나의 파일 안에 몇천,몇만줄의 코드가 들어있으면 굉장히 피곤하다.
따라서 최대한 작은 파일로 코드의 길이를 유지하면 좋다. 책에서는 한 파일당 200줄 내외가 적당하다고 말한다.
물론 하나의 파일에 몇 줄의 코드가 정답이다 라는것은 없지만 최대한 파일을 작게 만든다고 의식하고 개발해야겠다.
개념은 빈 행으로 분리하라
예를 들면 헤더, 전역변수, 함수를 빈 행으로 분리한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#include <iostream>
#include <vector>
using namespace std;
int map[100];
void moveBall(int direction) {
int currentPosition = findCurrentBallPosition();
if(!isValidPosition(currentPosition))
return;
int destinationPosition = calculateDestinationPosition(currentPosition, direction);
if(!isValidPosition(destinationPosition))
return;
switchCurrentPostionToDestinationPosition(currentPosition, destinationPosition);
return;
}
|
cs |
세로 밀집도, 수직거리
서로 밀접한 코드 행은 세로로 가까이 놓여야 한다.
관련된 변수, 함수가 있다면 떨어트리지 않는다.
- 변수는 변수를 사용하는 위치에 최대한 가까이 선언한다.
예)
int currentPosition = findCurrentBallPosition();
if(!isValidPosition(currentPosition))
return;
- 인스턴스 변수는 언어마다 다르지만 언어에서 주로 통용되는 위치에 놓는다.
자바의 경우 클래스의 맨처음 C++의 경우 클래스의 마지막에 놓는다.
- 종속함수의 경우는 예를들면 A함수에서 B함수를 호출할 때 가능하다면 A함수 아래에 배치한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | void moveBall(int direction) { int currentPosition = findCurrentBallPosition(); if(!isValidPosition(currentPosition)) return; int destinationPosition = calculateDestinationPosition(currentPosition, direction); if(!isValidPosition(destinationPosition)) return; switchCurrentPostionToDestinationPosition(currentPosition, destinationPosition); return; } int findCurrentBallPosition() { int currentBallPosition = -1; for(int i=0; i<100; i++) { if(map[i]) { currentBallPosition = i; break; } } return currentBallPosition; } | cs |
반응형
'좋은 코드 만들기 > 클린코드' 카테고리의 다른 글
[클린코드] 7. 오류 처리 (0) | 2021.04.25 |
---|---|
[클린코드] 6. 객체와 자료 구조 (0) | 2021.04.25 |
[클린코드] 4. 주석 (0) | 2021.03.28 |
[클린코드] 3. 함수 (0) | 2021.03.21 |
[클린코드] 2. 의미있는 이름 (0) | 2021.03.06 |