프로그램 작성 요령을 설명하는 책이고 온통 코드들인 책이다. 코드에 대한 많은 사실을 배워보라
코드가 존재하리라
- 궁극적으로 코드는 요구사항을 표현하는 언어이다.
- 요구사항에 더욱 가까운 언어를 만들 수도 있고, 요구사항에서 정형 구조를 뽑아내는 도구를 만들 수도 있다.
나쁜 코드
- 나쁜 코드의 경우 초기에는 모르지만 시간이 지나 점점 기능을 추가하면 할 수록 코드가 엉망이 되간다.
- 흔히 고행이라고 할 정도로 힘겹게 헤쳐나가야한다.
- 우리는 대충 짠 프로그램이 돌아갔다고 안도하고 나중에 정리해야지라고 하지만 실제로 하지 않는다.
나쁜 코드로 치르는 대가
- 쓰레기 코드는 개발 속도를 크게 떨어뜨린다.
- 매번 기존 코드를 해석하고 얽히고 섥힌 코드를 파헤치느라 바쁘다
- 프로그래머들은 기한을 맞추기 위해서 나쁜 코드를 양산할 수 밖에 없다고 말한다.
- 하지만 전문가들은 이를 틀렸다 한다.
- 나쁜 코드기에 오히려 속도가 느려지기 때문이다.
- 깨끗한 코드라는 것은 보기에 즐거운 코드이다.
- CPU자원을 낭비하는 코드 또한 우아하지 못한 코드이다.
- 프로그래머들이 흔히 놓치기 쉬운 실수
깨끗한 코드는 단순하고 직접적이다. 깨굿한코드는 잘 쓴 문장처럼 읽힌다. 깨끗한 코드는 결코 설계자의 의도를 숨기지 않는다. 오히려 명쾌한 추상화와 단순한 제어문으로 가득하다.
- 깨끗한 코드는 다른 사람이 고치기에도 쉬운 코드이다.
- 깨끗한 코드는 주의 깊게 짜야하는 것
- 단순한 코드
- 모든 테스트를 통과한다.
- 중복이 없다.
- 시스템 내 모든 설계 아이디어를 표현한다.
- 클래스, 메서드, 함수 등을 최대한 줄인다.
- 중복을 줄이기 위해 이름을 달리해 표현력을 강조
- 객체가 여러 기능을 수행한다면 이를 세분화, 메서드 또한 메서드 추출 리팩터링을 통해서 여러 개로 분할
- 집합의 추상화
코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면 깨끗한 코드이다.
- 이 책에서는 다양한 설계 원칙을 산발적으로 거론한다. SRP(Single Responsibility Principle), OCP(Open Closed Principle), DIP(Dependency Inversion Principle) 등이 그 예이다.