오늘 구현한 기능이 다음 버전에서 바뀔 확률은 아주 높다. 그런데 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 끼친다.
오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다.
원활한 소통을 장려하는 코드 형식은 다음과 같다.
200줄 정도의 파일로도 커다란 시스템을 구축할 수 있다.
작은 파일이 이해하기 쉽다.
신문기사처럼 작성하라.
위에서 아래로, 이름은 간단하면서도 내용을 설명하는 것으로, 내용은 고차원 개념과 알고리즘에서 시작하여 마지막에는 저차원 함수와 세부내역이 나오도록
개념은 빈 행으로 분리
패키지 선언부, import, 각 함수 사이는 빈 행을 넣는다.
세로 밀집도
밀접한 코드끼리는 세로로 가까이 놓는다.
// BAD
public class ReporterConfig{
/**
* 리포터 리스너의 클래스 이름
*/
private String m_className;
/**
* 리포터 리스너의 속성
*/
private List<Property> m_properties = new ArrayList<Property>();
public void AddProperty(Property property) {
m_properties.add(property);
}
}
// GOOD
public class ReporterConfig{
private String m_className;
private List<Property> m_properties = new ArrayList<Property>();
public void AddProperty(Property property) {
m_properties.add(property);
}
}
가로 형식 맞추기
보통 120자를 넘어가지 않도록 한다.
가로 공백과 밀집도
공백은 통해 두 요소가 확실히 나뉜다는 것을 보여준다.
private void measureLine(String line) {
lineCount++;
int lineSize = line.length(); //할당연산자 강조
totalChars += lineSize; //할당연산자 강조
recordWidestLine(lineSize); //함수와 인수는 밀접하므로 공백 없음
lineWidthHistogram.addLine(lineSize, lineCount); //인수들은 별개라는 사실을 보여주기 위해 공백으로 분리
}