이론/설계

클린 코드 2,3장 (이름, 함수)

tsyang 2021. 5. 2. 04:34

로버트 C. 마틴의 클린코드 2,3장을 정리

 

이름(22p~)


  • 이름은 의도를 분명히 밝혀야 한다. 이름을 보고 존재이유, 수행 기능, 사용 방법을 알 수 있어야 한다.
  • 오해를 불러올 수 있는 이름은 피해라.(24p)
  • 쓸데없는 단어 붙이지 마라 : ~Info, ~Data 이런게 무슨 정보를 제공하는가? customer, customerInfo, customerData 는 관례 없이는 구분하기 힘들다. 읽는 사람이 차이를 알도록 이름을 지어야 한다. Manager, Processor... 등 도 마찬가지
  • 타입을 인코딩하지 마라 : monsterList 는 그냥 monsters로 해라. 타입이 Dict로 바뀌면 어쩔껀가? 타입을 적는다고 해서 이득도 없다. 
  • 'm_'이런 접두어도 붙이지 마라 : IDE에서 색 다르게 바꿔쓰는 기능 써라. (안 쓰면 바보)
  • 인터페이스에 I접두사를 붙이느니 구현체에 ~Imp 혹은 C~ 이렇게 써라.
  • 일관성 있게 써라 : 똑같은 메서드를 클래스마다 fetch, retrieve, get 이런식으로 나누면 혼란스럽다. 
  • 기능이 다르면 다른 단어 써라 : 1+1 의 add와, 컨테이너에 아이템을 추가하는 add는 다르다. 그러니까 add 대신 append, insert로 써야 된다.
  • 의미있는 맥락을 추가해라 :  'name, state, guid'를 보고 뭔지 알 수 있나? 'monsterName, monsterState,.. ' 이런식으로 쓰면 하나만 봐도 맥락이 보인다.

 

 

함수(40p~)


  • 작게 만들어라 : 이유는 모르겠고 저자 느낌이라고 함. 대충 10줄 미만을 말하는듯?
  • 들여쓰기 수준은 1~2단 까지만 : 이유는 그냥 읽기 편해서
  • 함수는 한 가지만 해야한다(44p) : 추상화 수준이 하나면 한 가지만 하는것이다. 다른 의미 있는 이름을 가진 함수를 추출할 수 있다면 그 함수는 여러 가지를 하는거다.
  • 함수 내의 추상화 수준은 같아야 한다. : 근본 개념과 세부사항이 섞이면 헷갈린다.
  • 코드에서 추상화가 높은 함수가 위로 온다. : 그래야 내려가면서 읽을때 이야기가 만들어짐.
  • (내 생각) 그래서 추상화 수준이 뭔데? : 막 공식같은게 있는건 아니고 사소한 기능이면 추상화 수준이 낮고 이런게 모여서 복잡한 기능을 하는걸 추상화 수준이 높다고 하는듯.. 결국 그냥 프로그래머의 감..? 아무튼 감으로 나누고 나면 콜스택에서 같은 depth에 있는게 같은 추상화 수준을 가졌다고 할만 한 듯.
  • switch문은 자제하자 : switch는 작게 만들기 어렵다. 대게 한 가지 작업만 수행하지 않으며 SRP와 OCP를 위반한다(새 타입 추가시 코드 변경 필요하기 때문). 이런 경우 추상 팩토리를 쓰는게 낫다. 다형적 객체를 생성하는 코드 안에서의 switch문은 괜찮다. 물론 switch를 어쩔 수 없이 써야하는 상황도 있으니 꼭 필요할때만 쓰도록 하자.
  • 인수는 적을수록 좋다 : 출력 인수는 혼란을 야기한다. 또한 플래그 인수를 사용한다는 것은 함수가 여러 가지 작업을 한다는 뜻이다. xyz평면의 좌표계를 인수로 넘길때 Point객체를 만드는 것 처럼 객체를 이용해 인수를 줄일 수 있다. 이것은 결국 하나의 개념을 표현하기 때문이다.
  • 명령과 조회를 분리하자 : if(a.insert(b)) 이런 코드는 알아보기 어렵다. if(a.exist(b) == false) a.insert(b) 이런식으로 할 수 있도록 하자.
  • 오류도 한 가지 작업이다. : Try-Catch문과 같은경우도 '한 가지'일이다. 따라서 분리해야 마땅하다.

'이론 > 설계' 카테고리의 다른 글

클린코드 6장 (객체와 자료 구조)  (0) 2021.05.10
클린코드 4,5장 (주석, 형식)  (0) 2021.05.07
클린 아키텍쳐  (0) 2021.04.25
아키텍처 - 설계원칙 (SOLID)  (3) 2021.03.21
아키텍쳐 - 프로그래밍 패러다임  (0) 2021.03.09