나쁜코드는 나쁜 코드를 낳는다. - 기존 코드를 읽어야 새 코드를 짜므로 읽기 쉽게 만들면 사실은 짜기도 쉬워진다. (p.18)우리 모두는 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. 나중은 결코 오지 않는다. (p.4)변수 이름 하나를 개
의도를 분명히 밝혀라 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 많다. 다음 코드에서 이름을 바꿀 때, 고려 해야 할 사항은? theList에 무엇이 들었는가? theList에서 0번째 값이 어째서 중요한가? 값 4는 무슨 의미인가? 함
함수는 최대 네 줄 단순히 다른 표현이 아니라 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 하는 셈이다. (p.45).getHtml()은 추상화 수준이 아주 높다. getHtml안에서는 그 코드가 하려는 작업을 위해서 여러가지 역할을 하는
주석을 달려고 하지 말고 코드로 의도를 표현하라.쓸데 없는 주석은 읽는 개발자가 주석을 무시하는 습관에 빠지게 한다. 결국 코드가 바뀌면서 주석은 거짓말로 변한다.법적인 주석 : 저작권 정보와 소유권 정보의도를 설명하는 주석 : 내가 왜 이 함수를 만들었는지에 대한 설
위에서부터 가장 중요한 정보 담기 (그래서 이름 중요)소스파일 첫 부분은 고차원 개념과 알고리즘을 설명한다.줄바꿈은 개념을 분리하며 세로 밀집도는 연관성을 의미한다.타당한 근거가 없다면 서로 밀접한 개념은 한 파일에 속해야 마땅하다. 이게 바로 protected 변수를
변수를 private으로 설정해놓고 조회, 설정 함수로 비공개 변수를 외부에 노출하면 안된다.조회함수와 설정함수로 변수를 다룬다고 클래스가 되지는 않는다. 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 클래스다.(ex. 연료
단위테스트가 없다면 모든 변경이 잠정적인 버그다. (p.157)TDD 법칙 세가지실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다.컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위테스트를 작성한다.현재 실패하는 테스트를 통과할 정도로만 실제 코드
클래스 체계테스트 코드가 함수를 호출하거나 변수를 사용해야 한다면 그 함수나 변수를 protected로 선언하거나 패키지 전체로 공개한다.클래스는 작아야 한다.클래스를 한 문장으로 설명할 때 “만일(if), 그리고(and), 하며(or), 하지만(but)”가 들어가면