Published on

5장. 형식 맞추기

5장. 형식 맞추기

형식을 맞추는 목적

어쩌면 돌아가는 코드가 전문 개발자의 일차적인 의무라 생각할수도 있지만 오늘 구현한 기능이 다음 버전에서 바뀔 확률은 상당히 높습니다.

이때, 마구잡이로 만들어 놓은 코드는 당연하게도 코드를 개선하기 힘들게 만듭니다.

맨 처음 잡아놓은 구현 스타일가독성 수준유지보수 용이성확장성에 계속 영향을 미칩니다.

적절한 행 길이를 유지하라

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

Junit, FitNesse는 500줄이 넘어가는 파일이 없으며 대다수가 200줄 미만입니다.

이렇게 작은 파일들로 구성되어도 커다란 시스템을 만들수 있다는 것을 알 수 있습니다.

반드시 지킬 엄격한 규칙은 아니지만 바람직한 규칙으로 삼으면 좋습니다.

신문 기사처럼 작성하라

아주 좋은 신문 기사는 독자가 위에서 아래로 기사를 읽도록 되어 있습니다.

  • 전체 기사 내용 요약
    • 조금더 세세한 내용
      • 세부사항

이처럼 아래로 내려갈 수록 조금씩 세세한 내용이 나오도록 하면 코드를 이해하는데 도움이 됩니다.

개념은 빈 행으로 분리하라

일련의 행 묶음은 완결된 생각 하나를 표현합니다.

생각 사이는 빈 행을 넣어분리 해야 마땅합니다.

즉 같은 개념끼리는 빈 행을 넣지 말고 작성해야 가독성이 더 좋습니다.

세로 밀집도

줄바꿈이 개념을 분리한다면 세로 밀집도는 연관성을 의미합니다.

주석이든 어떻든, 서로 떨어져있다면 연관성이 없어보입니다.

수직 거리

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

IDE의 도움을 받아 편리하게 소스 코드를 보러 갈 수 있지만, 그렇다 하더라도 헷갈리기 쉽습니다.

연관성이 있는 개념은 가까이 있어야 가독성이 좋습니다.

예를 들어 변수를 사용하는 곳 바로 위에 선언하지 않고 최상위에 선언하는 행위는 좋지 않다는 것입니다.

세로 순서

연관성이 있는 것들은 수직 거리가 가까워야 한다고 했습니다.

순서 또한 큰 것부터 작은 순으로 나열되어야 합니다.

신문 기사 처럼 분리하여 작성하였다면 작성 위치도 차례대로 나와야 합니다.

가로 형식 맞추기

이 또한 유명한 라이브러리들을 살펴보면 20 ~ 60자 사이가 40%에 달합니다. 10자 미만은 30% 정도 입니다.

프로그래머는 명백히 짧은 행을 선호합니다.

요즘은 모니터가 커서 200자 까지도 한 눈에 들어오지만, 그럼에도 120자 정도까지를 최대라 생각하고 작성하는 것을 권장합니다.

가로 공백과 밀집도

공백을 넣으면 왼쪽 요소와 오른쪽 요소는 분명하게 나뉘게 됩니다.

public int add(int a,int b){
    return a+b;
}

add(1,2);

위의 코드를 보면 a + b+를 기준으로 공백을 줘서 왼쪽요소와 오른쪽 요소를 분리하였습니다.

반면 함수를 호출할 때는 add()처럼 공백 없이 붙여 사용하였습니다.

함수와 인자는 연관성이 깊기 때문에 띄우지 않는것이 바람직하기 때문입니다.

가로 정렬

private Socket socket;
private FitNesseContext context;

위 처럼 작성을 하면 피연산자 쪽을 먼저 읽게 되어 의도가 가려집니다.

private Socket socket;
private FitNesseContext context;

위 처럼 작성을 하는 것이 중대한 결함을 찾는것이 더 쉽습니다.

또한, 정렬이 필요할 정도로 목록이 길다면 문제는 목록의 길이 입니다.

이런 경우 클래스를 쪼개는 것이 바람직합니다.

들여쓰기

들여쓰기가 중요하다는 것은 프로그래머라면 다 알고 있을것이라 생각됩니다.

간혹 한 줄 짜리 ifwhile, 함수에서 들여쓰기 없이 그냥 한줄로 작성을 하고 싶을 때가 있습니다.

이런 유혹에 넘어가지 마시고 들여쓰기로 범위를 제대로 표현하는 것이 좋습니다.

가짜 범위

while, for 문 같은 경우는 해당 구문 끝에 ; 찍기보다 새 행에다 제대로 들여써서 넣어주는 것이 좋습니다.

그래야 눈에 띕니다.

while(dis.read(buf,0,readBufferSize)!=-1)
;

팀 규칙

당연한 말이지만 혼자만의 규칙보단 팀의 규칙을 우선시 해야합니다.

모두가 이해하고 사용하고 있는 규칙이기 때문에 팀원들도 쉽게 코드를 읽고 이해할 수 있기 때문입니다.