CleanCode 2장 의미있는 이름

김희윤·2021년 3월 2일
0

cleancode

목록 보기
2/13

프로그래머에게 작명이란

처음 개발을 배우면서 한 현업자 분께서 개발자는 업무시간의 절반 이상이 이름을 짓는데 쓰인다고 말씀하신 적이 있다. 처음에는 농담인 줄 알았으나 개발을 하면 할 수록 좋은 이름이 무엇인가에 대해서 고민을 많이 하게 되었다. 아래의 법칙을 바탕으로 이름을 연습할 것이다.

1. 의도가 분명한 이름

존재이유, 수행 기능, 사용법 모두가 분명하게 들어나는 이름이어야 한다!

//이게 무슨 뜻인지는 아무도 모른다
int d;

// 확실히 무엇을 뜻하는지 알 수 있다
int daysSinceCreation
int fileAgeInDayse

2. 그릇된 정보를 피하라

서로 흡사한 이름이나, 다른 글자와 헷갈리게 이름을 짓지마라

// 2개의 차이점을 거의 찾을 수 없다
String XYZControllerForEfficientHandlingOfStrings
String XYZControllerForEfficientStorageOfStrings

// 유닉스 플랫폼 이름이기에 혼동된 정보를 줄 수 있다.
hp, aix, sco

// 숫자 0, 1 알파벳 O, l 구분이 쉽지 않다

0, 1  O,l 

3. 의미있게 구분하라

아무런 의미가 없거나, 유의미한 정보를 제공하지 못한다면 코드 읽기가 어려워진다

// a가 무엇을 뜻하는지 아무도 모른다
a1, a2, a3 ... 

// 기능의 차이를 알 수 없다
getActiveAccount();
getActiveAccounts();
getActiveAccountInfo();

4. 발음이 쉬운 이름을 사용해라

두뇌는 말을 처리하는데 발달되어 있기에 발음이 되어야 이해하기 쉬워진다

// 두 번째가 의미있는 대화가 가능해진다.
class DtaRcrd102 {...}
class Customer {...}

5. 검색하기 쉬운 이름을 사용해라

문자 하나를 사용하는 이름과 상수는 쉽게 눈에 띄지 않는다

// 뜻으로 검색이 바로 가능하다
int MAX_CLASSES_PER_STUDENT
int 7

6. 클래스 이름

클래스와 객체 이름은 명사나 명사구가 적합하다
동사는 사용하지 않기!

// 좋은 예
Customer, WikiPage, Account, AddressParser

// 나쁜 예
Manager, Processor, Data, Info

7. 매서드 이름

매서드 이름은 동사나 동사구가 적합하다

postPayment, deletePage, save, getName

8. 한 개념에 한 단어

추상적인 개념 하나에 단어 하나를 선택한다

// 가져오다라는 뜻을 아래 중 하나만 선택
fetch, retrieve, get

// 관리라는 뜻을 아래 중 하나만 선택
controller, manager, driver

9. 의미있는 맥락을 추가하라

클래스, 함수 에 맥락을 부여해라

// 다 읽어봐야 주소 관련이라는 것을 안다
firstName, lastName, street, houseNumber, city, state, zipcode

// 의미있는 접두어를 추가하면 하나면 봐도 안다
addrFristName, addrLastName, AddrState
profile
블록체인, IOT, 클라우드에 관심이 많은 개발자 지망생

0개의 댓글

관련 채용 정보