이 책은 좋은 프로그램을 작성하는 요령을 설명한다.책을 통해 얻을 수 있는 것1\. 좋은 코드와 나쁜 코드를 구분하는 능력2\. 좋은 코드를 작성하는 방법3\. 나쁜 코드를 좋은 코드로 바꾸는 실력코드는 요구사항을 상세히 표현하는 수단으로 자동화되기에 불가능 하다.예)
변수(혹은 함수나 클래스)의 존재 이유, 수행기능, 사용 방법을 이름에서 밝힌다.따로 주석이 필요하다면 이름에서 의도를 분명히 드러내지 못한 것이다.위에 예시는 코드 맥락이 코드 자체에 명시적으로 드러나지 않는다.명시적인 이름으로 충분하게 정보를 제공하고 변수, 함수,
어떤 프로그램이든 가장 기본적인 단위가 함수다.함수를 잘 만드는 법을 소개한다.함수는 작을수록 좋다.블록과 들여쓰기if, while문에 들어가는 블록은 한 줄이어야 한다.중첩 구조가 생길만큼 함수가 커져서는 안 된다.1단이나 2단을 넘지 않으면 읽고 이해하기 쉬워진다.
주석은 필요악이다.주석은 언제나 실패를 의미한다. 프로그래밍 언어 자체가 표현력이 풍부하다면 주석은 필요하지 않다.코드는 변화하고 진화하고 이동하는 반면 이에 맞게 주석을 유지 보수하기란 현실적으로 불가능하다.그러므로 주석을 가능한 줄이도록 꾸준히 노력해야 한다.코드에
프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야 한다.코드 형식은 중요하다.코드 형식은 의사 소통의 일환이고 전문 개발자의 일차적인 의무다.맨 처음에 잡아높은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다.원활한 소통을 장려하는 코드 형식은
구현을 감추려면 추상화가 필요하다!그저 조회 함수와 설정 함수로 변수를 다룬다고 클래스가 되지는 않는다.그보다는 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다.자료를 추상적인 개념으로 표현하는 편이 좋다.인터페
오류 처리 코드로 인해 프로그램 논리를 이해하기 어려워진다면 깨끗한 코드라 부르기 어렵다.오류가 발생했을 때 예외를 던지는 코드는 실행코드와 오류(예외)코드를 분리할 수 있기 때문에 깨끗하다.예외가 발생할 코드를 짤 때는 try-catch-finally 문으로 시작하는
인터페이스 제공자는 적용성을 최대한 넓히려하고 인터페이스 사용자는 자신의 요구에 집중하는 인터페이스를 원한다.이 사이에 간극이 존재한다.예를 들어 map 은 굉장히 다양한 인터페이스로 수많은 기능을 제공한다.그만큼 위험도 크다.코드는 동작해도 깨끗한 코드라 보기는 어렵
변수 목록 → 공개 함수 → 비공개 함수추상화 단계가 순차적으로 내려간다.그래서 신문 기사 처럼 읽힌다.클래스가 맡은 책임을 기준으로 작게 만들어야 한다.간결한 이름이 떠오르지 않는다면 필경 클래스 크기가 너무 커서 그렇다.모호한 단어가 있다면 클래스에 여러 책임을 떠
컴퓨터 과학에서 추상화 (abstraction)는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다.깨끗한 코드를 구현하면 낮은 추상화 수준에서 관심사를 분리하기 쉬워진다.시스템 수준(높은 추상화 수준)에서도 깨끗함을 유지하는
켄트 백이 제시한 단순한 설계 규칙 네가지모든 테스트를 실행한다.중복을 없앤다.프로그래머 의도를 표현한다.클래스와 메서드 수를 최소로 줄인다.검증이 불가능한 시스템은 절대 출시하면 안 된다. ‘테스트 가능한 시스템'으로 만들어라.결합도가 높으면 테스트 케이스를 작성하기
동시성과 깔끔한 코드는 양립하기 어렵다.동시성은 결합을 없애는 전략이다.무엇과 언제를 분리하는 전략이다.스레드가 하나인 프로그램은 무엇과 언제가 서로 밀접하다.그래서 호출 스택을 살펴보면 프로그램 상태가 곧바로 드러난다.흔히 단일 스레드 프로그램을 디버깅하는 프로그래머