티스토리 뷰

2장  의미 있는 이름

 

* 의도가 분명한 이름

- 변수, 함수, 클래스 등의 이름은 존재 이유, 수행 기능, 사용 방법 등의 의도를 알 수 있게 지어야한다.

ex) 

1
int d; // 경과 시간(단위 : 날짜)
cs

의도를 전혀 드러내지 못하는 이름

1
2
3
4
5
6
7
int elapsedTimeInDays;
 
int daysSinceCreation;
 
int daysSinceModification;
 
int fileAgeInDays;
cs

의도가 충분히 드러나는 이름

 

* 그릇된 정보를 피하라

- 코드에 남겨진 잘못된 단서는 코드 의미를 흐린다.

- ex) 배열로 구현된 그룹을 accountList로 이름 짓는 경우. 단순히 Accounts로 명명하는게 옳음.

- 서로 흡사한 이름은 피한다.

- 유사한 개념엔 유사한 표기법을 적용한다 (일관성). 일관성이 떨어지는 표기법은 그릇된 정보임.

 

* 의미있게 구분하라

- 컴파일러를 통과하기 위해 연속된 숫자를 붙이거나 불용어(noise word) 붙이는 방식은 피해야한다.

- 위에서 언급한 연속된 숫자, 불용어는 아무런 정보도 담지 않음. 의도가 드러나지 않음. 말 그대로 아무의미가 없음.

- 불용어 ex)

   product, productData, productInfo

   getActiveAccount(); , getActiveAccounts(); , getActiveAccountInfo();

   개념적으론 하나도 구분되지 않음. 그냥 중복.

- 읽는 사람이 차이를 알도록 명명.

 

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

ex)

1
2
3
4
5
6
7
8
9
10
11
class DtaRcrd102 {
private Date genymdhms;
private Date modymdhms;
/*...*/
}
 
class Customer {
private Date generationTimestamp;
private Date modificationTimestamp;
/*...*/
}
cs

 

* 검색하기 쉬운 이름을 사용하라

- 이름이 길어도 괜찮음. 본래 이름 길이는 이름 주체가 사용되는 범위의 크기에 비례해야 함.

- ex) 숫자 7 과 'MAX_TAX_RATE'의 경우. 7을 검색하면 코드의 구석구석에서 발견될것임.

 

* 인코딩을 피하라

 

* 자신의 기억력을 자랑하지 마라

 

* 클래스 이름

- 클래스 이름과 객체 이름은 명사나 명사구가 적합하다.

 

* 메서드 이름

- 메서드 이름은 동사나 동사구가 적합하다.

 

* 기발한 이름은 피하라

 

* 한 개념에 한 단어를 사용하라

- 추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다.

- 이름에 특정 개념을 실어주기 위해 표현을 추가하는데 그 개념을 클래스마다 제각각 부르면 혼란을 야기한다.

- ex) DeviceManager, ProtocolController // 같은 관리자란 개념을 다르게 붙였음.

 

* 말장난을 하지 마라

- 바로 위와 반대되는 이야기

- 다른 개념에 같은 단어를 사용하지마라

- ex)

  1.기존 값 두 개를 더하여 새로운 값을 만드는 메서드 add.

  2.집합에 값 하나를 추가하는 메서드 add(x) / insert, append(o)

 

* 해법 영역에서 가져온 이름을 사용하라 & 문제 영역에서 가져온 이름을 사용하라

- 해법 영역과 문제 영역은 반대되는 영역.

- 해법 영역과 문제 영역을 구분할줄 알고 코드 구성에서 어떤것이 적절한지 판단할줄 알아야함.

 

* 의미 있는 맥락을 추가하라 & 불필요한 맥락을 없애라

- 이름 스스로 의미가 명확하지 못하다면 의미에 맥락을 추가하는것도 좋은 방법이다.

- ex) street, houseNumber, city -> addrStreet, addrHouseNumber, addrCity

  주소로서의 의미가 부족하여 addr(맥락)을 추가하니 이름 그 자체로 명확한 의미를 갖게됨.

  Address 클래스를 따로 생성하는것도 좋은 방법이다.

- 불필요한 맥락은 불필요한 정보.

- 이미 주어진 상황과 조건만으로 맥락이 추측되는 경우 이름에 맥락을 붙이지 않는다.

- ex) Gas Station Deluxe(고급유 주유소) 어플리케이션에서 변수들의 이름에 GSD를 붙이진 않음.

- 의미를 분명하게 표현할 수 있다면 짧은 이름이 긴 이름보다 좋다.

 

 

  

 

 

 

 

 

 

 

'프로그래밍 > 공부' 카테고리의 다른 글

클린 코드) 5장 핵심 정리  (0) 2022.01.28
클린 코드) 4장 핵심 정리  (0) 2022.01.22
클린 코드) 3장 핵심 정리  (0) 2022.01.17
클린 코드) 1장 핵심 정리  (0) 2022.01.14
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함