일명 변, 균, 통.

3D와 사진술 에서 말하는 장면 구성의 3요소는 [ 대상(피사체), 조명, 시점(카메라) ] 이다.

세 가지 요소들을 기억하고 코딩하렴.


[변화]가 없는 코드는 정보량이 적고, 정보량이 적다는건 줄여 나갈 가능성이 있다.

함축적 모호성의 방향이 아니라, 요약적 명시성의 방향으로 진행할 때의 이야기.

같은 일을 한다면, 짧은 코드가 유지보수가 쉽다. 만고불변의 법칙이다.

게다가 적절히 자신만의 논리적 해법을 평이하지 않은 문법으로 표현한다면, 재미도 있다.

밋밋한 코딩만 하면 땔감이기 딱 좋다. 자기 동기 부여도 부족해지고 말야.

글 못쓰는 애들의 특징이 그렇잖아. 동어 반복. 어미와 조사들이 아주 단순화 되어 있지.

그 미세한 차이들을 알고 잘 다루는 아이들의 글은 지겹지 않다.

그나마 다행하게도 우리의 컴파일러와 CPU는 그런 단조로움들을 싫어하는 기색은 아니다.

하루 종일 0과 1만 갖고 노는 애들이니. 하지만 우린 사람이잖아?


[균형]이 없는 코드는 모듈화가 덜 된 코드다.

하나의 함수가 장황하게 길다는것 역시 명시성이 떨어진다.

덩어리 코드 하나를 함수 하나로 묶어서 밖으로 빼주면

짧아진 메인 바디만 읽어도 안에서 호출되는 함수의 이름들을 통해 흐름을 알 수 있는데,

세부 코드를 모조리 다 읽게 만드는건 고문.

즉 함수의 가치는 기능의 덩어리이며 요약이 가능한 양식이다.

수없이 루프를 돌아야 하는 작은 코드를 함수화 하는건 비용이 비싸지만,

(이럴 때의 대안이 #define 매크로 함수)

큰 덩어리 하나 함수로 빼는데 드는 비용은 고작 4~6 클럭.


[통일]이 없는 코드는, 규칙성이 없어 명시적이지 않다.

수많은 같은 값의 숫자 상수들이 쓰일때, 우리는 숫자 상수 하나 하나의 의미를 파악해야 한다.

당연히 단어와 문장으로 의미를 설명하도록 매크로나 const 로 정의해 주는게 좋다.

경험있는 프로그래머는 안다.

반복 횟수니, 매개 수치와 같은 파라메터들은 결국 변수가 될 가능성이 높다는걸 말야.

const 형의 표현은 그런 상수의 변수화를 용이하게 한다.

변수로 유지하는 것 보다는 상수로 유지하는쪽이 컴파일러가 최적화 할 가능성을 높여주니,

굳이 변수를 고집할 필요는 없다. const 가 가장 좋은 대안.

띄어쓰기, 개행, 들여쓰기 등의 규칙을 일관성 있게 유지하는 것도 명시성에 큰 도움을 준다.

오타가 한 눈에 보이고, 논리적 규칙성이 보이며, 필요없는 nesting 을 쉽사리 감지하게 해 준다.