프로그래머의 뇌 - 8. 명명을 잘하는 방법

2023. 7. 12.·🤓 기술 학습 & 공부 기록/컴퓨터 일반

프로그래머의 뇌 (펠리너 헤르만스 지음)


📍목차

1장 | 코드 더 잘 읽기
1. 코딩 중 겪는 혼란에 대한 이해
2. 신속한 코드 분석
3. 프로그래밍 문법 빠르게 배우기
4. 복잡한 코드를 읽는 방법

2장 | 코드에 대해 생각하기
5. 코드를 더 깊이있게 이해하기
6. 코딩 문제해결을 더 잘하려면
7. 생각의 버그

 

3장 | 좋은 코드 작성하기

8. 명명을 잘하는 방법

 

📍이름이 중요한 이유

✅식별자에는 타입, 변수, 메서드, 함수 등이 있으며, 식별자 이름이 중요한 이유는 대표적으로 4가지가 있다

1. 이름은 코드베이스의 상당 부분을 차지

예) 200만 줄의 코드에서 토큰의 33%, 문자열의 72%가 식별자에 해당

 

2. 코드 리뷰 시 이름의 역할

- 코드 리뷰 때도 식별자 이름이 자주 언급됨

- 평균적으로 코드 리뷰 4건 중 1건이 이름에 대한 언급을 포함

 

3. 이름은 문서화의 가장 쉬운 형태

- 이름 자체로도 정보를 전달하는 문서 역할을 한다

- 코드 공식 문서로 이동하는 것 대신 코드베이스의 정보 전달 기능

 

4. 이름이 표식 역할을 할 수 있음

- 변수 이름은 주석 외에도 코드를 이해하는데 도움이 되는 중요한 표식임

 

✅버틀러의 명명 규칙 알아보기

1. 사전 등재 단어

- 식별자의 약어는 원래 명칭보다 더 자주 사용될 경우에만 사용해야 한다

bad case) page_countr <- countr 라고 잘 쓰이지 않음

 

2. 단어의 수

- 식별자에 사용되는 단어의 수는 4개를 초과하면 안된다

bad case) page_counter_converted_and_normalized_value <- 6개의 너무 많은 단어 사용됨

 

3. 열거형(enum) 식별자 선언순서

- 별다른 이유가 없다면, 열거형 타입은 알파벳 순으로 선언되어야 한다

bad case) CardValue = { ACE, EIGHT, FIVE, FOUR, JACK, KING } <- 이 경우는 카드 점수 높은 순 또는 낮은 순이 바람직

 

4. 식별자 타입

- 식별자 이름에 타입 정보를 나타내지 말것

- TypeScript의 경우, 변수명 대신 타입으로 지정하면 됨

 

// bad case
let intPageCounter;

// good case
let pageCounter: number = 0;

 

5. 숫자를 나타내는 식별자 이름

- 식별자는 숫자만을 나타내는 단어나 수를 사용하면 안됨

bad case) FIFTY

 

📍명명의 인지적 측면

✅규칙적인 명명규칙은 STM(+ LTM)을 돕는다

- 문법적으로 비슷한 이름 => 이름(식별자)을 처리할 때 인지 부하가 낮음

예) nmcntrlst 보다 name_counter_list 가 쉽게 이해할 수 있다

 

- 코드베이스 내에서의 일관성 => 청킹을 지원 (LTM에 쉬운 저장)

 

✅변수 이름이 코드 이해에 도움을 줄 수 있음

1. 코드의 도메인에 대해 생각할 때

예) 쇼핑몰 앱에서 customer, cart 등의 변수를 사용

 

2. 변수에 LTM이 이미 알고 있는 규약에 대한 정보가 포함될 수 있다

예) i, j 등의 변수를 중첩 loop문에서 사용

 

📍어떤 종류의 이름이 더 이해하기 쉬운가?

✅축약어 vs 원래 단어

축약어를 적절하게 사용하는 것이 좋다

