5장. 형식 맞추기
형식을 맞추는 목적
- 코드 형식은 의사소통의 일환이다.
- 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 막대한 영향을 끼친다.
원활한 소통을 장려하는 코드 형식
- 신문 기사처럼 작성하라
- 이름만 보고도 파악이 가능하도록 신경써서 짓는다.
- 대다수의 기사는 매우 짧다.
- 개념은 빈 행으로 분리하라
- 빈 행은 새로운 개념을 시작한다는 시각적 단서이다.
- 세로 밀집도
- 서로 밀접한 코드 행은 세로로 가까이 놓여야 한다.
- 세로 거리로 연관성을 표현한다.
- 연관성은 한 개념을 이해하는 데 다른 개념이 중요한 정도이다.
- 변수 선언
- 변수는 사용하는 위치에 최대한 가까이 선언한다.
- 루프를 제어하는 변수는 루프 문 내부에 선언한다.
- 인스턴스 변수는 클래스 맨 처음에 선언한다.
- 종속 함수
- 한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치한다.
- 호출하는 함수를 호출되는 함수보다 먼저 배치한다.
- 세로 순서
- 가로 형식 맞추기
- 가로 공백과 밀집도
- 할당 연산자를 강조하기 위해 앞뒤에 공백을 둔다.
- 함수 이름과 이어지는 괄호 사이에는 공백을 두지 않는다.
- 연산자 우선순위를 강조하기 위해서도 공백을 사용한다.
- 가로 정렬
- 선언문과 할당문을 별도로 정렬하지 않아야 오히려 중대한 결함을 찾기 쉽다.
- 들여쓰기
- 메서드는 클래스보다 한 수준 들여쓴다.
- 메서드 코드는 선언보다 한 수준 들여쓴다.
- 블록 코드는 블록을 포함하는 코드보다 한 수준 들여쓴다.
- 간단한 if문, 짧은 while문, 짧은 함수에서도 들여쓰기는 해야한다.
- 가짜 범위
- 빈 while문, for문을 피할 수 없을 때는 끝에 ;으로 표시해준다.
팀 규칙
6장. 객체와 자료구조
자료 추상화
- 구현을 감추려면 추상화가 필요하다.
- 자료를 세세하게 공개하기 보다는 추상적인 개념으로 표현하는 편이 좋다.
- 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다.
- 자료구조는 자료를 그대로 공개하며 별다른 함수는 제공하지 않는다.
디미터 법칙
- 모듈은 자신이 조작하는 객체의 속사정은 몰라야 한다는 법칙
- 객체는 자료를 숨기고 함수를 공개한다.
- ex) 클래스 C의 메서드 f는 다음과 같은 객체의 메서드만 호출해야 한다.
- 클래스 C
- f가 생성한 객체
- f인수로 넘어온 객체
- C 인스턴스 변수에 저장된 객체
- .로 이어지는 기차충돌 코드는 조잡하므로 피하는 편이 좋다.
자료 전달 객체
- 자료 구조체를 때로는 자료 전달 객체라고 한다.
- 공개 변수만 있고 함수는 없는 클래스이다.
- DB에 저장된 가공되지 않은 정보를 application 코드에서 사용할 객체로 변환하는 단계에서 가장 처음으로 사용하는 구조체이다.
결론
- 객체는 동작을 공개하고 자료를 숨긴다
- 자료구조는 자료를 노출한다.
- 새로운 자료를 추가해야 한다면 객체지향, 새로운 동작을 추가해야 한다면 절차지향이 더 적합하다.