오늘 읽은 범위

2장 의미 있는 이름

책에서 기억하고 싶은 내용을 써보세요.

  • 의도가 드러나는 이름을 사용하면 코드 이해와 변경이 쉬워진다. (p.22)
  • 불용어는 중복이다. (중략)읽는 사람이 차이를 알도록 이름을 지어라. (p.26~27)
  • 추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다. (p.33)
  • (의미를) 클래스, 함수, 이름 공간에 넣어 맥락을 부여한다. 모든 방법이 실패하면 마지막 수단으로 접두어를 붙인다. (p.35)

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요.

  • 불용어(noise word)는 의미 없이 중복되거나 불필요하게 덧붙인 단어들을 말한다. 클린코드에서는 이런 불용어의 사용을 가급적 줄이라고 권장한다. 돌이켜보면 나도 이런 단어들을 자주 써왔다는 것을 깨달았다. 예를 들어, 아래처럼 orderData라고 이름을 붙인 경우, 실제로는 주문 내역을 나타내는 데이터에 불필요하게 data가 덧붙어있는 셈이다. 더 명확하게 역할이 드러나는 이름으로 짓는 것이 바람직하다.

🔽 불용어를 제거한 예시

// AS-IS 
const {data : orderData} = useQuery(...)
// TO-BE
const {data : orderHistory} = useQuery(...)
  • 또 하나 배운 것은 접두사 사용을 지양하라는 것이다. 타입스크립트로 타입을 정의할때 IUser, IOrder처럼 인터페이스를 의미하는 I를 붙이는 네이밍 규칙을 써왔는데, ChatGPT에게 물어보니 접두사/접미사보다는 역할 중심의 이름을 사용하는 것을 추천했다. 예를 들어 컴포넌트의 props를 정의할 때도 IProps 보다는 역할을 반영한 네이밍이 더 깔끔하다.

🔽 역할 기반의 작명 예시

interface UserCardProps {
  user: User;
  editable: boolean;
}
 
const UserCard = (props: UserCardProps) => { ... }

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

  • 그릇된 정보를 피하라는 파트를 처음 읽을때 ‘그릇된 정보’라는 의미가 모호하게 느껴졌다. 내가 이해한 ‘그릇된 정보’는 잘못된 정보로 오해를 불러일으키는 경우, 서로 흡사한 이름으로 헷갈리는 경우, 작명에 일관성이 없는 경우를 의미한다.

클린코드를 읽는 이유