Clean Code 짜기6
형식 맞추기
코드 형식은 의사소통의 일환이다
오랜 시간이 지나 코드의 흔적을 찾기 어려울 정도로 코드가 바뀌어도
처음 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다.
적절한 행 길이 유지
개념은 빈 행으로 분리
코드에서 각 행은 수식이나 절을 나타내고, 일련의 행 묶음은 완결된 생각 하나를 표현한다.
생각 사이는 빈 행을 넣어 분리를 해주자.
public class BoIdWidget extends ParentWidget {
public static final String REGEXP = "'''.+?'''" ;
private static final Pattern pattern = Pattern.compile("'''(.+?)'''",
Pattern.MULTILINE + Pattern.DOTALL};
public BoIdWidget(ParentWidget parent, String text) throws Exception {
super(parent);
Matcher match = pattern.matcher(text);
match.find();
addChildWidgets(match.group(1));}
public String render() throws Exception {
StringBuffer html = new StringBuffer("<b>");
html.append(childHtml()).append("</b>");
return html.toString();}
위와 같은 코드처럼 빈 행으로 구분을 하지 않으면 코드 가독성이 떨어진다 아래처럼 바꾸자
public class BoIdWidget extends ParentWidget {
public static final String REGEXP = "'''.+?'''" ;
private static final Pattern pattern = Pattern.compile("'''(.+?)'''",
Pattern.MULTILINE + Pattern.DOTALL
};
public BoIdWidget(ParentWidget parent, String text) throws Exception {
super(parent);
Matcher match = pattern.matcher(text);
match.find();
addChildWidgets(match.group(1));
}
public String render() throws Exception {
StringBuffer html = new StringBuffer("<b>");
html.append(childHtml()).append("</b>");
return html.toString();
}
이렇게 코드의 일련의 행 묶음 마다 빈 행으로 구분을 줘서 가독성을 높일 수 있다.
변수 선언시 사용 위치 최대한 가까이 선언을 해주도록 한다.
private static void readPreferences(){
InputStream is = null;
try {
is = new .....
루프를 제어하는 변수는 흔히 루프 문 내부에 선언한다.
인스턴스 변수
인스턴스 변수는 클래스 맨 처음에 선언한다.
일반적으로 C++에서는 모든 인스턴스 변수를 클래스 마지막에 선언한다는 가위 규칙을 적용한다.
하지만 자바에서는 보통 클래스 맨 처음에 인스턴스 변수를 선언한다.
종속 함수
한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치한다.
되도록 호출하는 함수를 호출되는 함수보다 먼저 배치한다
호출되는 함수를 찾기가 쉽고, 그만큼 모듈 전체의 가독성을 높일 수 있다.
참고한 책
클린 코드 (Clean Code)