본문 바로가기

clean code

[클린코드] CHAP 02 의미 있는 이름

728x90
반응형

CHAPTER 02 의미 있는 이름

의도를 분명히 밝혀라

  • 의도가 드러나는 이름을 사용한다.
  • 코드는 단순하게, 하지만 함축하지 않는다.
  • 명시적 함수를 사용하여 상수를 감춘다.
public List<Cell> getFlaggedCells() {
    List<Cell> flaggedCells = new ArrayList<Cell>();
    for (Cell cell : gameBoard) {
        if (cell.isFlagged()) {
            flaggedCells.add(cell);
        }
    return flaggedCells;
}

그릇된 정보를 피하라

  • 대부분의 개발자들은 클래스가 제공하는 메서드 목록을 살펴보지 않은채 이름만 보고 객체를 선택한다. → 이름만 보고 선택했을 때 문제가 없도록 이름을 정하도록 한다.

의미 있게 구분하라

  • 이름이 의미없이 자료형을 붙이다던가 하는 noise word 는 지양한다.

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

  • 코드를 대상으로 대화하기 쉽도록 발음하기 쉬운 이름을 사용한다.

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

  • 쉽게 중복되지 않는 검색하기 쉬운 이름을 사용한다.
  • ex ) MAX_CLASSES_PER_STUDENT

인코딩을 피하라

  • 줄여쓰지 않는다. 풀네임으로 쓴다.

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

  • 명료함이 최고다.

클래스 이름

  • 명사, 명사구를 사용한다.
  • Parscal Casing Naming Rule 사용한다.

메서드 이름

  • 동사, 동사구를 사용한다.
  • Camel Casing Naming Rule 사용한다.

기발한 이름은 피하라

  • 명료함이 최고다. 반복.
  • 특정 문화에서만 사용하는 농담을 하지 않는다.
  • 의도는 분명하고 솔직하게.

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

  • 추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다. → 네이밍에 동일한 패턴을 적용

말장난을 하지 마라

  • 한 단어를 두 가지 목적으로 사용하지 마라.
  • 일관성을 고집하기 위해 다른 개념에 같은 단어를 사용하면 안된다.

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

  • 프로그래머에 익숙한 기술 개념에는 기술 이름이 가장 적합하다. → 타겟은 프로그래머다.

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

  • 적절한 프로그래머 용어가 없다면 문제 영역에서 이름을 가져온다.
  • 해법영역과 문제영역?

의미 있는 맥락을 추가하라

  • 어떤 변수가 어떤 메서드의 일부인지 알아 챌 수 있도록 이름을 정한다.

불필요한 맥락을 없애라

  • 클래스 이름으로 적절한 이름과 클래스 인스턴스로 적절한 이름을 구분한다.

Package Naming Guide

All lower case, no underscores

com.example.deepscore

Class Naming Guide

UpperCamelCase

Method Naming Guide

LowerCamelCase

  • jUnit 테스트에 underscore 사용되기도 함
  • _패턴

pop_emptyStack

728x90
반응형