도서/개발

2장. 의미있는 이름

dev.hong96 2024. 8. 2. 11:26

2023-04-12 11:04:22

 

 

 

전제

책을 다 읽고 쓰면 읽을 당시에 얻은 점을 잊을 수 있기에

한 챕터 혹은 한 부분씩 읽어 나가면서 기록하는 방식으로 후기를 작성합니다.

구매하게 된 이유

개발자 필독서에 있는 것이 첫번째 이유고
깨끗한 코드가 무엇인지, 그리고 어떤 코드가 좋은지 확인하고 싶어서 읽고 있다.

알게된 점

2장 의미있는 이름

의도를 분명히 밝혀라

  • 변수나 함수 그리고 클래스 이름은 다음과 같은 굵직한 질문에 모두 답해야한다.
    • 변수(혹은 함수나 클래스)의 존재 이유는? 수행 기능은? 사용 방법은?
    • 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다.그릇된 정보를 피하라
  • 그릇된 단서는 코드 의미를 흐린다.
  • 나름대로 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용해도 안된다.
  • 서로 흡사한 이름을 사용하지 않도록 주의한다.
  • 유사한 개념은 유사한 표기법을 사용한다.

의미있게 구분하라

  • 컴파일러나 인터프리터만 통과하려는 생각으로 코드를 구현하는 프로그래머는 스스로 문제를 일으킨다.
  • 컴파일러를 통과할 지라도 연속된 숫자를 덧붙이거나 불용어를 추가하는 방식은 적절하지 못하다.
  • 불용어를 추가한 이름 역시 아무런 정보도 제공하지 못한다.
  • 읽는 사람이 차이를 알도록 이름을 지어라.

발음하기 쉬운 이름을 사용하라

  • 사람은 단어에 능숙하므로 발음하기 쉬운 이름을 선택한다.
  • 프로그래밍은 사회 활동이다.

검색하기 쉬운 이름을 사용하라

  • 문자 하나를 사용하는 이름과 상수는 텍스트 코드에서 쉽게 눈에 띄지 않는다는 문제점이 있다.
  • 이런 관점에서는 긴 이름이 짧은 이름보다 좋다.
  • 검색하기 쉬운 이름이 상수보다 좋다.

인코딩을 피하라

자신의 기억력을 자랑하지 마라

  • 독자가 코드를 읽으면서 변수 이름을 자신이 아는 이름으로 변환해야 한다면 그 변수 이름은 바람직하지 못하다.
  • 전문가 프로그래머는 명료함이 최고라는 사실을 이해한다.

클래스 이름

  • 클래스 이름과 객체 이름은 명사나 명사구가 적합하다.
  • 동사는 사용하지 않는다.

메서드 이름

  • 메서드 이름은 동사나 동사구가 적합하다.

기발한 이름은 피하라

  • 재미난 이름보다 명료한 이름을 선택하라.
  • 의도를 분명하고 솔직하게 표현하라.

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

  • 추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다.
  • 메서드 이름은 독자적이고 일관적이어야 한다.

말장난을 하지 마라

  • 한 단어를 두 가지 목적으로 사용하지 마라.
    • ex. add(더하기) add(추가)

해법 영역에서 가져온 이름을 사용하라

  • 코드를 읽을 사람도 프로그래머라는 사실을 명심한다.
  • 전산 용어, 알고리즘 이름, 패턴 이름, 수학 용어등을 사용해도 괜찮다.
  • 모든 이름을 문제 영역에서 가져오는 정책은 현명하지 못하다.

문제 영역에서 가져온 이름을 사용하라

  • 적절한 용어가 없다면 문제 영역에서 이름을 가져온다.
    • 보수하는 프로그래머가 분야 전문가에게 의미를 물어 파악할 수 있다.

의미 있는 맥락을 추가하라

  • 클래스, 함수, 이름 공간에 맥락을 부여한다.
  • 모든 방법이 실패하면 접두어를 붙인다.
    • addState, addFirstName

불필요한 맥락을 없애라

  • 고급 휘발유 충전소라는 애플리케이션을 짠다고 가정하자.
    • 모든 클래스 이름을 GSD로 시작하겠다는 생각은 전혀 바람직하지 못하다.
  • 일반적으로는 짧은 이름이 긴 이름보다 좋다.
    • 단, 의미가 분명한 경우에 한해서다.
    • 이름에 불필요한 맥락을 추가하지 않도록 주의한다.

'도서 > 개발' 카테고리의 다른 글

3장. 함수  (0) 2024.08.02
1장. 깨끗한 코드  (0) 2024.08.02
(후기) 자바 ORM 표준 JPA 프로그래밍  (0) 2024.08.02
(후기) 테스트 주도 개발 시작하기  (0) 2024.08.02
개발 관련 서적 후기 작성  (0) 2024.08.02