[KOTLIN] 멤버 확장 함수의 사용을 피하라 (이펙티브 코틀린)

2022. 7. 27. 21:44·KOTLIN
728x90

멤버 확장 함수의 사용을 피하라 

  • 어떤 클래스에 대한 확장함수를 정의할 때 이를 멤버로 추가하는 것은 좋지 않음
  • 암묵적 접근을 할 때 두 리시버 중에서 어떤 리시버가 선택될지 혼란스러움
class A {
	val a = 10
}

class B {
	val a = 20
	val b = 30

	fun A.test() = a + b // 40일까? 50일까?
}

fun main() {    
	B().apply { println(A().test()) } // 정답 : 40
}
  • 확장함수가 외부에 있는 다른 클래스를 리시버로 받을 경우, 해당 함수가 어떻게 동작하는지 애매모호하게 됨
class A {
	var state = 10
}

class B {
	var state = 20

	fun A.update() = state + 10  // A와 B중에서 어떤 것을 업데이트 할까요?
}

fun main() { 
	B().apply { println(A().update()) } // 정답 : 20 (A를 업데이트 한다)
}
  • 어떤 것이 업데이트 되는지 파악하기 힘듬, 일반적으로 멤버 확장함수 사용하는 것은 피하는 것이 좋고, 단점을 명확하게 인지하는 것이 중요
  • 가시성을 제한하려면 멤버로 만들지 말고 가시성과 관련된 한정자를 사용하는 것이 좋음
저작자표시

'KOTLIN' 카테고리의 다른 글

[KOTLIN] 불필요한 객체 생성을 피하라  (0) 2022.08.03
[KOTLIN] SEALED CLASS  (0) 2022.07.27
[KOTLIN] 복잡한 객체를 생성하기 위한 DSL을 정의하라 (이펙티브 코틀린)  (0) 2022.07.20
[KOTLIN] 일반적인 프로퍼티 패턴은 프로퍼티 위임으로 만들어라 (이펙티브 코틀린)  (0) 2022.07.13
[KOTLIN] 제네릭 타입과 VARIANCE 한정자를 활용하라 (이펙티브 코틀린)  (0) 2022.07.10
'KOTLIN' 카테고리의 다른 글
  • [KOTLIN] 불필요한 객체 생성을 피하라
  • [KOTLIN] SEALED CLASS
  • [KOTLIN] 복잡한 객체를 생성하기 위한 DSL을 정의하라 (이펙티브 코틀린)
  • [KOTLIN] 일반적인 프로퍼티 패턴은 프로퍼티 위임으로 만들어라 (이펙티브 코틀린)
집한구석
집한구석
  • 집한구석
    tgyun615.info
  • 전체
    오늘
    어제
    • 카테고리 (183)
      • JAVA (38)
      • SPRING (15)
      • KOTLIN (23)
      • NETTY (1)
      • DEVOPS (3)
      • DOCKER (7)
      • KUBERNETES (2)
      • JAVASCRIPT (1)
      • SPLUNK (3)
      • ELK (7)
      • KAFKA (2)
      • GO (4)
      • ALGORITHM & DATA STRUCTURE (9)
      • IDE (5)
      • OS (16)
      • NETWORK (14)
      • GCP (2)
      • AWS (2)
      • DATABASE (10)
      • CLEANCODE (7)
      • OTHER (12)
  • 최근 글

  • 태그

    SQL
    자바
    ElasticSearch
    프로그래머스
    Kafka
    Spring
    docker
    JPA
    엘라스틱서치
    코틀린
    AWS
    cleancode
    java
    go
    이펙티브 코틀린
    IntelliJ
    splunk
    Elk
    이펙티브코틀린
    클린코드
  • 링크

    • github
    • linkedin
    • resume
  • hELLO· Designed By 정상우. v4.10.3
집한구석
[KOTLIN] 멤버 확장 함수의 사용을 피하라 (이펙티브 코틀린)
상단으로

티스토리툴바