본문으로 바로가기

클린코드#2

category 독서 2020. 6. 20. 19:43

클린 코드는 협업을 하는 개발자들에게 있어서 중요한 요소가 아닌가 싶습니다. 그래서 저는 앞으로 클린 코드를 읽고 공부해보려고 정리하게 되었습니다.

클린 코드의 저자 로버트 C 마틴은 오브젝트 멘토사의 창립자이자 대표인데 코드를 작성하는 데 있어서 필요한 규칙과 연칙에 대해 설명했습니다. 여러 가지 측면에서 클린 코드를 설명하였는데 1장은 클린 코드가 무엇인지 나쁜 코드가 무엇인지 설명하였고, 2장은 의미 있는 이름에 대해 설명하였습니다.

#lucky_sonnie 님이 정리해주셨습니다

 

개발을 하기 위해선 클래스, 메소드, 필드명 등을 의미 있게 정해야 합니다.

 

  •  의도를 분명히 밝혀라. 

 

  •  그릇된 정보를 피하라.

예시) XYZControllerForEfficientHandlingOfStrings

         XYZControllerForEfficientStorageOfStrings

두 메소드의 이름을 검색해서 찾기도 어렵고, 한눈에 두 메서드가 다르다고 알아차리기도 어렵습니다.

그렇기 때문에 이런식으로 메서드의 이름을 정하는 것을 피해야 합니다. 

 

O, 0, L, 1 등의 문자들은 피할 것

 

  • 의미 있게 구분하라.

기존에 product 란 클래스가 있는 경우, 

다른 클래스를 productInfo, productData 라 부른다면 개념을 구분하지 않은 채 이름만 달리 한 경우이다. productBarcode , productNutrition 란 식으로 바꿔주자

 

  • 발음하기 쉬운 이름을 사용하라

genymdhms (generate date, year, month, day, hour, minute, second)

 

  • 검색하기 쉬운 단어를 선택하라 

MAX_CLASSES_PER_STUDENT 은 grep으로 찾기 쉽지만 숫자 7은 까다롭다. 7이 들어가는 파일 이름이나 수식이 모두 검색되기 때문이다. 검색은 되지만 7을 사용한 의도가 다른 경우도 있다. (serializable 할 때 ) 

 

  • 인코딩을 피해라

굳이 부담을 더하지 않아도 이름에 인코딩할 정보는 아주 많기에 유형이나 범위정보까지 인코딩에 넣으면 그만큼 이름을 해독하기 어려워진다. 

 

(PhoneNumber phoneString 

String m_dsc -> String description

)

 

  • 클래스 이름

좋은 예 :Customer, WikiPage, Account, AddressParser

나쁜 예: Manager, Processor, Data, Info

 

  •  한 개념에 한 단어를 사용해라

똑같은 메서드를 클래스마다 fetch, retrieve, get 으로 제각각으로 부르면 혼란스럽다. 어느 클래스에서 어느 이름을 썼는지 기억하기 어렵다. 

 

동일 코드 기반에 controller, manager, driver를 섞어 쓰면 혼란스럽다. 

(DeviceManager, ProtocolController )  

 

  •  의미 있는 맥락을 사용해라.

firstName, lastName, street, houseNumber, city, state.. 

 

state가 주소 일부라는 사실을 금방 알아채기 어렵기 때문에

addrFirstName, addrLastName, addrState 라 쓰면 맥락이 좀 더 분명해짐 

'독서' 카테고리의 다른 글

클린 코드 7~8장  (0) 2020.12.22
클린코드#3 함수  (0) 2020.06.24