티스토리 뷰

[프로그래밍 방법론] 코드 형식(Code Convention) – Clean Code


이 글은 Clean Code 책의 내용을 정리한 것입니다.


코드 형식을 맞추는 목적은 너무나도 중요합니다. 이 부분은 매우 중요하기 때문에 개발시 무시해서는 안되는 부분입니다. 이 부분은 의사 소통의 일환이기 때문에 융통성 없이 따르면 의사 소통에 어려움이 발생할 수 있습니다. 중요성이 나타나있는 문구를 아래에서 살펴보겠습니다. 


오늘 구현한 코드가 다음 버전에서 바뀔 확률은 아주 높다. 그래서 오늘 구현한 코드의 가독성은 앞으로 바퀼 코드의 품질에 지대한 영향을 미친다. 오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아 놓은 현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다. 


그럼 형식을 맞추기 위해서는 어떻게 해야 할까요?


1) 적절한 행 길이를 유지하라. (세로 형식)


세로 길이를 먼저 살펴보면, 소스 코드의 길이는 얼마나 길어야 적당할까요? 자바로 만들어진 JUnit, FitNesse, testNG, Time and Money, JDepend, Ant, Tomcat 프로젝트를 통해 소스 파일을 분석해 보면 한 클래스당 200-500여줄이라는 결과를 얻을 수 있습니다.


이는 500줄이 넘지 않고도 충분히 커다락 시스템을 구축할 수 있음을 나타냅니다. 

  • 신문 기사처럼 작성하라. : 신문은 다양한 기사로 이루어집니다. 또한 대다수의 기사는 모두 짧습니다. 코드 구현도 이런방식으로 진행하는 것이 좋습니다.

  • 개념은 빈 행으로 분리하라 : 생각과 생각 사이(함수, 클래스의 사이)는 빈행으로 꼭 분리해야 합니다. 그렇지 않으면 가독성이 현저히 떨어집니다.

  • 세로 밀집도 : 서로 밀접한 코드행은 세로로 가까이 놓여야 한다.

  • 수직거리 : 함수를 찾느라, 클래스를 찾느라 헤매는 경험이 많습니다. 이렇게 만들지 않기  위해서 관련된 개념은 서로 밀접하게 구분되어 있어야 합니다. 

  • 변수 선언 : 변수 선언은 변수가 사용되는 가장 가까운 위치에 선언되어야 합니다.

  • 인스턴스 변수 : 인스턴스 변수는 클래스 맨 처음에 선언하고, 변수간에 세로로 거리를 두지 않습니다. 일반적으로 C++에서 모든 인스턴스 변수를 클래스 마지막에 선언합니다. (가위 규칙, Scissors Rule)

  • 종속 함수 : 한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까운데 위치해야 합니다. 


2) 적절한 열의 길이를 유지하라. (가로 형식)


한 행은 가로로 얼마나 길어야 적당할까? 프로그래머는 명백히 짧은 행을 선호하지만, 100~120자 정도의 코드는 문제가 없다고 판단이 됩니다. 


  • 연산자 사이의 공백 : 연산사 사이에 공백을 넣으면 가독성이 뛰어나 집니다.

    public static double root(int a, int b, int c) {
        double determinant = determinant(a, b, c);
        return (-b - Math.sqrt(determinant)) / (2*a);
    }

  • 들여쓰기 : 클래스, 함수, 변수, For, While 문사이에 우리는 들여쓰기를 반드시 해야합니다. 간단한 if, while문에도 반드시 넣어야 합니다.

  • 가짜 범위 : 때로는 빈 while문이나 for문을 접하는데, 이런 경우 while문 끝에 k를 살짝 덧붙인 코드를 넣습니다. 

    while(true)
    ;

  • 팀 규칙 : 프로그래머라면 각자 선호하는 규칙이 있습니다. 하지만 팀에 속한다면 자신이 선호해야 할 규칙은 바로 팀 규칙입니다. 팀은 한가지 규칙에 합의를 해야 하고, 모든 팀원은 그 규칙을 따라야 합니다.


이 글이 도움이 되셨나요?

아래 그림을 클릭해주세요.


댓글