클린 코드(Clean Code) 리뷰 - 02

잘 지은 이름 하나, 열 주석 안 부럽다.

우리는 프로그래밍을 하면서 많은 어려움을 겪는다. 우스갯소리로 이름을 짓는 것이 가장 어려워한다는 얘기도 있을 만큼 이름을 짓는 데 어려움을 겪고 있다. 그렇다 해서 의미가 불분명하게 지으면 동료들이나 훗날 미래의 내가 보았을 땐 주석 없인 이해하기 어렵다. 하지만 이름을 잘 지으면 따로 주석이 필요 없을 만큼 이해가 잘 된다. 각 클래스나 함수 등이 의미하는 바가 명확하여 주석이 따로 있지 않아도 충분히 이해할 수 있다.

의미있는 이름

그릇되지 않고 분명한 의도가 포함되어 있어야 하며, 불필요한 맥락은 들어있지 않아야 한다.

의도를 밝혀라

클래스, 변수, 함수 등 존재가 의미없는 경우는 없다. 각 존재마다 그 의도를 지니고 있다. 그렇기에 그 의도가 분명히 이름에 나타나있어야 한다.

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

// case #2
public List<Cell> getFlaggedCells() [
	List<Cell> flaggedCells = new ArrayList<Cell>();
	for	(Cell cell : gameBoard)
		if (cell.isFlagged())
			flaggedCells.add(cell);
	return flaggedCells;
}

그릇된 정보를 피하라

우리는 짧은 이름을 짓기 위해 공공연하게 약어를 사용하기도 한다. 하지만 이러한 약어가 오히려 그릇된 정보를 줄 수 있다. 예를 들어 dev 같은 경우 누구에겐 develop일 순 있지만, 누구에겐 device로 이해할 수 있기 때문이다. 이처럼 의미를 전달하는데 오해의 소지가 있는 경우를 피해야한다.

의미 있게 구분하라

이름을 지을 때 확실히 의미 있게 구분하여야 한다. [Product, ProductInfo, ProductData] 이처럼 이름을 지었다면 이 세 가지가 구분이 잘 안 된다. 이처럼 불필요한 Info , Data와 같은 용어를 쓰는 것을 지양한다. 또한, a, the와 같은 불용어 역시 불필요하다고 볼 수 있다.

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

추상적인 개념 하나에 하나의 단어를 사용해야 한다. 예를 들어 무엇인가의 값을 가져오는 메소드의 이름을 지으려 할 때 get , fetch , retrieve 처럼 여러 개의 단어로 사용할 경우 혼란을 일으킨다. 그리하여, 일관성 있게 선정해야 한다.

불필요한 맥락을 없애라

일반적으로 긴 이름보다 짧은 이름이 좋다. 하지만 의미가 분명한 경우에 한해서이다. 불필요한 맥락을 추가하여 굳이 긴 이름을 사용할 필요가 없다.

마치며..

의미 있는 이름을 짓는 법에 대해서 간략하게 알아보았다. 의미 있는 이름을 짓기 위해서는 시간이 필요로 하지만 나중을 생각하면 아쉽지 않은 시간 투자라고 생각한다.

Leave a comment