아이템 45: 불필요한 객체 생성을 피하라

이펙티브 코틀린(효율성)

오늘날에는 코드 효율성을 관대 하게 바라본다 개발자가 비싸지고 메모리는 싸졌기 때문이다
장기적으로 효율성은 중요하다

아이템 45: 불필요한 객체 생성을 피하라

객체 생성에는 언제나 비용이 든다

객체를 wrap 하면 크게 3가지 비용이든다

  • 객체는 더 많은 용량을 차지한다
  • 요소가 캡슐화 되어 있다면 접근에 추가적인 함수 호출이 필요하다
  • 객체는 생성되어야 한다

객체선언(싱글톤)

매순간 객체를 생성하지 않고 객체를 재사용하는 간단한 방법
mutable 객체는 캐시하지 않는 규칙을 지키는게 좋다

캐시를 활용하는 팩토리 함수

일반적은 객체는 생성자를 사용해서 만든다 하지만 팩토리 메서드를 사용해서 만드는 경우도 있다 팩토리 함수는 캐시를 가질수도 있다

  • WeakReference : 가비지 컬렉터가 값을 정리하는 것을 막지 않는다
  • SoftReference : 가비지 컬렉터가 값을 정리할 수도 있고, 정리하지 않을 수도 있다

무거운 객체를 외부 스코프로 보내기

성능을 위한 굉장히 유용한 트릭 무거운 객체를 외부 스코프로 보내는 방식

지연초기화

무서운 클래스 생성은 지연되게 만드는게 좋을때도 있다

기본 자료형 사용하기

두가지 상황에서 기본 자료형을 랩한 자료형이 사용된다

  • nullable 타입을 연산할떄
  • 타입을 제네릭으로 사용할때

참조