4. 태도
• 관리자가 재촉했다구욧!
• 요구사항이 뒤집혔다구욧!
• 일정이 촉박했다구욧!
핑계
우리는 전문가. 좋은 코드를 사수하는 것은 프로그래머의 책임이다.
5. 깨끗한 코드라는 예술
• 깨끗한 코드는 그림 그리는 작업과 같다.
• 그림을 잘 그렸는지 알 수 있다고, 그림을
잘 그릴 수 있는 건 아니다.
• 깨끗한 코드를 알아볼 수 있다고, 깨끗한 코
드를 짤 수 있는 건 아니다.
계속해서 짜보지 않으면,
절대 깨끗한 코드를 짤 수 없음
6. 클린 코드란 어떤 코드인가
• 깨끗한 코드는 한 가지를 제대로 한다.
• 깨끗한 코드는 단순하고 직접적이다. 깨끗한 코드는 잘 쓴 문장처럼 읽힌다.
• 깨끗한 코드는 작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다.
• 깨끗한 코드는 언제나 누군가 주의 깊게 짰다는 느낌은 준다.
• 중복을 피하라. 한 기능만 수행하라. 제대로 표현하라. 작게 추상화하라.
• 코드를 읽으면서 짐작했던 기능을 각 루틴이 제대로 수행한다
7. 우리는 저자다
• @author. 우리는 저자다.
• 코드를 읽는 시간과 짜는 시간의 비율은 10대1이 넘는다!
• 저자에게는 독자와 소통할 책임이 있다.
8. 그렇다면 어떻게 짜면 될까
이것은 절대적인 것이 아니다.
(객체지향 언어의 관점에서 쓰여졌다.)
22. 작게 만들어라!
• 함수를 만드는 첫째 규칙은 ‘작게!’다. 둘째 규칙도 ‘작게!’다
• 20줄도 길다
• 들여쓰기가 1, 2단 이상 넘으면 안 된다. 넘으면 쪼개야 된다.
23. 한 가지만 해라!
• 함수는 한 가지를 해야 한다.
• 그 한 가지를 잘해야 한다.
• 그 한 가지만을 해야 한다.
24. 함수 당 추상화 수준은 하나로!
• 한 가지를 하기 위해서는 모든 문장의 추상화 수준이 동일해야
한다.
• getHTML()과
• String pageName = PathParser.render(pagePath)와
• append(“n”)은 추상화 수준이 다르다.
• 한 함수에 추상화 수준이 섞이면 이해가 힘들어진다.
29. 오류코드 보다 예외를 사용하라!
• 오류코드를 리턴 하는 방식은 이후 if문을 만들어낸다.
• If(deletePage(page) == E_OK)
• try/catch블록은 원래 추하다. 따라서 try/catch블록만 따로 함수
로 뽑아내는 것이 좋다.
Public void delete(Page page) {
try{
deletePageAndAllReference(page);
}
catch(Exception e) {
logError(e);
}
}
40. 수직 거리
• 변수 선언 : 변수는 사용하는 위치에 최대한 가까이 선언한다.
• 인스턴스 변수 : 인스턴스 변수는 클래스 맨 처음에 선언한다.
• 종속 함수 : 한 함수가 다른 함수를 호출한다면, 두 함수는 세로로 가까이 배치한다.
• 개념적 유사성 : 같은 변수를 사용하거나 하는, 동작이 비슷한 함수는 가까이 배치한다.
41. 세로 순서
• 함수 호출의 종속성은 아래 방향으로 유지한다.
• 호출되는 함수를 호출하는 함수보다 나중에 배치한다.
42. 가로 공백과 밀집도
• 가로로는 공백을 사용해 밀접한 개념과 느슨한 개념을 표현한
다.
• 할당문에 공백을 주어 왼쪽/오른쪽 요소를 확실히 나눌 수 있고,
• 함수이름과 괄호는 밀접하기에 공백을 넣지 않는다.
Int lineSize = line.length() Private void measureLine(String line)
43. 들여 쓰기
• 간단한 if문, while문, 함수에서 들여쓰기를 무시하고 싶은 충동
을 이겨내라!
Public String render() {return “”;}
Public String render() {
return “”;
}
44. 팀 규칙
• 팀은 한 가지 규칙에 합의해야 한다. 그리고 모든 팀원이 그 규
칙을 따라야 한다.
• 한 소스파일에서 봤던 형식이 다른 소스파일에서도 쓰이리라는
생각을 갖게 해야 한다.