클린 코드(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