728x90
반응형
의미있는 이름
1. 의미 있이름 이란?
- 변수나 함수 그리고 클래스 이름은 당음과 같은 굻직한 질무에 모두 답해야한다.
변수(혹스 함수나 클래스)의존재 이유는?
수행 기능은?
사용 방법은?
따로 주석이 필요하다면 의도를 분명히 드러내지 못헀다는 말이다.
- 만약 프로그래머 시간에대하여 int d; // 경과 시간(단위:날짜) 이렇게 사용했다면 최악이라고 본다.
- 다음과 같이 명명하게 옳다.
int elapsedTimeInDaya;
int daysSinceCreation;
int datsIsnceModification;
int fileAgeInDay;
이렇게 사용하면 좀더 명화하게 변수에 대한 의미를 알수가 있다.
2. 그릇된 정보를 피하라.
- 프로그래머에서 list라는 단어는 특수한 단어이다. 만약 계정정보를 담는 변수가 list가 아니라면 혼란을 줄수 있다.
그러므로 List대신 accountGroup, bunchOfAccounts 아니면 Account라 명명해야한다.
3. 유사 단어로 변수 변수,함수, 클래스 등을 사용하지 마라.
- 예를 들어 XYZControllerForEfficientHandingOfString과 XYZControllerForEfficientStorageOfString 이렇게 사용하게되면 겁나 게 햇갈려서 실수할 확률이 대폭 올라간다.
4. 비슷한 또는 연속된 숫자를 붙이지 마라.
- getActiveAccount()
- getActiveAccounts()
- getActiveAccountInfo()
과연 위 3개는 도대체 뭐가 어떻게 다른 것일까?? 이해 되는가?? 나는 이해 되지 않느다. 그러니 저렇게 쓰지마라.
- a1, a2, a3,...aN
이런 변수들은 의미도 없고 무슨 용도로 사용되는지도 모른다. 절때 쓰지 마라.
5. 발음 하기기 쉬운 이름을 사용해라.
- 내가 발음하기 힘들면 남도 힘들고 소통하기도 힘들다. 또 한 찾기도 힘들다..
6. 검색하기 쉬운 이름을 사용해라.
- 생소한 단어를 쓰면 검색하기도 힘들다.
- 너무 간소하게 쓰지마라 중복 검색이 겁나게된다.
7. 인코딩을 피하라.
- 헝가리식 표기법을 사용하지마라.
흠.. 이건 좀 모르겠다. 난 함수와 변수의 빠른 구분을 위해서 함수에는 헝가리식 표기법을 사용하고 변수는 모두 소문자로적느다. 어느게 맞는 것일까..
- 접두어를 붙이지 마라.
- 구조체에 m_day 이렇게 쓰지마라 그냥 구조체 변수명을 잘 정하고쓰면 저렇게 접두어를 안붙여도 될거 같다.
- Ex)
struct time_info{
int second;
int minute;
int hour
}
time_info now_time;
now_time.second;
이렇게 사용하면 충분히 접두어를 안부여도 된다고 본다.
8. 기억력을 믿지마라.
- 나도 일주일전 코드를 다시보면 헷갈린다. 변수명을 i,j,k ,a,b 이렇게 적지마라. 당신은 신의 기억력을 가지고 있지 않다.
9. 클래스 이름
- 클래스 이름과 객체 이름은 명사나 명사구가 적합하다.
- ex) Customer, WikiPage, Account 등등등..
10 메서드 이름(함수 이름)
- 메서드 이름은 동사나 동사구가 적합하다.
- ex) postPayment, deletePage,save 등등.
- 접근자 , 변경자, 조건자는 javabean 표준에 따라 값앞에 get, set, is 를 붙인다.
sample code
string name = employee,getName();
customer.setName("mike");
if( paycheck.isPosted())...
11. 기발한 이름은 피해라
- 나중가면 나도 모르고 당신도 모른다.
12. 한개념에 한단어를 상용해라.
- 똑같은 메서드를 클래스마, fetch, retrieve, get으로 제각가 부르면 혼란스럽다.
- 일관성있는 단어를 사용해라.
13. 말장난하지말.
- 어떻 클래스에선느 add 메서가 두값을 더하는것이고, 다른 메서드에서는 기본 값에 더하기를 하는 것이라면 두 메서는 필히 다른게 명명해야한다.
14. 해법 영역에서 가져온이름을 사용해라.
- VISITOR패턴에 친숙한 프로그래머라면 AccountVisitor라는 이름을 금방 이해 한다.
15. 의미 있는 맥락을 추가해라.
- 예를 들어주소에 대한 변수를 지정할때를 비교하면
- 않좋은 예) firstName, lastName, street, houserNumber, city, state, zipcode
- 좋은 예) addrFirstName, addrLastName, addrSate라고 쓰는게 좀더 명확하고 더좋다.
16.불피요한 맥락을 없애라.
- 공통으로 여기저기 사용되는 맥락은 없는게 났다.
* 좋은 이름을 지으려면 설명 능력이 뛰어나야 하고 문화적 배경이 같아야한다.
내가 프로그램밍을 하면서 가장 어려운게 좋은 이름 짖기 인것 같다. 정말 어렵다*
728x90
반응형
'책- 정리 > Clean Code' 카테고리의 다른 글
Chapter 1장 깨끗한 코드 (0) | 2017.01.08 |
---|---|
chapter 들어가면서 (0) | 2017.01.02 |
Clean Code란 문엇인가에 대한 고찰 (0) | 2017.01.01 |