엘레강트 오브젝트

  • 이 책 너무 극단적인 표현들이 많지만, 배울 점도 제법 많다.
  • 저자의 입장에서 한 번 읽어보고, 장점만 배우자.

1. 출생

1.1 -er로 끝나는 이름을 사용하지 마세요

  • 객체와 클래스의 차이점
    • 클래스는 객체의 팩토리
    • 클래스는 객체를 만들고, 추적하고, 적절한 시점에 제거
    • 종종 클래스를 객체의 템플릿으로 오해
    • 클래스를 객체의 능동적 관리자로 생각해야 함
    • 클래스가 객체를 인스턴스화한다
    • 클래스를 객체의 storage unit 또는 warehouse 라고 봐야함

1.2 생성자 하나를 주 생성자로 만드세요

  • one primary, many secondary
  • method overloading 의 중요성

    class Cash {
    private int dollors;
    
    Cash(float dir) {
        this((int) dlr);
    }
    
    Cash(float dir) {
        this(Cache.parse(dlr));
    }
    
    Cash(int dlr) {
        this.dollors = dlr;
    }
    }
    

2.7 문서를 작성하는 대신 테스트를 만드세요

  • 나쁜 프로그래머는 복잡한 코드를 짜고, 반대는 단순한 코드를 짠다
  • 코드는 스스로를 설명하기 때문에, 어떤 추가 문서도 불필요하다
  • 좋은 클래스는 목적이 명확하고, 작고, 설계가 우아하다.

    class WebPage {
        fun content(): String {..}
        fun update(content: String) {..}
    }
    
  • 문서화 대신 코들을 깔끔하게 만들자

  • “깔끔하게 = 단위테스트도 만들고”

  • 단위 테스트도 클래스의 일부로 취급한다

  • 단위테스트가 바로 문서화이다

2.8 mock 대신 fake를 사용하세요

  • fake 로 테스트를 구현하면 코드가 코드가 간결해진다.
  • 유지보수성이 눈에 띄게 향상된다.
comments powered by Disqus