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

French Marigold·2023년 10월 27일
0

클린코드

목록 보기
2/13
post-thumbnail

의도를 분명하게 밝혀라 (22p)

  • 좋은 이름을 지을 수 있도록 돕는 질문들
    • 변수, 함수, 클래스의 존재 이유를 이름을 통해 알 수 있는지
    • 변수, 함수, 클래스의 수행 기능을 이름을 통해 알 수 있는지
    • 사용 방법을 이름을 통해 알 수 있는지

그릇된 정보를 피하라 (24p)

  • 널시 쓰이는 의미가 있는 단어를 변수, 메소드, 클래스 명으로 사용하지 말라
  • 서로 흡사한 변수, 함수, 클래스 명을 사용하지 말 것

의미있게 구분하라 (25p)

  • 아무런 정보도 제공하지 못하는 이름은 사용하지 않는다. (var a, func b())
  • 읽는 사람이 차이를 알도록 이름을 지어라.
    • 클래스 MoneyAmount와 Money는 구분이 안 된다. 사용하지 말아라.
    • 변수 customerInfo와 customer 역시 구분이 안 된다. 사용하지 말아라. 차이를 두어야 한다.

발음하기 쉬운 이름을 사용하라 (27p)

검색하기 쉬운 이름을 사용하라 (28p)

인코딩을 피하라 (29p)

자신의 기억력을 자랑하지 마라 (31p)

  • 반복문에서 i,j,k 정도는 사용해도 괜찮다. (l은 절대 안 된다.)
    • 단, 루프 범위가 아주 작고, 다른 이름과 충돌하지 않을 때만이다.
  • 전문가 프로그래머는 명료함이 최고라는 사실을 이해한다. 그래서 남들이 이해할 수 있는 코드를 내놓는다.

클래스 이름 (32p)

  • 클래스 이름은 명사나 명사구가 적합하다
    • Customer, WikiPage, Account 등이 좋은 예다
    • Manager, Processor, Data, Info 등은 나쁜 예다

메소드 이름 (32p)

  • 메소드 이름은 동사나 동사구가 적합하다.
    • postPayment(), deletePage(), save() 등이 좋은 예다
    • get, set, is 를 앞에 사용하는 것도 좋은 방법
      • getName(), setTableService(), isPosted()

기발한 이름은 피하라 (33p)

  • 이름의 분명하게 표현하라. 누가 봐도 알 수 있는 단어로 표현하라.

한 개념에 한 단어를 사용하라 (33p)

  • 일관성 있는 어휘를 사용해야 한다.
    • 예를 들어 네트워크를 가져오는 코드라 하면 모든 네트워크 가져오는 코드를 fetch~()로 통일시켜야 한다.
    • 어떤 클래스에서는 get~()으로 네트워크를 가져오고 어떤 클래스에서는 fetch~()으로 네트워크를 가져와서는 안 된다. 일관성 있게 어휘를 맞추어야 한다.

말장난 금지 (34p)

  • 프로그래머는 코드를 최대한 이해하기 쉽게 짜야 한다.
  • 집중적인 탐구가 필요한 코드가 아니라 대충 훑어봐도 이해할 코드 작성이 목표다.

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

  • 해법 영역과 관련이 깊은 코드라면 해법 영역에서 가져온 이름을 사용하라 (Stack, Queue, Visitor 등)
    • 전산 용어, 알고리즘 이름, 패턴 이름, 수학 용어 등을 사용해도 괜찮다.

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

  • 문제 영역과 관련이 깊은 코드라면 문제 영역에서 가져온 이름을 사용하라.

의미 있는 맥락을 추구하라 (35p)

  • 클래스, 메소드, 변수에 맥락을 부여해야 한다.
    • 예를 들어 firstName, lastName, street, city, state, zipCode라는 변수가 있다고 하자. 주소라는 사실을 금방 알아챌 수 있다. 하지만 어느 메소드가 state라는 변수 하나만 사용한다면? 변수 state가 주소 일부라는 사실을 금방 알아챌까?
    • 이런 경우 앞에 접두어 address를 추가함으로 addressState라 쓰면 맥락이 더 분명해진다.
    • 혹은 Address라는 클래스를 생성하면 훨씬 좋다. 그러면 변수가 Address라는 더 큰 개념에 속한다는 사실이 컴파일러에게도 분명해진다.
  • 맥락을 분명하게 하는 방법은 객체를 관리하는 클래스를 생성하고 그 내부에 클래스와 관련 있는 행동을 하는 변수나 메소드를 집어넣으면 된다.

불필요한 맥락을 없애라 (37p)

profile
꽃말 == 반드시 오고야 말 행복

0개의 댓글