공부하는 스누피

Clean Code 메모 정리 본문

정리 모음

Clean Code 메모 정리

커피맛스누피 2021. 3. 19. 23:43

리팩토링 공부하는 겸 예전에 Clean Code를 읽으면서 정리했던 메모를 블로그에 쓰기로 했다. 

책 읽을 때는 나름 중요한 부분만 메모했다고 생각했는데 분량이 너무 많아 코딩에 관련된 부분만 요약했다.

요약본의 요약이기 때문에 빠진 내용이 많다. 일단 먼저 훑어 보고 시간 날 때 책을 정독하는 것을 추천한다.

 

* 메모 정리의 목차는 책의 목차와 다르다.

 

1. 이름

- 의도가 분명하게 이름을 지어라.

좋은 예 나쁜 예
발음하기 쉬운 이름 한 단어를 여러 가지 목적으로 사용(ex. queue에 add쓰기)
검색하기 쉬운 이름 널리 쓰이는 이름(ex. List)
함수는 서술적인 이름을 가져야 함  
   

- 이름 길이는 범위 크기에 비례해야 한다. (int i ----> int maxValue -----> static final int USER_ID_MAX_LIMIT)

- 클래스/객체 이름명사나 명사구로 한다. 메서드 이름동사나 동사구로 한다.

- 접근자 : get, 변경자 : set, 조건자 : is 를 앞에 붙인다.

- 함수의 이름과 기능을 일치되게 한다.

 

2. 구조

- 내려가기 규칙 : 아래로 갈수록 추상화 수준이 낮아져야 한다. like 신문기사

- 개념은 빈 행으로 구분한다.

- 세로 밀집도: 연관성을 의미함 (* 연관성: 한 개념을 이해하는 데 다른 개념이 중요한 정도)

- 변수는 사용하는 위치에 가까워야 한다.

- 호출하는 함수를 호출되는 함수보다 먼저 배치한다.

- 가로 공백: 왼쪽 요소와 오른쪽 요소가 분명하게 나뉘는 경우에 넣기 (e.g. 함수와 인수는 개념적으로 하나이기 때문에 공백 x)

- 계산을 여러 단계로 나누고 중간 값으로 서술적인 변수 이름을 사용해라.

 

3. 좋은 주석

1) 법적인 주석 : 저작권, 소유권 정보

2) 기본적인 정보를 제공하는 주소

3) 의도를 설명하는 주석

4) 의미를 명료하게 밝히는 주석

5) 결과를 경고하는 주석

6) TODO 주석 : 필요하다 여기지만 당장 구현하기 어려운 기술

7) 중요성을 강조하는 주석

8) 공개 api 구현시 Javadocs를 작성

 

=> 중첩이 심할 때 닫는 괄호에 주석을 단다.

=> 주석은 근처에 있는 코드만 기술해야 한다.

 

4. 디미터 법칙

: 모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다.

=> 클래스의 메서드는 해당 클래스나 인스턴스에 연결된 것만 호출해야 한다.

단, 반환하는 객체의 메서드는 호출하면 안 된다.(train wreck)

 

5. 오류 처리

- 오류 코드보다 예외를 사용하자. 논리가 오류 코드와 뒤섞이지 않는다.

- 예외 처리할 경우 try-catch-finally문부터 작성하자.

- 오류 처리를 프로그램 논리와 분리하면 독립적인 추론이 가능해진다.

 

6. 함수

- 함수에서 인수 개수는 작을수록 좋다.

- boolean 타입의 플래그 인수는 함수가 여러 기능을 수행한다는 증거!

- 함수 인수를 넘겨 동작을 선택하지 말자.

- 함수는 한가지 임무만 수행한다.

- 시간적 결합 => 함수가 호출되는 순서를 명백히 드러내야 한다.

- 경계 조건은 캡슐화한다. (하드 코딩 x)

- 함수 내 모든 문장은 추상화 수준이 동일해야 한다.

 

7. DRY

Don't Repeat Your code

=> 코드에서 중복을 발견할 때마다 추상화할 기회로 여기자.

 

<중복유형>

1) ctrl + V된 코드 -> 함수로

2) if else, switch 중복 -> 다형성으로

3) 알고리즘이 유사하지만 코드가 다름 -> 템플릿 메서드 패턴

 

 

 

 

(참고)

Clean Code: 애자일 소프트웨어 장인 정신. 로버트 C. 마틴 (박재호 이해영 역). 인사이트

snoop-study.tistory.com/67?category=917080

 

클린 코드

www.aladin.co.kr/shop/wproduct.aspx?ItemId=34083680 클린 코드 Clean Code 로버트 마틴은 이 책에서 혁명적인 패러다임을 제시한다. 그는 오브젝트 멘토(Object Mentor)의 동료들과 힘을 모아 ‘개발하며’ 클..

snoop-study.tistory.com

 

Comments