CLEAN CODE

CLEAN 코드 네이밍 (2)

1. 인코딩을 피하라

(1) 헝가리식 표기법

변수명에 유형이나 범위 그리고 정보까지 인코딩에 넣으면 그만큼 이름을 해독하기 어렵다.

또한 인코딩한 이름은 발음하기 어렵고 오타가 생기기도 쉽다.

따라서 헝가리식 표기법과 기타 인코딩 방식을 지양하자.

 

헝가리식 표기법이란?

변수 앞에 데이터 형식(약자)을 붙여서 이름을 짓는 방법

 

(2) 멤버 변수 접두어

멤버 변수에는 m_이라는 접두어를 붙였었는데, 이제는 붙일 필요가 없다. ( IDE의 발전 )

public class Part{
	private String m_dsc;
    void setName(String name){
		m_dsc = name;
    }
}
// m_ 을 붙인다고? 너무 옛날 방식인데?
<>

public class Part{
	String description;
    void setDescription(String description){
    	this.description = description;
    }    
// 음 이해하기 좋네

(3) 인터페이스 클래스와 구현 클래스

인터페이스 클래스에 접두어 I는 주의를 흩트리고 과도한 정보를 제공하기 때문에

구현 클래스에 ShapeFactoryImp와 같이 Imp를 붙이거나 CShapteFactory와 같이 C를 붙이는 방법이 더 좋다.

 


2. 클래스 이름

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

ex ) Customer, WikiPage, Account, AddressParser ( O )

      Manager, Processor, Data, Info ( X )

 


3. 메소드 이름

메소드 이름은 동사나 동사구가 적합하다

ex ) postPayment, deletePage, save ( O )

 


4. 기발한 이름은 피하자

직접 개발한 프로그래머에게는 정말 재밌고, 자화자찬을 할 수 있어도, 이 코드를 나중에 보게 되는 프로그래머에게는 전혀 그렇지 않을 것이다.

 


5. 한 개념에 한 단어를 사용하자

한 개념에 fetch, retreive, get 등 다양한 단어가 존재하지만, 이렇게 다른 단어도 사용하게 된다면 혼란스러울 것이다.

따라서 혼란스럽지 않도록 일관성 있는 어휘를 사용하도록 하자.

 


6. 의미 있는 맥락을 추가하자

한 클래스에 firstName, lastName, street, houseNumber, city, state, zipcode라는 변수가 있다면 누구든지 아 이 변수들은 Address를 위한 변수라는 것을 알 것이다.

그러나 한 공간에 state라는 변수만 존재한다면? 대부분이 Address를 위한 변수라는 것을 눈치채지 못할 것이다. 

따라서 이럴 때는 state 앞에 addr 접두사를 붙여 의미가 있도록 표현을 해주는 것이 좋다.

 

참고 : Clean Code ( 로버트 C. 마틴 )

반응형

'CLEAN CODE' 카테고리의 다른 글

CLEAN 함수 (3)  (0) 2021.06.01
CLEAN 함수 (2)  (0) 2021.06.01
스위치 문 리팩토링( Refactoring Switch statement )  (0) 2021.05.27
CLEAN 함수 (1)  (0) 2021.05.25
CLEAN 코드 네이밍 ( 1 )  (0) 2021.05.24