프로그래밍/클린 코드

[클린코드] 2장. 의미 있는 이름

2KB 2020. 8. 19. 21:48

코드에서 이름을 잘 짓는 간단한 몇 가지 규칙들

 

- 의도를 분명히 밝혀라

  변수, 함수, 클래스 이름은 다음의 질문에 답할 수 있어야 한다.

   -> 존재 이유는? 수행 기능은? 사용 방법은?

   

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

   => int elapsedTimeInDays; 와 같이 의도가 드러나는 이름을 사용해야 한다.

 

 public List<int[]> getThem() {
 	List<int[]> list1 = new ArrayList<int[]>();
 	for (int[] x : theList)
 		if (x[0] == 4)
 			list1.add(x);
	return list1;
 }

코드가 무슨 일을 하는지 짐작하기 어려운 코드

 

 

public List<Cell> getFlaggedCells() {
	List<Cell> flaggedCells = new ArrayList<Cell>();
 	for (Cell cell : gameBoard)
 		if (cell.isFlagged())
 			flaggedCells.add(cell);
 	return flaggedCells;
 }

코드가 무슨 일을 하는지 이해할 수 있는 코드

 

 

 

위의 두 코드의 차이는 '함축성' 이다

아무리 단순한 코드일지라도, 변수/함수/클래스의 이름이 명확하지 않다면 코드를 이해할 수 없다.

이와 같이 명시적인 변수명과 함수명, 클래스명은 코드가 의미하는 바를 더욱 명확하게 해준다.

 

- 그릇된 정보를 피하라

변수,함수,클래스명은 일관성 있게 작성되어야 한다.

널리 쓰이는 의미가 있는 단어를 다른 의미로 사용 하면 안된다.

오해를 불러 일으킬 수 있는 '정보', 즉 그릇된 정보를 피해야 한다.

 

 

- 의미 있게 구분하라

 의미가 불분명한 불용어는 이름으로 적당하지 않다.

 CustomerInfo 와 Customer 클래스가 존재할 때, 두개의 클래스는 이름만으로는 구분할 수 없다.

 따라서 읽는 사람이 차이를 알도록 이름을 지어 의미 있게 구분할 수 있도록 해야 한다.

 

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

 

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

 

- 클래스 이름

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

  의미가 불분명한 Manager, Processor, Data, Info 등의 단어는 피해야 한다.

  동사 또한 사용하지 않는다.

 

- 메서드 이름

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

  deletePage, postPayment 등

 

- 한 개념에 한 단어를 사용해라

  일관성 있는 어휘를 사용해야 한다.

  똑같은 메서드를 클래스마다 fetch, retrieve, get 등 제각각으로 부르면 혼란 스럽다.

 

 - 의미 있는 맥락을 추가하라

   의미를 분명하게 할 수 있는 접두어를 추가해주는 것도 방법.

  

 - 불필요한 맥락을 없애라

  의미가 분명한 경우에 핸해서는 짧은 이름이 긴 이름보다 좋다.

  따라서 이름에 불필요한 맥락을 추가 하지 않도록 하여야 한다.

 

* 변수 이름 짓기에 참고할 수 있는 사이트

www.curioustore.com/