클린 코드 | 02. 의미있는 이름

yeonk·2023년 1월 3일
0

클린 코드

목록 보기
2/3
post-thumbnail

분명한 의도


의도가 분명한 이름을 지으라

따로 주석이 필요하다면 의도를 제대로 드러내지 못한 것이다.

의도가 드러나는 이름을 사용하면 코드 이해와 변경이 쉬워진다.

변수, 함수, 클래스 이름은 아래 질문들에 대한 답이 될 수 있어야 한다.

  • 존재의 이유는 무엇인가

  • 수행하는 기능은 무엇인가

  • 사용 방법은 무엇인가



















그릇된 정보 피하기

그릇된 단서는 코드 의미를 흐린다.

  • 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용하지 않는다.

  • 실제 List 가 아니라면 accountList 라 명명하지 않는다.

  • 서로 흡사한 이름을 사용하지 않도록 주의한다.

  • 유사한 개념은 유사한 표기법을 사용한다. → 일관성이 떨어지는 표기법은 그릇된 정보다.










의미있게 구분하기

컴파일러나 인터프리터만 통과하려는 생각으로 코드를 구현하는 프로그래머는 문제를 일으킨다.

  • 연속된 숫자를 덧붙이거나 불용어를 추가하는 방식은 적절하지 못하다.

  • 이름이 달라야 한다면 의미도 달라져야한다.

  • 불용어를 추가한 이름은 아무런 정보를 제공하지 못한다.

    • 개념을 구분하지 않은 채 이름만 달리한 경우

    • Ex. Product, ProductInfo, ProductData

  • 읽는 사람이 차이를 알도록 이름을 지어라.



















쉬운 이름


발음하기 쉬운

  • 발음하기 어려운 이름은 토론하기도 어렵다.

  • 발음하기 쉬운 이름이 중요한 이유는 프로그래밍은 사회 활동이기 때문이다.










검색하기 쉬운

  • 문자 하나를 사용하는 이름과 상수는 텍스트 코드에서 쉽게 눈에 띄지 않는다는 문제점을 가진다.

  • 긴 이름이 짧은 이름보다 좋다.

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

  • 이름 길이는 범위 크기에 비례해야 한다.










인코딩 피하기

  • 문제 해결에 집중하는 개발자에게 인코딩은 불필요한 정신적 부담이다.

  • 인코딩한 이름은 대부분 발음하기 어려우며 오타가 생기기도 쉽다.

  • 더 이상 헝가리식 표기법과 멤버 변수 접두어는 불필요하다.










기억력을 자랑하지 마라

독자가 코드를 읽으면서 변수 이름을 자신이 아는 이름으로 변환해야 한다면 그 변수 이름은 바람직하지 못하다.

  • 문자 하나만 사용하는 변수 이름은 문제가 있다.

    • 루프에서 반복 횟수를 세는 변수는 괜찮다(전통적으로 한 글자를 사용하기 때문)










클래스, 메서드 이름

  • 클래스 이름과 객체 이름

    • 명사나 명사구가 적합

    • 동사는 사용하지 않는다.

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

  • 접근자, 변경자, 조건자는 자바빈 표준에 따라 값 앞에 get, set, is를 붙인다.

  • 생성자를 중복 정의할 때는 정적 팩토리 메서드를 사용한다.

    • 메서드는 인수를 설명하는 이름을 사용










기발한 이름은 피하기

  • 명료한 이름을 선택해라.

  • 특정 문화에서만 사용하는 농담은 피하는 편이 좋다.

  • 의도를 분명하고 솔직하게 표현하라.



















목적


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

  • 메서드 이름은 독자적이고 일관적이어야 한다.
    그래야 올바른 메서드를 선택할 수 있다.

  • 한 단어를 두 가지 목적으로 사용하지 마라.

  • 최대한 이해하기 쉽게 코드를 작성하라.



















영역 (해법 영역과 문제 영역)


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

  • 코드를 읽을 사람도 프로그래머라는 사실을 명심한다.

  • 전산 용어, 알고리즘 이름, 패턴 이름, 수학 용어 등을 사용해도 된다.

  • 모든 이름을 도메인에서 가져오는 것은 현명하지 못하다.

  • 기술 개념에는 기술 이름이 가장 적합한 선택이다.










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

  • 적절한 프로그래머 용어가 없다면 도메인에서 이름을 가져온다.

  • 해법 영역과 문제 영역(도메인)을 구분할 줄 알아야한다.



















맥락


의미 있는 맥락 추가

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










불필요한 맥락 제거

  • 의미가 분명한 경우에 한하여 짧은 이름이 긴 이름보다 좋다.

  • 이름에 불필요한 맥락을 추가하지 않도록 주의한다.




















참고자료


로버트 C.마틴, 『Clean Code』, 인사이트

0개의 댓글