3. 형식 맞추기

GamSa Ham·2023년 1월 3일

형식을 맞추는 목적

코드 형식은 중요하다. 어쩌면 ‘돌아가는 코드’가 전문 개발자의 일차적인 의무라 여길지도 모르겠다.

오늘 구현한기능이 다음 버전에서 바뀔 확률은 아주 높다. 그런데 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다. 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다. 개발자의 스타일과 규율은 사라지지 않는다.

적절한 행 길이를 유지하라

그림 5-1은 프로젝트 7개를 묘사한다. JUnit, FitNess, testNG, Time and Money(tam), JDepend, Ant, Tomcat 프로젝트를 조사한 결과다. 상자를 관통하는 선은 각 프로젝트에서 최대 파일 길이와 최소 파일 길이를 나타낸다. FitNesse 프로젝트를 살펴보자. 평균 파일 크기는 약 65줄이다.

JUnit, FitNesse, Time And Money는 상대적으로 파일 크기가 작다. 500줄을 넘어가는 파일이 없으며 대다수가 200줄 미만이다. 반면, Tomcat과 Ant는 절반 이상의 200줄을 넘어서고 심지어 술천 줄이 넘어가는 파일도 있다.

500줄을 넘지 않고 대부분 200줄 정도인 파일로도 커다란 시스템을 구축할 수 있다는 사실이다.

신문 기사처럼 작성하라

신문기사를 보면 표제를 보면 기사를 읽을지 결정을 한다. 이름만 보고도 올바른 모듈을 살표보고 있는지 아닌지 판단할 정도로 신경 써서 짓는다.

개념은 빈 행으로 분리하라

함수와 함수 사이에 개행을 추가하라는 얘기이다.

세로 밀집도

필드 항목이랑 메서드 항목이랑 분리해서 보면 좋다는 얘기

public class ReporterConfig {

	private String className;
	private List<Property> properties = new ArrayList<Property>();

	public void addProperty(Property property){
		properties.add(property);
	}
}

수직거리

서로 밀접한 개념은 세로로 가까이 둬야 한다. 서로 밀접한 개념은 한 파일에 속해야 마땅하다. 이게 바로 protected 변수를 피해야 하는 이유 중 하나다.

변수은 사용하는 위치에 최대한 가까이 선언한다.

인스턴스변수 선언 자바는 보통 처음에 선언을 한다.

종속함수

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

개념의 유사성

개념적 친화도가 높을수록 코드를 가까이 배치한다.

public class Assert {
	static public void assertTrue(String message, boolean condition) {
		if(!condition){
			fail(message);
		}
	}

	static public void assertTrue(bolean condition) {
		assertTrue(null, condition);
	}

	//	...
}

세로순서

호출되는 함수는 호출하는 함수보다 나중에 배치를 한다. 그러면 소스코드 모듈이 고차원에서 저차원으로 자연스럽게 내려간다.

가로 형식 맞추기

짧은 행이 바람직하다. 글자수 제한은 인위적이며 개인적이다.

가로 공백 과 밀집도

private void measureLine(String line) {
	int lineSize = line.length();
	// ...
}

할당 연산자를 강조하려고 앞뒤에 공백을 줬다.

가로 정렬

할당 연산자는 보이지 않고 오른쪽 피연산자에 눈이 간다.

정렬이 필요할 정도로 목록이 길다면 문제는 목록 길이지 정렬 부족이 아니다.

profile
안녕하세요. 자바를 좋아하고 디자인 패턴, Refactoring, Clean Code에 관심이 많은 백엔드 개발자입니다.

0개의 댓글