이펙티브 코틀린(효율성)아이템 49: 하나 이상의 처리 단계를 가진 경우에는 시퀀스를 사용하라Iterable 과 Sequence 는 완전히 다른 목적으로 설계되어서 완전히 다른 형태로 동작한다Sequence 는 지연 처리 된다
시퀀스 지연처리의 장점
자연스러운 처리 ...
이펙티브 코틀린(효율성)아이템 48: 더 이상 사용하지 않는 객체의 레퍼런스를 제거하라상태를 유지할 때는 메모리 관리를 염두에 두어야 한다는 것
코드를 작성할때는 메모리와 성능 뿐 아니라 가독성과 확장성을 항상 고려해야 한다일반적으로는 가독성과 확장성이 더욱 중요하지만 ...
이펙티브 코틀린(효율성)아이템 47: 인라인 클래스의 사용을 고려하라inline 으로 만들수 있는것은 함수뿐만 아니다 하나의 값을 보유하는 객체도 inline 으로 만들수 있다
inline 클래스는 아래 상황에 많이 쓰인다
측정 단위를 표현할때
타입 오용으로 발생하는 ...
이펙티브 코틀린(효율성)아이템 46: 함수 타입 파라미터를 갖는 함수에 inline 한정자를 붙여라inline 한정자의 역활은 컴파일 시점에 함수를 호출하는 부분을 함수의 본문으로 대체하는것
inline 한정자의 장점
타입 아규먼트에 reified 한정자를 붙여서 사 ...
이펙티브 코틀린(효율성)오늘날에는 코드 효율성을 관대 하게 바라본다 개발자가 비싸지고 메모리는 싸졌기 때문이다장기적으로 효율성은 중요하다
아이템 45: 불필요한 객체 생성을 피하라객체 생성에는 언제나 비용이 든다
객체를 wrap 하면 크게 3가지 비용이든다
객체는 더 ...
이펙티브 코틀린(클래스설계)아이템 44: 멤버 확장 함수의 사용을 피하라확장함수는 첫 번째 아규먼트로 리시버를 받는 단순한 일반 함수로 컴파일된다
맴버 확장을 피해야 하는 이유
레퍼런스를 지원하지 않는다
암묵적으로 접근할때 두 리시버중에 어떤 리시버를 선택할지 혼동된 ...
이펙티브 코틀린(클래스설계)아이템 43: API의 필수적이지 않는 부분을 확장 함수로 추출하라클래스 메서드를 정의할때 멤버로 정의할 것인지 확장 함수로 정의할 것인지 결정해야 된다
맴버와 확장 방식의 차이점
따로 가져와서 사용해야 된다 일반적으로 확장은 다른 패키지에 ...