코드는 요구사항을 상세히 표현하는 수단이다.
기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업이 프로그래밍이고, 그 결과가 코드이다.
나쁜 코드는 개발 속도를 크게 떨어뜨린다.
나쁜 코드가 쌓일수록 팀의 생산성은 떨어진다.
시간을 들여 깨끗한 코드를 만드는 노력이 비용을 절감하는 방법일 뿐만 아니라 전문가로서 살아남는 길이다.
나쁜 코드를 양산하면 기한을 맞추지 못한다.
기한을 맞추는 유일한 방법은 코드를 최대한 깨끗하게 유지하는 습관이다.
나쁜 코드는 나쁜 코드를 유혹한다.
→ 나쁜 코드를 고치면서 오히려 더 나쁜 코드를 만든다는 뜻
깨끗한 코드와 나쁜 코드를 구분할 줄 안다고 개끗한 코드를 작성할 줄 안다는 뜻은 아니다.
깨끗한 코드를 작성하려면 절제와 규율이 필요하다.
'코드 감각'이 있다면 좋은 코드와 나쁜 코드를 구분할 수 있고 절제와 규율을 적용해 나쁜 코드를 좋은 코드로 바꾸는 전략도 파악한다.
'코드 감각'이 있다면 나쁜 모듈을 보면 좋은 모듈로 개선할 방안을 떠올릴 수 있다.
깨끗한 코드는 보기 즐거운 코드
우아하고 효율적인 코드 → 속도와 자원을 낭비하지 말아야한다.
논리가 간단해야 버그가 숨어들지 못한다.
의존성을 최대한 줄여야 유지보수가 쉬워진다.
오류는 철저히 처리 → 세세한 사항까지 꼼꼼하게 처리할 것
한가지를 제대로 한다. → 한 가지에 집중할 것
깨끗한 코드를 위해 가독성을 고려하자
깨끗한 코드는 단순하고 직접적이다.
잘 쓴 문장처럼 읽힌다.
설계자의 의도를 숨기지 않는다.
명쾌한 추상화와 단순한 제어문으로 가득하다
→ 코드는 추측이 아니라 사실에 기반해야한다. 반드시 필요한 내용만 담는다.
작성자가 아닌 사람도 고칠 수 있는 코드.
코드는 작을수록 좋다!
작성자가 아닌 사람도 읽기 쉽고 고치기 쉬워야한다.
단위 테스트 케이스와 인수 테스트 케이스가 존재한다.
의미있는 이름이 붙는다.
목적을 달성하는 방법은 하나만 제공한다.
의존성은 최소이며 각 의존성을 명확히 정의한다.
API는 명확하며 최소로 줄인다.
코드는 문학적으로 표현해야 마땅하다. → 인간이 읽기 좋은 코드를 작성하라
깔끔하고 단정하게 정리한 코드, 세세한 사항까지 꼼꼼하게 쓴 코드.
간단한 코드!
중복과 표현력을 신경쓰자.
간단한 코드
모든 테스트를 통과하는 코드
중복이 없는 코드
시스템 내 모든 설계 아이디어를 표현한다.
클래스, 메서드, 함수 등을 최대한 줄인다.
깨끗한 코드 작성을 위하여
중복을 피하라.
한 기능만 수행하라.
제대로 표현하라.
작게 추상화하라.
읽으면서 짐작한 대로 돌아가는 코드