Untitled

-er로 끝나는 이름을 사용하지 마세요. - 클래스 이름 짓기

클래스는 객체의 팩토리(factory)이다.

클래스는 객체를 만들고, 추적하고, 적절한 시점에 파괴한다.

즉, 객체의 라이프사이클을 관리 한다.

종종 클래스를 객체의 템플릿으로 설명하지만, 이 설명은 완전히 잘못된 설명이다.

이런 식의 설명은 수동적이고, 멍청한 코드 덩어리로 클래스를 격하 시킨다.

클래스는 객체의 능동적인 관리자.

즉, 객체를 꺼내거나 반환할 수 있는 역할이기 때문에 저장소(storage) 또는 웨어하우스 라고 불러야 한다.

사실 객체를 살아있는 생명체로 생각한다면 클래스는 객체의 어머니 라고 할 수 있다.

이 은유가 가장 정확한 표현이다.

클래스 이름을 짓는 방식

무엇을 하는지(what he does)

잘못된 방식이지만 매우 인기가 많은 방식

public class CashFormatter {
    private int dollars;

    public CashFormatter(int dollars) {
        this.dollars = dollars;
    }

    public String format() {
        return String.format("$ %d", this.dollars);
    }
}

무엇인지(what he is)

객체는 그의 역량(capability)으로 특징지어야 한다.

public class Cash {
    private int dollars;

    public Cash(int dollars) {
        this.dollars = dollars;
    }

    public String usd() {
        return String.format("$ %d", this.dollars);
    }
}