TIL 클린코드 - 5장. 형식 맞추기
TIL (Today I Learned)
2022.05.02
오늘 읽은 범위
5장. 형식 맞추기
책에서 기억하고 싶은 내용을 써보세요.
- 형식을 맞추는 목적
- 코드 형식은 의사소통의 일환이다. 의사소통은 전문 개발자의 일차적인 의무이다.
- 오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아 놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다.
- 신문 기사처럼 작성하라
- 소스파일의 이름은 이름만 보고도 올바른 모듈을 살펴보고 있는지 아닌지를 판단할 정도로 신경 써서 짓는다.
- 소스파일 첫 부분은 고차원 개념과 알고리즘을 설명한다. 아래로 내려갈수록 의도를 세세하게 묘사한다.
- 마지막에는 가장 저차원 함수와 세부 내역이 나온다.
- 개념은 빈 행으로 분리하라
- 빈 행은 새로운 개념을 시작한다는 시각적 단서다.
- 세로 밀집도
- 세로 밀집도는 연관성을 의미한다. 서로 밀접한 코드 행은 세로로 가까이 놓여야 한다는 뜻이다.
- 수직 거리
- 같은 파일에 속할 정도로 밀접한 두 개념은 세로 거리로 연관성을 표현한다.
- 변수 선언
- 변수는 사용하는 위치에 최대한 가까이 선언한다. 지역 변수는 각 함수 맨 처음에 선언한다.
- 루프를 제어하는 변수는 루프 문 내부에 선언한다.
- 아주 드물지만 다소 긴 함수에서 블록 상단이나 루프 직전에 변수를 선언하는 사례도 있다.
- 인스턴스 변수
- 인스턴스 변수는 클래스 맨 처음에 선언한다. 변수 간에 세로로 거리를 두지 않는다. 잘 설계한 클래스는 많은 클래스 메서드가 인스턴트 변수를 사용하기 때문이다.
- 종속 변수
- 한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치한다. 또한 가능하다면 호출하는 함수를 호출되는 함수보다 먼저 배치한다.
- 세로 순서
- 호출되는 함수를 호출하는 함수보다 나중에 배치한다. 그러면 소스 코드 모듈이 고차원에서 저차원으로 자연스럽게 내려간다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
- 책의 형식을 지키지 않은 예시를 보면서 코드 형식을 지키는 것이 가독성에 많은 영향을 끼친다는 것을 더 체감할 수 있었다.
- javascript 개발의 경우 prettier로 자동 formatting을 해주는데 오늘 다양한 예제를 보면서 prettier를 개발한 개발자에게 감사함을 느꼈다.🙏🏻
- 책에서 특히 공감 됐던 구절은 ‘팀에 속한다면 자신이 선호해야 할 규칙은 바로 팀 규칙이다’ 이다. 전에 있었던 회사의 개발자 분이 코드를 리뷰 해주시면서 전체 코드가 마치 한 사람이 작성한 것처럼 코드를 작성해야한다고 말씀해주셨던 기억이 난다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
- 일반적으로 C++ 에서는 모든 인스턴스 변수를 클래스 마지막에 선언한다는 소위 가위 규칙을 적용한다.
- 가위 규칙 어렵다..🥲