계속 수정됩니다.
코드를 하나하나 짚어가며 저자가 코드를 고쳐간 방식을 이해하고 납득해야 가치를 발휘하는 책이다.
휴리스틱: 불충분한 시간이나 정보로 인하여 합리적인 판단을 할 수 없거나, 체계적이면서 합리적인 판단이 굳이 필요하지 않은 상황에서 사람들이 빠르게 사용할 수 있게 보다 용이하게 구성된 간편추론의 방법
휴리스틱 함수: 가용한 정보를 기반으로 각 분기 단계에서 어느 한 분기를 선택하기 위해 사용하는 다양한 탐색 알고리즘의 대안 함수
요구사항을 명시하는 작업이 프로그래밍, 이렇게 명시한 결과가 바로 코드.
시간 압박은 나쁜 코드를 생산하게 하고 나쁜 코드는 개발 속도를 크게 떨어트린다.
나쁜 코드를 양산하면 기한을 맞추지 못한다. 기한을 맞추는 유일한 방법은 언제나 코드를 깨끗하게 유지하는 습관이다.
깨끗한 코드를 작성하려면 '청결'이라는 힙겹게 습득한 감각을 활용해 자잘한 기법들을 적용하는 절제와 규율이 필요하다. 열쇠는 '코드 감각'이다.
'코드 감각'이 있는 프로그래머는 나쁜 모듈을 보면 좋은 모듈로 개선한 방안을 떠올린다.
나쁜 코드를 고치면서 오히려 더 나쁜 코드를 만든다.
깨진 창문이 더 깨져도 사람들은 상관하지 않는다.
깨끗한 코드는 세세한 사항(메모리 누수, 경쟁 상태, 일관성 없는 명명법 같은 오류 처리)까지 꼼꼼하게 처리하는 코드다.
깨끗한 코드는 한 가지에 '집중'한다. 각 함수와 클래스와 모듈을 주변 상황에 현혹되거나 오염되지 않은 채 한길만 걷는다.
깨끗한 코드는 결코 설계자의 의도를 숨기지 않는다. 오히려 명쾌한 추상화와 단순한 제어문으로 가득하다.
반드시 필요한 내용만 담자.
깨끗한 코드는 작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다.
테스트 케이스가 존재한다.
의미 잇는 이름이 붙는다.
특정 목적을 달성하는 방법은 하나만 제공한다.
의존성은 최소이며 각 의존성을 명확히 정의한다.
API는 명확하며 최소로 줄였다.
깨끗한 코드는 세세한 사항까지 꼼꼼하게 신경쓴 코드다.
읽으면서 짐작한 대로 돌아가는 코드가 깨끗한 코드다.
코드가 그 문제를 풀기 위한 언어처럼 보인다면 아름다운 코드다.
우리는 저자다. 저자에게는 독자와 잘 소통할 책임도 있다. 코드를 짤 때는 자신이 저자라는 사실을, 저자의 노력을 보고 판단을 내릴 독자가 있다는 사실을 기억하자.
보이스카우트 규칙: 체크아웃할 때보다 좀 더 깨끗한 코드를 체크인한다면 코드는 절대 나빠지지 않는다.