- 원래 단어를 사용할수록 버그를 19% 더 발견

- 다만, 변수 이름이 길수록(음절의 수가 많을수록) 기억하기 어려움

 

✅1글자를 변수로 사용하는 것

코드를 읽을 때 편견을 부여할 수 있다

예) x, y => 좌표를 연상시킴

 

✅카멜 케이스 vs 스네이크 케이스

카멜 케이스가 청킹(기억) 및 의미 파악에 더 유리하다

- 카멜 케이스와 스네이크 케이스 중에서 선택이 가능한 경우라면, 카멜 케이스를 선택하는 것이 좋다

- 스네이크 케이스는 더 빨리 식별할 수 있긴 하다

 

📍이름이 버그에 미치는 영향

✅나쁜 이름을 가진 코드에 버그가 더 많다

좋은 이름을 사용하면,

- 개발자의 인지 부하를 낮춰 유지 보수가 쉬워지고

- 버그 발생 가능성을 낮출 수 있다

 

📍더 나은 이름을 선택하는 방법

✅Name Mold(이름 틀) : 변수 명명 규칙과 비슷한 개념

예) 한 사람이 매달 최대로 받을 수 있는 혜택을 어떻게 이름붙일까?

- max_benefit

- max_benefit_per_month

- benefits

- max_month_benefit

...

 

개발자들이 자연스럽게 같은 변수명을 사용하는 경우는 매우 드물지만, 어느정도 비슷한 변수명을 이해하는 것으로 나타났다

- 이름 틀은 개발자들의 인지 부하를 낮추는 효과를 가짐

- 또한 LTM에서 관련 정보를 더 빠르게 인출 가능

- 따라서 이름 틀을 최소로 줄이고 공통화하는 것이 좋다

 

✅더 나은 변수명을 위한 3단계 모델

1. 이름에 포함할 개념을 선택

- 주석문으로 별도로 표현한 개념을 변수명으로 흡수

 

2. 각 개념을 나타낼 단어를 선택

- 프로젝트 어휘 사전을 구축

 

3. 이 단어들을 사용하여 이름을 구성

- 영어 어법에 맞게 자연스럽게 구성

예) points_max 대신 max_points 사용

indexOf 또는 elementAt 처럼 전치사를 추가

'🤓 기술 학습 & 공부 기록/컴퓨터 일반' 카테고리의 다른 글
  • <객체지향의 사실과 오해> 2.이상한 나라의 객체
  • <객체지향의 사실과 오해> 1.협력하는 객체들의 공동체
  • 프로그래머의 뇌 - 7. 생각의 버그
  • 프로그래머의 뇌 - 6. 코딩 문제해결을 더 잘하려면
지식물원
지식물원
지식이 자라는 식물원!
  • 지식물원
    지식물원
    지식물원
  • 전체
    오늘
    어제
    • 분류 전체보기 (510)
      • 🎨 프론트엔드 공부 (247)
        • JS & TS (86)
        • HTML & CSS (22)
        • React & Next (49)
        • Vue & Nuxt (22)
        • 기타 (68)
      • 🤓 기술 학습 & 공부 기록 (116)
        • Node.js (0)
        • Python (37)
        • 백엔드 (0)
        • 딥러닝 (1)
        • 컴퓨터 일반 (72)
        • 개발 인프라 (6)
      • 👨‍💻 프로젝트 경험 (6)
        • Work (0)
        • Toy (6)
      • ⚙️ 개발 팁 & 노하우 (21)
        • 프론트엔드 (6)
        • 기타 (15)
      • ☕️ 커리어 & 인터뷰 준비 (88)
        • 코딩 테스트 (88)
      • 📰 기술 트렌드 & 생각 정리 (4)
      • 📚 기타 (25)
        • 마케팅 (15)
        • 비개발서적 (10)
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

    • 모바일 접속 시 코드 하이라이팅 깨질 때
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
지식물원
프로그래머의 뇌 - 8. 명명을 잘하는 방법
상단으로

티스토리툴바