- 효과적인 정보 전달을 위해서 어떻게 코드 형식을 맞추고 정리하는지에 대해 알아본다.
1. 형식을 맞추는 목적
- 코드의 가독성을 높여 일의 효율을 높이기 위해 형식을 맞춘다
- 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 영향을 미친다
- 적절한 행 길이를 유지하라
- 200줄 정도의 파일로도 대규모 시스템을 구축할 수 있다
- 신문 기사처럼 작성하라
- 첫부분에 추상화 수준이 높은 개념을 설명하고 하위로 갈수록 세부 사항을 설명한다
- 개념은 빈 행으로 분리하는 것이 좋다
- 빈 행을 넣어서 가독성을 향상시킨다
세로 밀집도
public class A{
private int age;
private String name;
public void setAge(int age){
this.age = age;
}
}
public class A{
private int age;
private String name;
public void setAge(int age){
this.age = age;
}
}
- 서로 밀접한 코드행은 세로로 가까이 붙여놓아야 한다
수직 거리
- 소스코드를 작성할 때 밀접한 개념을 세로로 두는 노력이 필요하다
- 같은 파일 안에 속할 정도로 밀접한 두 개념이 있는 경우 세로 거리로 연관성을 표현한다
변수 선언
- 변수는 사용하는 위치에 최대한 가까이 선언한다
- 지역 변수는 각 함수 맨 처음에 선언한다
인스턴스 변수
- 인스턴스 변수는 클래스 맨 처음에 선언한다
- C++의 경우에는 마지막에 선언하는 것이 일반적이다
- 핵심은 어느 곳이든 잘 알려진 위치에 인스턴스 변수를 모으는 것이 중요하다는 것이다
종속 함수
- 추상화 레벨이 높은 것을 상위에 놓고 하위에 저수준 추상화 함수를 둔다
개념적 유사성
- 개념적인 친화도가 높을수록 코드를 서로 가까이 배치한다
3. 가로 형식 맞추기
-가로행은 120자 정도를 유지하도록 한다
가로 공백과 밀집도
- 공백을 넣으면 나눠진 요소가 분명해지기에 별도로 구분해야하거나 강조해야하는 부분에 공백을 넣는다
가로 정렬
4. 들여쓰기
- 클래스 > 메소드 > 블록코드 순으로 들여쓰기 계층이 생성된다
가짜 범위
- 빈 while문이나 for문을 접하는 경우 키워드 괄호 끝에 세미콜론을 개행해서 넣어준다
5. 팀 규칙
- 코딩 스타일을 의논하여 formatter로 지정하여 구현하는 것이 옳은 방식이다
- 좋은 소프트웨어 시스템은 읽기 쉬운 문서로 이루어지고 읽기 쉬운 문서는 스타일이 일관적이고 매끄러워야 한다
개인적인 감상
- formatter가 지정되지 않은 프로젝트를 하면서 개행과 정렬, 가로 공백, 들여쓰기가 제멋대로인 것을 경험하고 나니 팀 규칙을 ㅈ어해서 하나의 스타일로 코딩하는 것이 얼마나 중요한지 깨달을 수 있었다.
- SI 중에서도 레거시가 규칙을 정하지 않은 경우에는 그대로 formatter 없이 사용하게 되기 때문에 팀원들 간의 논의가 중요했었다
- 신규로 개발하는 경우에는 구글의 formatter를 적용하는 경우가 있었고 규칙이 있어서 읽기가 좋았다
- 개인적으로는 빈행을 넣어서 구분하는 것을 좋아하는데 너무 많은 빈행도 가독성을 저해한다는 것을 깨달았다
- 보통 화면을 불러오는 메서드를 가장 처음에 올리고 그 뒤로 그 화면에 관련된 crud 처리를 하는 순서로 메서드 작성을 했는데 종속성과 관련된 순서였다는 생각이 들었다