Clean Code 클린 코드 : 의미있는 이름

Yuri Lee·2021년 4월 27일
0

Clean Code 클린 코드

목록 보기
3/3

의도를 분명히 밝혀라

  • 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다. 따라서 이름을 주의깊게 살펴 더 나은 이름이 떠오르면 개선해야 한다.

그릇된 정보를 피하라

  • 프로그래머는 코드에 그릇된 단서를 남겨서는 안 된다. 그릇된 단서는 코드 의미를 흐린다. 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용해서도 안된다.

의미 있게 구분하라

 getActiveAccount();
 getActiveAccounts();
 getActiveAccountInfo();
  • 이 프로젝트에 참여한 프로그래머는 어느 함수를 호출하지 어떻게 알까?
    ➡ 실제 나는 이와 이 3개의 함수와 유사하게 이름을 작성한 적이 있다. 정말 구분할 수 없겠네...

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

private Date genymdhms;
private Date generationTimestamp;
  • generationTimestamp 를 보면 훨씬 지적인 대화가 가능해진다.

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

  • 검색하기 쉬운 이름이 상수보다 좋다.

인코딩을 피하라

  • 문재 해결에 집중하는 개발자에게 인코딩은 불필요한 정신적 부담이다.
  • 헝가리식 표기법
  • 멤버 변수 접두어
  • 인터페이스 클래스와 구현 클래스

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

  • 똑똑한 프로그래머와 전문가 프로그래머 사이에서 나타나는 차이점 하나만 들자면, 전문가 프로그래머는 명료함이 최고라는 사실을 이해한다. 전문가 프로그래머는 자신의 능력을 좋은 방향으로 사용해 남들이 이해하는 코드를 내놓는다.

클래스 이름

  • 클래스 이름, 객체 이름은 명사나 명사구가 적합하다.
  • good : Customer, WikiPage, Account, AddressParser
  • bad : Manager, Processor, Data, Info

메서드 이름

  • 동사나 동사구가 적합하다.
  • good : postPayment, deletePage, save  
  • 접근자, 변경자, 조건자는 javabean 표준에 따라 값 앞에 get, set, is를 붙인다.

기발한 이름은 피하라

  • 재미난 이름보다 명료한 이름을 선택하라.

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

  • 추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다.
  • 똑같은 메서드를 클래스마다 fetch, retrieve, get 으로 제각각 부르면 혼란스럽다.

말장난을 하지 마라

  • 한 단어를 두 가지 목적으로 사용하지 마라. 다른 개념에 같은 단어를 사용한다면 그것은 말장난에 불과하다.

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

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

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

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

의미 있는 맥락을 추가하라

  • 클래스, 함수, 이름 공간에 넣어 맥락을 부여한다.
  • 모든 방법이 실패하면 마지막 수단으로 접두어를 붙인다.

불필요한 맥락을 없애라

  • 일반적으로 짧은 이름이 긴 이름보다 좋다. 단, 의미가 분명한 경우에 한해서다. 이름에 불필요한 맥락을 추가하지 않도록 주의한다.
  • accountAddress 와 customerAddress는 Address 클래스 인스턴스로는 좋은 이름이나 클래스 이름으로 적합하다.
  • 포트 주소, Mac 주소, 웹 주소를 구분해야 한다면 PostalAddress, MAC, URL 이라는 이름 good !
profile
Step by step goes a long way ✨

0개의 댓글