책- 정리/Clean Code

Chapter 2장 의미 있는 이름

jinkwon.kim 2017. 1. 11. 01:35
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