본문 바로가기

BOOK Review

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

🩵 TIL (Today I Learned)

  • 의도를 분명히 밝혀라
    • 변수, 함수의 존재 이유 / 수행 기능 / 사용 방법 을 주석 없이 설명할 수 있어야 함
  • 그릇된 정보를 피하라 (List가 아닌데 List라고 명명)
  • 의미 있게 구분하라
    • 동일한 범위 안에서는 다른 두 개념에 같은 이름을 사용하면 안됨
    • 읽는 사람이 차이를 알도록 명명
  • 검색하기 쉬운 이름을 사용하라
  • 인코딩을 피하라 
    • 헝가리식 표기법처럼 타입을 이름에 넣는다는 것과 같은 행위 지양
  • 기억력을 믿지 마라
    • i,j,k 까지는 괜찮음. l 이상 사용 X,  a,b,c 같은 명명도 지양
  • 한 개념에 한 단어를 사용하라
    • fetch,retrieve,get을 혼용해서 쓰지 않기
  • 불필요한 맥락은 제거하라 
    • 의미가 분명한 경우는 이름에 불필요한 맥락을 넣지 않기
// as-is
public List<int[]> getThem() {
List<int[]> list1 = new ArrayList<int[]>();
for(int[] x : theList)
	if(x[0] == 4)
      list1.add(x);
 return list1;
 }
 
 
 // to-be
public List<int[]> getFlaggedCells() {
  List<int[]> flaggedCells = new ArrayList<int[]>();
  for(int[] cell : gameBoard)
    if(cell[STATUS_VALUE] == FLAGGED)
     flaggedCells.add(cell);
  return flaggedCells;
  }

 

  • 명명 규칙
    • 클래스 이름
      • 명사나 명사구가 적합
      • Manager, Processor, Data, Info 와 같은 단어는 지양
    • 메서드 이름
      • 동사나 동사구가 적합
      • 접근자, 변경자, 조건자는 get,set,is를 붙임

 

명명 규칙만 지키더라도 코드 가독성이 높아지고 장기적인 이익까지 보장한다. 기존 개발자가 사용했던 이름을 고수하는 것만이 옳은 것은 아니다. 더 좋은 단어가 있다면 과감하게 수정하는 일도 필요하다.

💜 오늘 읽은 범위

2장 의미있는 이름

 

🩶 기록

controller Req -> ctReq 라는 이름으로 명명을 제안받은 적이 있었다. 불필요한 축약어의 사용은 다른 개발자의 가독성을 위해서 지양하는 편은 아니다. 이 장에서도 읽기 어려운 이름을 지양하라는 내용과 길고 가독성이 있는 이름이 더 효과적이라고 설명하고 있다. 가독성이 좋고, 불필요한 맥락이 들어가지 않는 네이밍에 대해 좀 더 고찰할 수 있는 계기가 되었다.