팀으로 일한다면 그 규칙을 따라야 한다.
형식을 맞추는 목정
코드 형식은 의사소통의 일환이다. 오늘 구현한 코드는 변경될 가능성이 높다.
이 과정에서 코드는 변경되어도 처음에 잡아둔 코드 형식은 남아 유지보수 용이성과 확장성에 영향을 미친다.
코드는 사라져도 스타일과 규율은 사라지지 않는다.
적절한 행 길이를 유지하라
대부분 프로젝트의 코드는 500줄을 넘지 않고 최빈도는 200줄 미만이다.
즉, 200~500줄 코드로도 커다란 시스템을 구축할 수 있다.
반드시 지켜야 할 엄격한 규칙은 아니지만 바람직한 규칙이다.
일반적으로 큰 파일보다 작은 파일이 이해하기 쉽다.
신문 기사처럼 작성하라
좋은 신문 기사는 최상단에 기사를 몇 마디로 요약하는 표제가 나온다.
독자는 표제를 보고서 기사를 읽을지 말지를 결정한다.
첫 문단은 전체 기사 내용을 요약한다.
세세한 사실은 숨기고 커다란 그름을 보여준다.
쭉~ 읽으며 내려가면 세세한 사실이 조금씩 드러난다.
소스 파일도 신문기사와 비슷하게 작성한다.
이름은 간단하면서 설명이 가능하게 짓는다. 이름만 보고 올바른 모듈을 살펴보는지 판단할 수 있어야 한다.
소스 파일 첫 부분은 고차원 개념과 알고리즘을 설명한다.
아래로 갈수록 세세하게 묘사한다. 가장 마지막에는 가장 저 차원 함수와 세부 내역이 나온다.
개념은 빈행으로 분리하라
각 행은 수식이나 절이고 일련의 행 묶음은 완결된 생각 하나이다.(메서드)
생각 사이는 빈행을 넣어야 한다.
세로 밀집도
줄 바꿈이 개념을 분리한다면 세로 밀집도는 연관성을 의미한다.
즉, 서로 연관된 코드는 가까이 위치해야 한다.
수직 거리
함수 연관 관계와 동작 방식을 이해하려고 스크롤을 드르륵드르륵 거린 적 있는가?
서로 연관된 코드는 수직 거리가 가까워야 한다.
서로 밀접한 개념은 한 파일에 속해야 마땅하다.
클래스를 뒤적거리는 것은 안 좋다.
인스턴스 변수는 클래스 맨 처음에 선언하고 변수 간에 세로로 거리를 두지 않는다.
가장 중요한 것은 인스턴스 변수들은 클래스 맨 앞에 뭉쳐있어야한다.
종족 함수
한 함수가 다른 함수를 호출한다면 세로로 가까이 배치한다.
가능하면 호출하는 함수를 호출되는 함수보다 먼저 배치한다.
개념적 유사성
친화도가 높을수록 코드를 가까이 배치한다.
한 함수가 다른 함수를 호출해 생기는 직접적인 종속성이 친화도가 높은 예시다.
변수와 그 변수를 사용하는 함수도 좋은 예시다.
세로 순서
함수 호출 종속성은 아래방향으로 유지된다. 즉, 호출하는 함수부터 오고 호출되는 함수가 아래에 배치된다
따라서 자연스럽게 고차원함수가 위에 저차원함수가 아래에 배치된다.
이는 다른 개발자가 소스 파일에서 첫 함수 몇 개만 읽어도 개념을 파악하기 쉬워진다. 세세한 사항까지 파고들 필요가 없다.
가로 형식 맞추기
100~120자 수준이 적당
가로 공백과 밀집도
가로로는 공백을 사용해 밀접한 개념과 느슨한 개념을 표현한다
들여 쓰기
범위(scope)로 이뤄진 계층을 표현하기 위해 우리는 코드를 들여쓴다.
들여 쓰는 정도는 계층에서 코드가 자리잡은 수준에 비례한다.
팀 규칙
팀 규칙이 우선이다. 각자의 스타일이 먼저가 절대 아니다. 일관성이야 말로 좋은 가독성을 보장한다.
'IT책, 강의 > 클린코드(Clean Code)' 카테고리의 다른 글
7장 오류 처리 (0) | 2022.10.12 |
---|---|
6장 객체와 자료 구조 (1) | 2022.10.06 |
4장 주석 - 나쁜 주석 (1) | 2022.10.01 |
4장 주석 - 좋은 주석 (0) | 2022.09.28 |
3장 함수 - 2 (2) | 2022.09.25 |